logo
Решение нелинейных уравнений методом итераций

2.1 Автоматизация метода

Программа на Pascal состоит из отдельных разделов или блоков, которые должны располагаться в следующем порядке:

- заголовок программы;

- раздел объявления переменных;

- раздел объявления процедур и функций;

- тело программы.

Заголовок программы состоит из зарезервированного слова PROGRAM и имени программы: PROGRAM MetodIteraccii;

Раздел объявления переменных начинается служебным словом VAR: VAR

x0, x1, e, a, b: real;

i, 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;

begin

f:=a*ln(x)+b;

end;

function c(x:real; a, b:real):real;

begin

c:=a*cos(x)+b;

end;

function s(x:real; a, b:real):real;

begin

s:=a*sin(x)+b;

end;

Тело программы начинается словом BEGIN и содержит различные команды:

Write (Writeln) - команда вывода текста на экран;

Read (Readln) - запрос данных;

If … then - краткая форма условного оператора;

Repeat … until - оператор цикла с постусловием;

Abs(x) - абсолютная величина (модуль).

Итак, определяем заданную функцию, приближенное значение X и точность вычисления:

BEGIN

Write (1) x=a*ln(x)+b 2) x=a*cos(x)+b 3) x=a*sin(x)+b

Выберете функцию: );

Readln (k);

Write (Введите a=);

Readln (a);

Write (Введите b=);

Readln (b);

Write (Введите приближённое значение X=);

Readln (x1);

Write (Введите точность e=);

Readln (e);

Для подсчета количества проведенных итераций требуется обнулить переменную i, которая заданы в разделе переменных, и организовать цикл, который будет проводить итерации и обеспечивать их подсчет:

i:=0;

Repeat

i:=i+1;

x0:=x1;

if k=1 then x1:=f(x0, a, b);

if k=2 then x1:=c(x0, a, b);

if k=3 then x1:=s(x0, a, b);

Until (abs(x1-x0)<=e);

Вывод результатов на экран:

Writeln (Решение уравнения: );

Writeln (Вычисленное значение корня..., x1:6:5);

Writeln (Число итераций.............. , i);

Readln;

Конец программы фиксируется служебным словом END, после которого обязательно ставится точка:

END.