Смекни!
smekni.com

Разработка программного обеспечения для решения уравнений с одной переменной методом Ньютона (касательных) (стр. 2 из 5)

жёстком диске, так и с клавиатуры;

–Данные, выводимые на экран;

Данные, вводимые из файла.

5.2. Описание функционирования программы

При запуске программы на экране появляется титульный лист, отображающий информацию о студенте; далее загружается меню программы, состоящее из пяти пунктов:


Рисунок 5.2 – Схема функционирования программы

– Справка

– y(x) =a*ln(b*x)

– y(x) =a*x^2+b*x+c

– Построение графика

– Выход

Пункт "Справка" включает в себя информацию о методе Ньютона. Пункты "y(x) =a*ln(b*x)" и "y(x) =a*x^2+b*x+c" представляют собой решения уравнений, где задаются промежутки m и n, параметры a, b(, c), погрешность E и выполняется сохранение в файлы. Пункт "Построение графика" строит график выбранного уравнения в зависимости от введённых параметров и промежутков. Пункт "Выход" – выход из программы. Схема функционирования представлена на рисунке 5.2.

5.3. Описание процедур и функций программы

Procedure title () – выводит титульную страницу на экран монитора;

Procedure graphica () – инициализирует графику.

Procedure pro () – содержит в себе переменную р, которая отвечает за номер выделяемой кнопки, передаётся как параметр в procedure key (p) и в procedure eat (p, bool), а также содержит в себе переменную bool, отвечающую за цикл в рамках procedure pro, передаётся как параметр в procedure eat (p2, bool);

Procedure eat (p2: byte; var bool: boolean) – в зависимости от параметра p2 выполняет один из пяти вариантов дальнейших действий программы. Переменная bool передаётся как параметр обратно в procedure pro;

Procedure key (p1: byte) – выстраивает графическую картинку меню в зависимости от параметра р1;

Procedure equation_1 () – решение уравнения вида y(x) =a×ln(b×x). Переменная Е (погрешность) принимается как параметр из procedure load_file_3 (E), передаёт переменную Е как параметр в procedure save_file (E);

Procedure equation_2 () – решение уравнения вида y(x) =a×x2+b×x+c. Переменная Е (погрешность) принимается как параметр из procedure load_file_3 (E), переменная Е передаётся как параметр в procedure save_file (E);

Procedure load_file_1 () – загружает переменные m и n (промежутки функции) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. m, n – глобальные переменные в рамках программы;

Procedure load_file_2 () – загружает переменные a и b либо a, b, c (в зависимости от вида функции) (коэффициенты уравнения) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. a, b, c – глобальные переменные в рамках программы;

Procedure load_file_3 (var E: real) – загружает переменную Е (погрешность функции) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. Е передаётся как параметр и принимается как переменная в procedure equation_1 и equation_2;

Procedure save_file (E: real) – сохраняет переменные a, b, (c,) m, n – глобальные в рамках программы в файлы либо не сохраняет, сохраняет переменную Е в виде параметра в файл, либо не сохраняет;

Procedure groffunc () – выстраивает график по значениям глобальных в рамках программы переменных a, b, (c,) m, n, с отмеченными на оси х приближениями и корнем уравнения. Содержит в себе function f (x: real): real, высчитывающую значение одной из функций в зависимости от аргумента х. Переменные у0 (масштаб) и у2 (максимальное значение функции) передаются в виде параметров в procedure setka (y0, y2);

Procedure setka (yn: integer; y2: real) – выстраивает координатную сетку и оцифровку осей x и y в зависимости от глобальных в рамках программы переменных m, n и параметров yn и y2;

Procedure help () – предоставляет пользователю непосредственную методологическую помощь.

5.4. Схема взаимодействия процедур программы

Для наглядности работы подпрограмм программы необходимо изобразить в виде схемы их взаимодействие между собой. Взаимодействие подпрограмм изображено на рисунке 5.3.


Рисунок 5.3 – Взаимодействие процедур программы

Условные обозначения:

– запуск процедуры на которую указывает стрелка, из процедуры из которой она исходит.

5.5. Перечень обозначений

5.5.1 Обозначения вводимых данных

m, n – промежутки функции;

a, b, c – коэффициенты уравнения, представленные в виде параметров;

E – погрешность, аналог ε в разделе "Описании математической модели" и в разделе "Описание (и обоснование выбора) метода решения".

5.5.2 Обозначения выводимых данных

y(x) =a*ln(b*x), y(x) =a*x^2+b*x+c – уравнения используемые в программе;

x – неизвестная, корень уравнения;

ln – логарифм;

x^2 – неизвестная x в степени 2.

5.6 Входные и выходные данные

5.6.1 Входные данные

y(x) =a*ln(b*x), y(x) =a*x^2+b*x+c – функция;

m, n: real – левый и правый промежутки функции соответственно;

a, b, c: real – параметры, коэффициенты уравнения;

E: real – погрешность;

"Помощь и справочная информация".

5.6.2 Выходные данные

x1: real – значение корня уравнения;

st: string – текстовые сообщения, возникающие в процессе выполнения программы (ошибки и варианты дальнейшего продолжения).

