Составить схему алгоритма и написать программу вычисления таблицы значений функции f x на промежутке

Разработать схему алгоритма, составить 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

Excel график функции

Оглавление

  1. Условие задачи
  2. Анализ задания
  3. Теоретические сведения
  4. Схемы алгоритмов
  5. Описание C++ Builder-программы
  6. Текст программы
  7. Пример выполнения программы
  8. Консольное приложение
  9. Набор тестов
  10. Выводы
  11. Список использованной литературы

1. Условие задачи

Разработать схему алгоритма, составить C++ Builder-проект вычисления таблицы значений функции:

Функция y(x,a,b)

Аргумент X принимает N значений от Xn с шагом Dx, а параметр А принимает значения от An до Аk с шагом Da. Параметр B принимает значение, численно равное корню нелинейного уравнения:

вычисленного на интервале c = 0 и d = 8 с заданной погрешностью ε = 10 -3 ÷ 10 -6 .

2. Анализ задания

  1. Xn – начальное значение аргумента, тип – с плавающей точкой;
  2. Dx – шаг изменения аргумента, тип – с плавающей точкой;
  3. N – число значений аргумента, тип – целый;
  4. An – начальное значение параметра A, тип – с плавающей точкой;
  5. Ak – конечное значение параметра A, тип – с плавающей точкой;
  6. Da – шаг изменения параметра A, тип – с плавающей точкой;
  7. C, D – интервал изоляции, тип – с плавающей точкой;
  8. Eps – погрешность вычисления корня нелинейного уравнения, тип – с плавающей точкой;
  9. Km — максимальное количество итераций, тип – целый;
  1. Mx – массив (одномерный) значений аргумента X, тип – с плавающей точкой;
  2. My – массив (двумерный) значений функции Y, тип – с плавающей точкой;
  3. Ma – массив (одномерный) значений параметра A, тип – с плавающей точкой;
  4. B – численное значение корня нелинейного уравнения, тип – с плавающей точкой;
  5. Zt – Погрешность вычисления корня по невязке, тип – с плавающей точкой
  6. Er – массив (двумерный) признака ошибки при вычислении функции, тип – целый;
  7. Equat() – признак ошибки при вычислении корня нелинейного уравнения, тип – bool.

В алгоритме выполняются следующие функции:

Урок 4. Формулы Excel для начинающих

  1. Ввод исходных данных;
  2. Вычисление корня нелинейного уравнения;
  3. Вычисление таблицы значений функции;
  4. Проверка значения подкоренного выражения и формирование признака ошибки, если оно имеет отрицательный знак;
  5. Вывод результатов вычислений.

3. Теоретические сведения

Метод дихотомии

Метод половинного деления, или иначе метод дихотомии. Метод дихотомии получил свое название от древнегреческого слова διχοτομία, что в переводе означает деление надвое. Его мы используем довольно часто. Допустим, играя в игру «Угадай число», где один игрок загадывает число от 1 до 100, а другой пытается его отгадать, руководствуясь подсказками «больше» или «меньше».

Читайте также:
Программа для того чтобы компьютер зарабатывал сам

Логично предположить, что первым числом будет названо 50, а вторым, в случае если оно меньше — 25, если больше — 75. Таким образом, на каждом этапе неопределенность неизвестного x3 x1 x2 X Y y=f(x) уменьшается в 2 раза. Т.е. даже самый невезучий в мире человек отгадает загаданное число в данном диапазоне за 7 предположений вместо 100 случайных утверждений.

Алгоритм метода половинного деления основан на теореме Больцано — Коши о промежуточных значениях непрерывной функции и следствии из неё.

Теорема Больцано — Коши: если непрерывная функция принимает два значения, то она принимает любое значение между ними.

Следствие (теорема о нуле непрерывной функции): если непрерывная функция принимает на концах отрезка положительное и отрицательное значения, то существует точка, в которой она равна 0.

Иллюстрация метода дихотомии

  1. Задать отрезок [a,b] и погрешность e.
  2. Вычислить c=(a+b)/2
  3. Определить интервал дальнейшего поиска: если f(a) и f(c) имеют разные знаки, т.е. f(a)*f(c)
  4. Если длина нового отрезка |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. Схема алгоритма главной программы

