Лабораторная работа №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. Результаты вычислений.
Выводы: изучен модифицированный метод Ньютона для решения нелинейного уравнения. Составлены соответствующие программы. С заданной точностью ε определен корень уравнения.