Разработать схему алгоритма, составить C++ Builder-проект (оконный и консольный вид) вычисления таблицы значений функции: y(x,a,b). Аргумент X принимает N значений от Xn с шагом Dx, а параметр А принимает значения от An до Аk с шагом Da. Параметр B принимает значение, численно равное корню нелинейного уравнения, вычисленного на интервале c = 0 и d = 8 с заданной погрешностью ɛ=10−3÷10−6. (Табулирование функции и нахождение корня нелинейного уравнения методом дихотомии (половинного деления) в C++ Builder (оконное и консольное приложения))
Решение:
Вся работа выполнена в соответствии с требованиями Кошельковой ЛВ. Прилагаю отчёт, код программы, все скриншоты, проверки и блок-схемы.
Предпросмотр отчёта:
Московский авиационный институт
(национальный исследовательский университет)
Разработка алгоритмов и программ решения
алгебраических задач численными методами
по дисциплине «Информатика»
студент группы М4О-103Б-17
преподаватель кафедры 403
Таблица значений 1С 8.3
Оглавление
- Условие задачи
- Анализ задания
- Теоретические сведения
- Схемы алгоритмов
- Описание C++ Builder-программы
- Текст программы
- Пример выполнения программы
- Консольное приложение
- Набор тестов
- Выводы
- Список использованной литературы
1. Условие задачи
Разработать схему алгоритма, составить C++ Builder-проект вычисления таблицы значений функции:
Аргумент X принимает N значений от Xn с шагом Dx, а параметр А принимает значения от An до Аk с шагом Da. Параметр B принимает значение, численно равное корню нелинейного уравнения:
вычисленного на интервале c = 0 и d = 8 с заданной погрешностью ε = 10 -3 ÷ 10 -6 .
2. Анализ задания
- Xn – начальное значение аргумента, тип – с плавающей точкой;
- Dx – шаг изменения аргумента, тип – с плавающей точкой;
- N – число значений аргумента, тип – целый;
- An – начальное значение параметра A, тип – с плавающей точкой;
- Ak – конечное значение параметра A, тип – с плавающей точкой;
- Da – шаг изменения параметра A, тип – с плавающей точкой;
- C, D – интервал изоляции, тип – с плавающей точкой;
- Eps – погрешность вычисления корня нелинейного уравнения, тип – с плавающей точкой;
- Km — максимальное количество итераций, тип – целый;
- Mx – массив (одномерный) значений аргумента X, тип – с плавающей точкой;
- My – массив (двумерный) значений функции Y, тип – с плавающей точкой;
- Ma – массив (одномерный) значений параметра A, тип – с плавающей точкой;
- B – численное значение корня нелинейного уравнения, тип – с плавающей точкой;
- Zt – Погрешность вычисления корня по невязке, тип – с плавающей точкой
- Er – массив (двумерный) признака ошибки при вычислении функции, тип – целый;
- Equat() – признак ошибки при вычислении корня нелинейного уравнения, тип – bool.
В алгоритме выполняются следующие функции:
Таблица значений функции и ее график. 7 класс.
- Ввод исходных данных;
- Вычисление корня нелинейного уравнения;
- Вычисление таблицы значений функции;
- Проверка значения подкоренного выражения и формирование признака ошибки, если оно имеет отрицательный знак;
- Вывод результатов вычислений.
3. Теоретические сведения
Метод дихотомии
Метод половинного деления, или иначе метод дихотомии. Метод дихотомии получил свое название от древнегреческого слова διχοτομία, что в переводе означает деление надвое. Его мы используем довольно часто. Допустим, играя в игру «Угадай число», где один игрок загадывает число от 1 до 100, а другой пытается его отгадать, руководствуясь подсказками «больше» или «меньше».
Логично предположить, что первым числом будет названо 50, а вторым, в случае если оно меньше — 25, если больше — 75. Таким образом, на каждом этапе неопределенность неизвестного x3 x1 x2 X Y y=f(x) уменьшается в 2 раза. Т.е. даже самый невезучий в мире человек отгадает загаданное число в данном диапазоне за 7 предположений вместо 100 случайных утверждений.
Алгоритм метода половинного деления основан на теореме Больцано — Коши о промежуточных значениях непрерывной функции и следствии из неё.
Теорема Больцано — Коши: если непрерывная функция принимает два значения, то она принимает любое значение между ними.
Следствие (теорема о нуле непрерывной функции): если непрерывная функция принимает на концах отрезка положительное и отрицательное значения, то существует точка, в которой она равна 0.
- Задать отрезок [a,b] и погрешность e.
- Вычислить c=(a+b)/2
- Определить интервал дальнейшего поиска: если f(a) и f(c) имеют разные знаки, т.е. f(a)*f(c)
- Если длина нового отрезка |b-a|
4. Схемы алгоритмов
В соответствии с принципами структурного программирования каждый функционально законченный фрагмент программы оформлен в виде подпрограммы. В результате программа включает главную программу и набор подпрограмм, предназначенных соответственно для табулирования функции (Tab), вычисления корня нелинейного уравнения (Equat), вывода результатов выполнения программы (RezOut).
Схема алгоритма главной программы представлена на рис. 1, а таблица обозначения переменных главной программы – в табл. 1.
Главная программа начинается с ввода значений входных данных.
Xn | xn | Начальное значение аргумента, тип – с плавающей точкой |
Dx | dx | Шаг изменения аргумента, тип – с плавающей точкой |
N | n | Число значений аргумента, тип – целый |
An | an | Начальное значение параметра A, тип – с плавающей точкой |
Ak | ak | Конечное значение параметра A, тип – с плавающей точкой |
Da | da | Шаг изменения параметра A, тип – с плавающей точкой |
C, D | c, d | Интервал изоляции, тип – с плавающей точкой |
eps | Погрешность вычисления корня нелинейного уравнения, тип – с плавающей точкой | |
km | Максимальное количество итераций, тип – целый | |
Mx | Массив значений аргумента X, тип – с плавающей точкой | |
My | Массив значений функции Y, тип – с плавающей точкой | |
Ma | Массив значений параметра A, тип – с плавающей точкой | |
B | b | Параметр функции, тип – с плавающей точкой |
Zt | zt | Погрешность вычисления корня по невязке, тип – с плавающей точкой |
Er | Массив признака ошибки при вычислении функции, тип – целый | |
Equat() | Признак ошибки при вычислении определённого интеграла, тип – целый | |
X | x | Аргумент, тип – с плавающей точкой |
Y | y | Функция, тип – с плавающей точкой |
m | Количество значений параметра A, тип – целый | |
i, j | Счётчики числа повторений циклов, тип – целый |
Рис. 1. Схема алгоритма главной программы
Вычисление значения корня уравнения производится путём обращения к ПФ Equat, возвращающей также признак ошибки в случае, если значение корня уравнения не найдено за предельно допустимое число итераций Km. При этом выводится диагностическое сообщение «Решение н найдено за Km итераций», иначе происходит табулирование функции (ПП Tab) и вывод результатов выполнения программы (ПП RezOut). Значение m определяет количество значений параметра A.
Схемы алгоритмов подпрограмм, используемых в данной программе, с указанием их назначения и списков формальных параметров приведены на рис. 2 – 5.
Подпрограмма-функция F (рис. 2) предназначена для вычисления значения функции уравнения, представляет собой один оператор присваивания и используется в ПП вычисления значения корня уравнения Equat.
Рис. 2. Схема алгоритма подпрограммы-функции F
Подпрограмма-функция F предназначена для вычисления значения функции F.
Список формальных параметров: X.
x – аргумент функции, тип – с плавающей точкой.
Подпрограмма-процедура табулирования Tab (рис. 4), выполненная в виде двойного цикла, определяет функциональную зависимость вида y = f(a,x) при различных значениях параметров, поэтому внутренний цикл должен быть связан с изменением аргумента X, а внешний – с изменением параметра A. Во внутреннем цикле имеются две развилки: одна из них обусловлена тем, что функция задаётся разными формулами на разных участках изменения аргумента (проверка условия X < 1), вторая – проверяет знак подкоренного выражения и при условии A*X+B 2 >0 вычисляет значение функции, в противном случае – формирует признак ошибки Er[I][J] = 1.
Подпрограмма-процедура RezOut (рис. 5) выводит результаты выполнения программы. По структуре она построена аналогично подпрограмме Tab: представляет собой двойной цикл арифметического типа, но в отличие от ПП Tab она получает количество значений параметра A в качестве входных данных.
Рис. 3. Схема алгоритма подпрограммы-функции Equat
Подпрограмма-функция Equat предназначена для вычисления значения корня нелинейного уравнения с заданной погрешностью методом половинного деления.
Список формальных параметров: c, d, eps, km, b, zt.
c, d – интервал изоляции, тип – с плавающей точкой;
eps – погрешность вычисления корня уравнения, тип – с плавающей точкой;
km – предельно допустимое количество итераций, тип – целый.
b – значение корня нелинейного уравнения, тип – с плавающей точкой;
zt – погрешность вычисления корня по невязке, тип – с плавающей точкой;
Equat() – признак ошибки, тип – bool.
Рис. 4. Схема алгоритма подпрограммы-процедуры Tab
Подпрограмма-процедура Tab предназначена для вычисления таблицы значений функции Y.
Список формальных параметров: an, ak, da, xn, dx, n, b, er, Mx, My, Ma.
an – начальное значение параметра A, тип – с плавающей точкой;
ak – конечное значение параметра A, тип – с плавающей точкой;
da – шаг изменения параметра A, тип – с плавающей точкой;
xn – начальное значение аргумента, тип – с плавающей точкой;
dx – шаг изменения аргумента, тип – с плавающей точкой;
n – количество значений аргумента, тип – целый;
b – параметр функции, тип – с плавающей точкой.
Er – массив признака ошибки, тип – целый;
Mx – массив значений аргумента X, тип – с плавающей точкой;
My – массив значений функции Y, тип – с плавающей точкой;
Ma – массив значений параметра A, тип – с плавающей точкой;
Рис. 5. Схема алгоритма подпрограммы-процедуры RezOut
Подпрограмма-процедура RezOut предназначена для вывода результатов выполнения программы на внешние носители информации.
Список формальных параметров: Mx, My, Ma, Er, n, m.
Mx – массив значений аргумента X, тип – с плавающей точкой;
My – массив значений функции Y, тип – с плавающей точкой;
Ma – массив значений параметра A, тип – с плавающей точкой;
Er – массив признака ошибки, тип – целый;
n – количество значений аргумента, тип – целый;
m – количество значений параметра A, тип — целый.
5. Описание C++ Builder-программы
Рис. 6. Форма C++ Builder-приложения (структура проекта)
Разработка приложения в визуальной среде программирования C++ Builder включает два этапа:
- разработка интерфейса приложения;
- определение функциональности приложения, т.е. написание кода.
Интерфейс определяет способ взаимодействия пользователя и приложения, т.е. внешний вид формы при выполнении приложения и то, каким образом пользователь управляет приложением.
Разработка интерфейса состоит в создании главного окна, т.е. в расположении на форме необходимых компонентов редактирования, отображения и управления. Внешний вид формы для задачи табулирования функции представлен на рисунке 6. На форме расположены следующие визуальные компоненты: Label, Edit, Button, StringGrid, Chart, Image.
Функциональность приложения определяется процедурами, которые выполняются при возникновении определенных событий. Структура C++ Builder-проекта соответствует рассмотренным в предыдущем разделе схемам алгоритмов, но дополнительно включает процедуры или функции преобразования данных символьного типа в арифметические при вводе и обратного преобразования арифметических данных в строковые – при выводе. Текст модуля формы представлен в следующем пункте.
Обработчик кнопки «Выполнить» по событию OnClick реализует процедуры (Equat, Tab, RezOut), необходимые для выполнения задачи. Обработчик включает в себя: функции преобразования входных данных типа String, полученных из компонентов Edit, в числа с плавающей точкой типа double или целые числа типа int; вызов процедур Equat, Tab, RezOut; заполнение таблицы StringGrid – вывод данных; функции преобразования выходных данных типа double (значения корня уравнения и невязки) в данные типа String для вывода в компоненты Edit; вывод сообщений об ошибках, если они присутствуют; вывод графика с использованием компонента Chart.
Обработчик кнопки «Очистить» по событию OnClick включает в себя: очистку компонентов Edit, используемых для получения входных (выходных – для значения корня уравнения и невязки) данных, очистку серий компонента Chart, очистку компонента StringGrid в цикле.
Обработчик кнопки «Закрыть» по событию OnClick включает в себя метод Close, обеспечивающий закрытие приложения.
6. Текст программы
Код модуля UnitRGR.cpp:
Источник: 4stu.ru
Решение в редакторе Excel Visual Basic
Вычислить суммы рядов, используя зависимость последующего члена от предыдущего (а не общую формулу слагаемого), с точностью ε=0,001 и сравнить полученный результат с точным значением, определяемым по формуле для левой части выражения. Значения аргумента х может быть любым в заданном диапазоне.
Решение в редакторе Excel Visual Basic
(Запись макроса в виде отдельной процедуры):
Зависимость последующего члена от предыдущего:
Sub rekkurent 3()
x = Val(InputBox(«Введите x», «Ввод x»)) ‘Ввод данных в диалоговом окне
a = -a * x ^ 2 * (2 * n — 1) / (2 * n + 1)
MsgBox «Atn(x)=» 5) As Double ‘двумерный массив чисел двойной точности, первый аргумент представляет строки, второй – столбцы.
Как при описании других переменных, если тип данных при описании массива не задается, подразумевается, что элементы массива имеют тип Variant. Первая строка приведенного выше примера объявляет массив из 10 целых чисел, причем по умолчанию первый элемент массива будет А(0), последний А(9). В этом случае говорят, что 0 — это базовый индекс.
Можно изменить базовый индекс массива, если в начале программы (на уровне модуля) поставить оператор Option Base 1. После этого индексы массивов А и В из нашего примера будут начинаться с единицы.
Другим способом изменения базового индекса является использование ключевого слова То при объявлении массива.
Dim A(1 To 10) As Integer
Dim X(1 To 4; 2 To 5) As Double
Одномерные массивы
Пример 1:
Дана последовательность чисел а=i>, , n=10
Подсчитать количество и произведение отрицательных элементов массива, вычислить среднеарифметическое положительных элементов. Результат вывести в диалоговом окне.
Решение в редакторе Microsoft Visual Basic
(Запись макроса в виде отдельной процедуры):
1. Откройте свой пользовательский файл, переименуйте лист в Массив1.
2. Введите в ячейки А1:А10 на листе Массив1 целочисленные элементы массива.
3. Перейдите в редактор Microsoft Visual Basic и наберите программу.
Dim a(1 To 10) As Integer
a(i) = Worksheets(«Массив1»).Cells(i, 1).Value
k = 0 ‘счетчик положительных элементов
m = 0 ‘счетчик отрицательных элементов
S = 0 ‘начальное значение суммы
p = 1 ‘начальное значение произведения
If a(i) > 0 Then S = S + a(i): k = k + 1
Sr = S / k ‘расчет среднеарифметической суммы положительных элементов
MsgBox «Количество отрицательных элементов m=» Произведение отрицательных элементов p=» Среднеарифм. сумма положительных элементов Sr=» Матрица2″).Cells(i, j).Value
Next j
If a(i, j) >= Max Then Max = a(i, j)
В приведенном выше примере индексы элементов матрицы совпадают с номерами строк и столбцов в таблице.
Пример 2:
Найти сумму элементов на главной диагонали. Результат вывести на лист Матрица2.
Решение в редакторе Microsoft Visual Basic:
1. Откройте свой пользовательский файл, перейдите в лист Матрица2.
2. Введите в ячейки А5:С7 на листе Матрица2 элементы массива.
3. Перейдите в редактор Microsoft Visual Basic и наберите программу.
Dim a(1 To 3, 1 To 3) As Variant
i1 = 5 ‘номер строки для чтения текущего значения матрицы
j1 = 1 ‘номер столбца для чтения текущего значения матрицы
a(i, j) = Worksheets(«Матрица2»).Cells(i1, j1).Value
Next j
s = s + a(i, i) ‘расчет суммы элементов по главной диагонали
В примере 2 индексы элементов матрицы не совпадают с номерами строк и столбцов в таблице.
Контрольная работа № 1
«Программирование в среде Excel Visual Basic»
Каждому студенту предлагаются задания по рассмотренным разделам курса, причем последняя цифра в номере варианта должна совпадать с последней цифрой шифра студента. Например, студент, имеющий шифр 101023, решает вариант № 3 контрольной работы.
Составить линейную программу для вычисления значения функции при заданных параметрах. Ввод данных осуществить в программе, вывод результата в диалоговом окне.
1. , где , x=3.75, y=-2.3, r=41.2*10 -2
2. , где m=0.7, F=7.7, t=5.1, c=3*10 -4
3. , где m=1.6, g=9.8, c=0.17
4. , где y=5.1, a=6.27, c=7*10 5 , b=1.5
5. , где m=0.7, r=25, γ=6.67
6. , где m=5.96*10 6 , a=70, δ=2, γ=10 -4
7. , где a=5.6, u=7.4,c=10 4 , b=8.76
8. , где w=2, m=0.5, v=1.1, z=50
9. , где l=5.1, m=0.85, g=9.8, k=7.6
10. , где R=1.01, m=0.3, w=6, g=9.8
Составить разветвляющуюся программу при любых значениях параметров. Ввод данных и вывод результата выполнить в диалоговом окне.
Составить программу вычисления по рекуррентным формулам без использования массивов.
Составить программу вычисления и вывода на рабочий лист «Лист4» таблицы значений функций двух переменных.
Вычислить суммы рядов, используя зависимость последующего члена от предыдущего (а не общую формулу слагаемого), с точностью е=0,001 и сравнить полученный результат с точным значением, определяемым по формуле для левой части выражения. Значения аргумента х может быть любым в заданном диапазоне.
Используя эти последовательности, вычислить соответствующие величины. Символами Π и Σ обозначены произведения и суммы всех элементов соответствующих последовательностей.
Дана следующая матрица:
1. Определить количество положительных и отрицательных элементов в каждом столбце.
2. Вычислить произведения положительных и сумму отрицательных элементов каждой строки.
3. Вычислить суммы положительных и произведения отрицательных элементов каждого столбца.
4. Вычислить произведения положительных и отрицательных элементов каждой строки.
5. Вычислить суммы положительных и отрицательных элементов каждого столбца.
6. Определить количество положительных и отрицательных элементов в каждой строке.
7. Вычислить произведения положительных и суммы отрицательных элементов каждого столбца.
8. Вычислить суммы положительных и произведения отрицательных элементов каждой строки.
9. Вычислить суммы положительных и отрицательных элементов каждого столбца.
10. Вычислить произведения положительных и отрицательных элементов каждой строки.
Библиографический список
1. Создание макросов и диалогов в Excel: Метод. указания / КГТУ; Сост.: С. А. Понкратова, А. С. Сироткин и др. Казань,2001. – 28 с.
2. Программирование в среде Excel: Метод. указания / КГТУ; Сост.: С. А. Понкратова, А. С. Сироткин и др. Казань,2001. – 48 с
3. Безручко В.Т. Практикум по курсу «Информатика». Работа в Windows, Word, Excel: Учебное пособие. – М.: Финансы и статистика, 2002. — 272 с.: ил.
4. Информатика: Учебник/ Под ред. Проф. Н.В. Макаровой. – М.: Финансы и статистика, 1997. – 768 с.: ил.
5. Информатика: Практикум по технологии работы на компьютере/ Под ред. Н.В. Макаровой. – 3-е изд., перераб. – М.: Финансы и статистика, 2001. – 256 с.: ил
6. Информатика: Базовый курс/ С. В. Симонович и др. – СПб.: Питер, 2001. – 640 с.: ил
7. Excel 2000: Метод. указ. / КГТУ; Сост. А. В. Аксянова, Ю. П. Александровская и др. – Казань, 2001. –48 с.
Содержание
1. Работа с табличным процессором Microsoft Excel. 3
1.1. Основные понятия Microsoft Excel 4
1.2. Формат ячеек таблицы_ 5
1.3. Автозаполнение числами_ 5
1.4. Присвоение имён ячейкам таблицы_ 6
1.4.1. Особенности присвоения имён_ 6
1.5. Вычисления в электронной таблице Microsoft Excel 7
1.6. Использование стандартных функций_ 7
1.7. Построение диаграмм_ 7
1.6. Процедура Подбор параметра_ 11
1.7. Матричные операции_ 12
1.8. Решение задач линейного программирования (ЗЛП) 14
1.8.1Использование надстроек_ 14
1.8.2. Поиск решения_ 14
2. Excel и язык программирования Visual Basic _ 17
2.1.1. Создание макроса автоматически записанного при заполнении таблицы Excel 17
2.1.2. Выполнение макроса_ 18
2.1.3. Просмотр, редактирование и изменение макроса_ 18
2.2. Принципы объектно-ориентированного программирования_ 19
2.2.1. Объекты_ 19
2.2.3. Свойства_ 19
2.3. Организация программы на языке Excel Visual Basic_ 20
2.4 Переменные и константы_ 21
2.5. Тип данных_ 21
2.6. Объявление переменных_ 23
2.7. Области видимости переменных и констант_ 23
2.8. Приоритет операций_ 24
2.9. Правила присвоения имен в Visual Basic_ 24
2.10. Ввод данных_ 24
2.10.1. Ввод данных в программе_ 24
2.10.2. Ввод данных в диалоговом окне_ 25
2.10.3. Ввод данных в диалоговом окне_ 25
2.11. Вывод результатов_ 26
2.11.1. Вывод результатов с использованием диалоговых окон_ 26
2.11.2. Вывод результатов в ячейки таблицы_ 26
2.12. Элементарные функции_ 26
3. Линейные вычислительные процессы_ 27
3.1. Создание диалога_ 29
4. Разветвляющиеся вычислительные процессы_ 33
3. Циклические вычисления_ 36
3.1 Табулирование_ 37
3.1.1. Табулирование функции одной переменной_ 37
3.1.2. Табулирование функции двух переменных_ 38
3.2. Цикл с условием_ 39
3.2.1. Рекуррентные вычисления_ 40
3.4. Массивы переменных_ 42
3.4.1. Одномерные массивы_ 43
3.4.2. Двумерные массивы_ 44
Контрольная работа № 1_ 46
«Программирование в среде Excel Visual Basic»_ 46
Библиографический список_ 53
ТАБЛИЧНЫЙ ПРОЦЕССОР EXCEL И
ЯЗЫК ПРОГРАММИРОВАНИЯ
VISUAL BASIC
Для студентов заочного отделения
Часть 1
Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор.
Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот.
ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования.
Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
Источник: zdamsam.ru
Построить таблицу значений функции онлайн
Вам может понадобиться построить таблицу значений некоторой функции — например, для реферата или для выполнения домашнего задания. Чтобы не рисовать вручную и не считать с помощью калькулятора значения функции в разных точках, можно использовать наш калькулятор.
Вот, к примеру на рисунке (кликабельно) показано будет выглядеть таблица значений на интервале от нуля до десяти с шагом один для функции: [fleft(xright)=frac] Чтобы построить такую таблицу надо ввести команду с ключевым словом table. Дальше записана функция, переменная по которой строится таблица и ее начальное, конечное значение, а также шаг изменения. Кликните по значку вставки, чтобы вставить код из примера в калькулятор и затем нажмите кнопку «Решить». Когда будет построена таблица, наведите на таблицу мышку и нажмите правую кнопку — выберите опцию «Открыть картинку в новой вкладке».
table[x/(x+1),]
Источник: upbyte.net