Рис. 1. Схема алгоритма главной программы

Вычисление значения корня уравнения производится путём обращения к ПФ Equat, возвращающей также признак ошибки в случае, если значение корня уравнения не найдено за предельно допустимое число итераций Km. При этом выводится диагностическое сообщение «Решение н найдено за Km итераций», иначе происходит табулирование функции (ПП Tab) и вывод результатов выполнения программы (ПП RezOut). Значение m определяет количество значений параметра A.

Схемы алгоритмов подпрограмм, используемых в данной программе, с указанием их назначения и списков формальных параметров приведены на рис. 2 – 5.

Читайте также:
Программа Microsoft office установка на компьютер

Подпрограмма-функция F (рис. 2) предназначена для вычисления значения функции уравнения, представляет собой один оператор присваивания и используется в ПП вычисления значения корня уравнения Equat.

Рис. 2. Схема алгоритма подпрограммы-функции F

Рис. 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

Рис. 3. Схема алгоритма подпрограммы-функции Equat

Подпрограмма-функция Equat предназначена для вычисления значения корня нелинейного уравнения с заданной погрешностью методом половинного деления.
Список формальных параметров: c, d, eps, km, b, zt.

c, d – интервал изоляции, тип – с плавающей точкой;

eps – погрешность вычисления корня уравнения, тип – с плавающей точкой;

km – предельно допустимое количество итераций, тип – целый.

b – значение корня нелинейного уравнения, тип – с плавающей точкой;

zt – погрешность вычисления корня по невязке, тип – с плавающей точкой;

Equat() – признак ошибки, тип – bool.

Рис. 4. Схема алгоритма подпрограммы-процедуры Tab

Рис. 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

Рис. 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-приложения (структура проекта)

Рис. 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:

Источник: 5stu.ru

Вычисление таблицы значений функции — Turbo Pascal

Ребята, всем привет! Передо мной стоит задача такого рода — необходимо написать программу вычисления таблицы значений функции z=sin(y*y)-ln(x)-ln(y). Один аргумент изменяется с определенным шагом в заданном интервале, а остальные аргументы не меняются. Значения аргумента следует выбирать самостоятельно из области его допустимых значений.

А шаг изменения аргумента выбирать таким образом, чтобы аргумент принимал 10…20 значений в заданном интервале. У меня получается какая-то шляпа, честно признаться. Помогите исправить! Я буду очень благодарна вам!

uses crt; var n,i:integer; y,x0,h,x,z:real; begin writeln(‘vvedite Y’); readln(y); if y>0 then begin write(‘vvedite nachalnoe znachenie x0 = ‘); readln(x0); write(‘vvedite kolichestvo reshenii n = ‘); readln(n); write(‘vvedite shag izmeneniya h = ‘); readln(h); writeln; writeln(‘Tablica znachenii funkcii’); writeln(‘pri y= ‘,y:0:2); x:=x0; for i:=1 to n do begin z:=sin(y*y)-ln(x)-ln(y); writeln(x:5:2,’ F(x)=’,z:7:4); end; x:=x+h; end; end.

Код к задаче: «Вычисление таблицы значений функции»

Листинг программы

uses crt; var n,i:integer; y,x0,h,x,z:real; begin writeln(‘vvedite Y’); readln(y); if y>0 then begin write(‘vvedite nachalnoe znachenie x0 = ‘); readln(x0); write(‘vvedite kolichestvo reshenii n = ‘); readln(n); write(‘vvedite shag izmeneniya h = ‘); readln(h); writeln; writeln(‘Tablica znachenii funkcii’); writeln(‘pri y= ‘,y:0:2); x:=x0; for i:=1 to n do begin z:=sin(y*y)-ln(x)-ln(y); writeln(x:5:2,’ F(x)=’,z:7:4); x:=x+h; end; end; end.

Источник: studassistent.ru

Составить схему алгоритма и написать программу вычисления таблицы значений функции f x на промежутке

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Источник: stepik.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru