Решение нелинейных уравнений».

Лабораторная работа №1.

Цель: Изучение численных методов решения нелинейных уравнений.

Задачи: Освоить метод половинного деления, метод касательных и модифицированный метод Ньютона для решения нелинейного уравнения, составить алгоритм и соответствующую программу, развить практические навыки решения задач на ЭВМ.

1. Краткое описание методов, блок-схемы алгоритмов.

Метод касательных

Расчетная формула метода касательных (или метод Ньютона-Рафсона) получается из разложения функции f(x) = 0 в ряд Тейлора в окрестности точки xn. При ограничении разложения двумя членами ряда получим

f(x) = f(xn) + (x-xn)∙f’(xn) + O(f "(xn)).

Здесь O (от английского order) означает порядок остаточного члена в разложении, который в дальнейшем считается малым.

Из соотношения

f(x) ≈ f(xn) + (x-xn)∙f’(xn) ≈ 0

получаем

Обычно окончательная формула записывается в виде

Таким образом, зная какое-либо предыдущее приближение xn, где n -номер приближения или итерации (n ≥ 0), можно определить последующее приближенное значение корня xn+1. Если заданное (xn) и расчетное (xn+1) значения совпадают с точностью ε, т.е.

|xn+1 – xn| ≤ ε

то значение xn+1 считается приближенным значением корня уравнения f(x) = 0

Кроме предыдущего условия окончания счета, можно использовать условие малости функций f(x) около корня, т. е. |f(xn)| ≤εf или |f(xn+1)| ≤εf ,где εf - заданная погрешность.

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

Рис. 3. Графическая интерпретация метода касательных.

Исходя из некоторого начального приближения xn, находим соответствующее ему значение f(xn) (точка А), проводим касательную к кривой f(x) через точку А и ищем точку пересечения этой касательной с осью Х. Эта точка будет значением xn+1, т. к. требовалось провести через точку с координатами xn, f(xn) прямую с угловым коэффициентом f'(xn) и затем найти её пересечение с осью Х.

Величина отрезка (xn - xn+1) больше заданной погрешности ε, поэтому поиск значения корня продолжается аналогично. Принимая последнее найденное значение xn+1 за исходное, определяем следующее значение xn+2 по той же формуле

далее опять проверяется условие

|xn+2 – xn+1| ≤ ε

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

Блок-схема алгоритма:

Рис. 4. Блок-схема алгоритма метода касательных

Модифицированный метод Ньютона

Модифицированный метод Ньютона лишь немного отличается от метода касательных и обладает меньшей скоростью сходимости. Здесь значение производной вычисляется всего один раз в точке первого приближения и больше не изменяется. Следовательно, её вычисление будет стоять до оператора цикла. Общая формула вычисления последующего приближения будет выглядеть так:

2. Текст программы.

Program lab1;

{решение нелинейных уравнений}

const

lam=8.5;

hg=0.008;

Te = 953.5;

Tc = 1273;

al = 25;

en = 0.3;

c = 0.00567;

e=0.1;

var a,b,h:real;

function power(x:real;n:integer):real;

{возведение в степень}

var i:integer;

step:real;

begin

step:=1;

for i:=1 to n do

step:=step*x;

power:=step;

end;

function q(T:real):real;

{для функции}

begin

q:=lam*(T-Te)/hg-al*(Tc-T)-en*c*(power(Tc,4)-power(T,4));

end;

function q1(T:real):real;

{для производной}

begin

q1:=0.006804*power(T,3)+1087.5;

end;

procedure poisk;

begin

write('Начало поиска: '); readln(b);

write('Начальный шаг: '); readln(h);

repeat

a:=b;

b:=a+h;

until q(a)*q(b)<0;

writeln('a = ',a:0:5);

writeln('b = ',b:0:5);

end;

procedure newton(e,x1:real);

var x0,K:real;

begin

K:=q1(x1);

repeat

x0:=x1;

x1:=x0-q(x0)/K;

until abs(x0-x1)<=e;

write('Решение по модицифированному методу Ньютона ');

writeln('T = ',x1:0:5,' q(T) = ',q(x1):0:5);

end;

begin

poisk;

newton(e,b);

readln;

end.

3. Результаты вычислений.

Выводы: изучен модифицированный метод Ньютона для решения нелинейного уравнения. Составлены соответствующие программы. С заданной точностью ε определен корень уравнения.

Наши рекомендации