Лабораторная работа № 3
Приближенное решение систем нелинейных уравнений
Постановка задачи
Методом Ньютона решить систему уравнений:

Блок-схема

Текст программы
program lab3;
function f(x,y:real):real;
begin
f:=sin(x+1.2)+0.5*y-0.5;
end;
function g(x,y:real):real;
begin g:=cos(y+0.8)+0.7*x end;
function f1x(x,y:real):real;
var a:real;
begin
f1x:=cos(x+1.2);
end;
function f1y(x,y:real):real;
begin
f1y:=0.5;
end;
function g1x(x,y:real):real;
begin g1x:=0.7 end;
function g1y(x,y:real):real;
begin g1y:=-sin(y+0.8) end;
{$F-}
var i,j,n:word;
e,x,y,h,k,s:real;
begin
writeln('Введите начальное приближение:');
read(x); read(y);
readln;
writeln('Введите точность:');
readln(e);
writeln('Введите число n:');
readln(n);
i:=0;
s:=(f1x(x,y)*g1y(x,y)-g1x(x,y)*f1y(x,y));
h:=(-f(x,y)*g1y(x,y)+g(x,y)*f1y(x,y))/s;
k:=(-f1x(x,y)*g(x,y)+f(x,y)*g1x(x,y))/s;
while ((abs(h)+abs(k))>e) and (i<=n) do
begin
i:=i+1;
x:=x+h;
y:=y+k;
s:=(f1x(x,y)*g1y(x,y)-g1x(x,y)*f1y(x,y));
h:=(-f(x,y)*g1y(x,y)+g(x,y)*f1y(x,y))/s;
k:=(-f1x(x,y)*g(x,y)+f(x,y)*g1x(x,y))/s;
end;
if i>=n then begin
writeln('число итераций превзошло допустимое.');
writeln('уточнить начальное приближение.'); end
else begin
writeln('x = ',x:8:4,' y = ',y:8:4);
writeln('число итераций',i); end;
end.
Тестовые данные
Введите начальное приближение:
0.2 0.3
Введите точность:
0.001
Введите число n:
10
x = -0.7833 y = 0.1905
число итераций 4
Введите начальное приближение:
5 3
Введите точность:
0.001
Введите число n:
20
x = -0.7834 y = 0.1905
число итераций19
Введите начальное приближение:
0.5 4
Введите точность:
0.001
Введите число n:
4
число итераций превзошло допустимое.
уточнить начальное приближение.