раздел объявления процедур и функций;
тело программы.
Заголовок программы состоит из зарезервированного слова PROGRAM и имени программы: PROGRAM MetodIteraccii;
Раздел объявления переменных начинается служебным словом VAR: VAR
x0, x1, e, a, b: real;, k:integer;
где:
x0 и x1 - результативные переменные;
e - точность вычислений;
a и b - коэффициенты заданной функции;
k - номер заданной функции.
Объявление функции состоит из:
ключевого слова FUNCTION, имени функции, списка формальных параметров и типа возвращаемого значения:
тела функции, заключенного в операторные скобки BEGIN END.
В функции помещаются формулы, по которым будут вычисляться приближенное
значение. В своей программе я использовала формулы, содержащие стандартные
функции: ln(x), cos(x) и sin(x):
function f(x:real; a, b:real):real;:=a*ln(x)+b;;c(x:real; a,
b:real):real;:=a*cos(x)+b;;s(x:real; a, b:real):real;:=a*sin(x)+b;;
Тело программы начинается словом BEGIN и содержит различные команды:
Write (Writeln) - команда вывода текста на экран;
Read (Readln) - запрос данных;
If … then - краткая форма условного оператора;
Repeat … until - оператор цикла с постусловием;
Abs(x) - абсолютная величина (модуль).
Итак, определяем заданную функцию, приближенное значение X и точность вычисления:
BEGIN('1) x=a*ln(x)+b 2) x=a*cos(x)+b 3) x=a*sin(x)+b
Выберете функцию: ');
Readln (k);
Write ('Введите a=');(a);('Введите b=');(b);rite ('Введите приближённое значение X=');(x1);('Введите точность e=');
Readln (e);
Для подсчета количества проведенных итераций требуется обнулить переменную i, которая заданы в разделе переменных, и организовать цикл, который будет проводить итерации и обеспечивать их подсчет:
i:=0;:=i+1;:=x1;k=1 then x1:=f(x0, a, b);k=2 then x1:=c(x0,
a, b);k=3 then x1:=s(x0, a, b);(abs(x1-x0)<=e);
Вывод результатов на экран:
Writeln ('Решение уравнения: ');('Вычисленное значение корня...', x1:6:5);
Writeln ('Число итераций.............. ', i);
Readln;
Конец программы фиксируется служебным словом END, после которого обязательно ставится точка:
END.
Проблема повышения качества вычислений, как несоответствие между желаемым и действительным, существует и будет существовать в дальнейшем. Ее решению будет содействовать развитие информационных технологий, которое заключается как в совершенствовании методов организации информационных процессов, так и их реализации с помощью конкретных инструментов - сред и языков программирования.
Для решения данных нелинейных уравнений использовался метод итераций. Этот метод отличается от других тем, что по сравнению с другими методами, он является одним из наиболее простых методов определения корней нелинейных уравнений.
В процессе создания курсовой был разработан алгоритм решения поставленной задачи. По этому алгоритму на языке Turbo Pascal составлена и отлажена программа. Созданная программа может служить органической частью решения более сложных задач. Анализ результатов показывает, что программа работает правильно и верно находит корни нелинейных уравнений.
. Бахвалов Н. С., Численные методы. 4-е изд. - М.: БИНОМ. Лаборатория знаний, 2006. - 636 с.: ил.
. Вержбицкий В.М., Численные методы (математический анализ и обыкновенные дифференциальные уравнения): Учеб. пособие для вузов. - М.: Высш. шк., 2001. - 382 с.:ил.
. Волков Е. А., Численные методы: Учебное пособие. 4-е изд., стер. - СПб.: Издательство «Лань», 2007. - 256 с.: ил. - (Учебники для вузов. Специальная литература).
4. Калиткин, Н.Н. Численные методы. [Электронный ресурс] / Н.Н. Калиткин. - М.: Питер, 2001. С. 504.
5. Копченова Н. В., Марон И. А., Вычислительная математика в примерах и задачах: учебное пособие. 2-е изд., стер. - СПб.: Издательство «Лань», 2008. - 368 с. - (Учебники для вузов. Специальная литература).
. Лапчик, М.П. Численные методы: Учеб. пособие для студ. вузов / М.П.Лапчик, М.И.Рагулина, Е.К.Хеннер; Под ред. М.П.Лапчика. - 2-е изд., стер. - М.: Издательский центр «Академия», 2005. - 384 с.
PROGRAM MetodIteraccii;
VAR, x1, e, a, b:real;, k:integer;f(x:real; a, b:real):real;:=a*ln(x)+b;;c(x:real; a, b:real):real;:=a*cos(x)+b;;s(x:real; a, b:real):real;:=a*sin(x)+b;;('1) x=a*ln(x)+b 2) x=a*cos(x)+b 3) x=a*sin(x)+b Выберете функцию: ');(k);('Введите a=');(a);('Введите b='); (b);('Введите приближённое значение X=');(x1);('Введите точность e=');
Readln (e);:=0;:=i+1;:=x1;k=1 then x1:=f(x0, a, b);k=2 then x1:=c(x0, a, b);k=3 then x1:=s(x0, a, b);(abs(x1-x0)<=e);
Writeln ('Решение уравнения: ');('Вычисленное значение корня...', x1:6:5);('Число итераций.............. ', i);
Readln;
END.
Начало
x n, E
xn+1 = ln (xn) + 1,8
f ‘(x)| < 1 +
‘Не удовлетворяет-
условию сходимости’ |xn+1 - xn| ≤ E x n:= xn+1
+
x n+1 Конец
1) y = cos(x) - x + 5
|
x k |
F(x k+1 ) |
|
|
-3 |
4,010007503 |
|
|
4,010007503 |
4,353962687 |
|
|
4,353962687 |
4,64919903 |
|
|
4,64919903 |
4,936852093 |
|
|
4,936852093 |
5,222582976 |
|
|
5,222582976 |
5,488346546 |
|
|
5,488346546 |
5,70039986 |
|
|
5,70039986 |
5,834932915 |
|
|
5,834932915 |
5,901205876 |
5,927928605 |
|
5,927928605 |
5,937557231 |
|
|
5,937557231 |
5,940862854 |
|
|
5,940862854 |
5,941977615 |
|
|
5,941977615 |
5,942351229 |
) y = 0.7 sin(x) -x + 2.7
|
x k |
F(x k+1 ) |
|
1 |
3,289029689 |
|
3,289029689 |
2,597167578 |
|
2,597167578 |
3,06254846 |
|
3,06254846 |
2,755273336 |
|
2,755273336 |
2,963747086 |
|
2,963747086 |
2,823836675 |
|
2,823836675 |
2,918704966 |
|
2,918704966 |
2,854732757 |
|
2,854732757 |
2,898059285 |
|
2,898059285 |
2,868793262 |
|
2,868793262 |
2,888599852 |
|
2,888599852 |
2,875211826 |
|
2,875211826 |
2,884269151 |
|
2,884269151 |
2,878145166 |
|
2,878145166 |
2,882287445 |
|
2,882287445 |
2,879486336 |
|
2,879486336 |
2,881380853 |
|
2,881380853 |
2,880099659 |
|
2,880099659 |
2,880966156 |