5.6.3 Промежуточные данные

Bool_of: Boolean – определяет цикл выполнения алгоритма решения;

mass: real – массив [1. . 20] ;

number: byte – глобальная переменная, номер функции;

code_of: byte – переменная, отвечающая за необходимость поиска корня уравнения;

root: real – разность приближений.

5.7. Алгоритм решения задачи

5.7.1. Алгоритм нахождения корня уравнения y(x) =a×ln(b×x)

Алгоритм решения уравнения вида y(x) =a×ln(b×x) приводится на рисунке 5.4.

выполнять


выполнять

если (a = 0) то

вывод

number: =0;

иначе

выполнять

i: =1; если (a*ln(b*m) *(-a/sqr(m))) > 0 то

mass [i]: =m;

code_of: =1;

иначе

Рисунок 5.4 – Алгоритм решения уравнения вида y(x) =a×ln(b×x)


если (a*ln(b*n) *(-a/sqr(n))) > 0 то

mass [i]: =n;

code_of: =1;

иначе

вывод

number: =0; code_of: =0;

если (code_of = 1) то

выполнять

x1: =mass [i] -a*ln(b*mass [i]) /

(a/mass [i]);

root: =Abs (x1-mass [i]);

i: =i+1;

mass [i]: =x1;

пока (root < E);

если (x1 < m) или (x1 > n) то

вывод

number: =0; code_of: =0;

вывод

Рисунок 5.4 – Алгоритм решения уравнения вида y(x) =a×ln(b×x) (продолжение)


5.7.2. Алгоритм нахождения корня уравнения y(x) =a×x2+b×x+c

Алгоритм решения уравнения вида y(x) =a×x2+b×x+c приводится на рисунке 5.5.

выполнять


ввод

если (a = 0) и (b = 0) и (c = 0) то

вывод

number: =0;

иначе

выполнять

i: =1;

если (a*sqr(m) +b*m+c) *(2*a) >= 0 то

mass [i]: =m;

code_of: =1;

иначе

Рисунок 5.5 – Алгоритм решения уравнения вида y(x) =a×x2+b×x+c


если (a*sqr(n) +b*n+c) *(2*a) >= 0 то

mass [i]: =n;

code_of: =1;

иначе

вывод

number: =0; code_of: =0;

если (code_of = 1) то

выполнять

x1: =mass [i] -((a*sqr(mass [i]) +

b*mass [i] +c) /(2*a*mass [i] +b));

root: =Abs (x1-mass [i]);

i: =i+1;

mass [i]: =x1;

пока (root < E);

если (x1 < m) или (x1 > n) то

вывод

number: =0; code_of: =0;

вывод

Рисунок 5.5 – Алгоритм решения уравнения вида y(x) =a×x2+b×x+c (продолжение)

Алгоритмы решения уравнений рис.5.4 и рис.5.5 соответствуют procedure equation_1 и procedure equation_2 в программе соответственно.

6. КОМПЛЕКТАЦИЯ И ЗАГРУЗКА ПРОГРАММЫ

6.1. Комплектация

Папка my_stuff, в которой содержится:

– RUOP. exe – основной файл программы;

– help. asc – файл с методологической информацией;

– m_n. txt – файл, содержащий значения промежутков m и n;

– a_b_c. txt – файл, содержащий значения параметров a, b, c;

– E. txt – файл, содержащий значение погрешности E;

– egavga. bgi – файл для работы с графикой;

– keyrus. com – файл для работы с русским языком;

– trip. chr – файл, содержащий русский шрифт.

6.2. Порядок инсталляции и запуск программы

Требуется скопировать папку my_stuff с содержащимися в ней файлами в папку “c: &bsol;temp&bsol;”. Для запуска программы необходимо запустить файл RUOP. exe, расположенный в папке my_stuff.

При копировании программы в иную папку, невозможными становятся работа "Справки" загрузка и автоматическое сохранение информации в файлы.

7. ТЕСТОВЫЕ ПРИМЕРЫ

Тестовые примеры необходимы пользователю для того, чтобы узнать возможности, которые предоставляет данный программный продукт или протестировать его на правильность решения уравнений.

Тестовые примеры для решения уравнения вида y(x) =a*ln(b*x) приводятся в таблице 6.1.

Таблица 7.1. Тестовые примеры для уравнения вида y(x) =a*ln(b*x)

m n a b E Результат
1 10 1 0.5 0.01 2
-20 -0.01 9 -2 0.01 -0.2
9 14 100 1 0.01 Уравнение не имеет корней

Тестовые примеры для решения уравнения вида y(x) =a*x^2+b*x+c приводятся в таблице 6.2.

Таблица 7.2. Тестовые примеры для уравнения вида y(x) =a*x^2+b*x+c

m n a b c E Результат
-10 10 5 29 3 0.01 -0.1054
-10 10 0 4 10 0.01 -2.5
5 20 5 29 4 0.01 Уравнение не имеет

При введении в программу данных, не отвечающих требованиям типу, будет появляться сообщение "Ошибка ввода", пока не будут введены правильные данные, соответствующие требованиям программы.

Если уравнение не имеет корней, то построение графика и сохранение данных, результатов становиться невозможным.