Решить систему уравнений с точностью e=0.0001 методом Ньютона.
Отделим корни системы уравнений – графически (MathCad).
Из данного графика можно выбрать начальные приближения: x0=0.5, y0=-0.2.
Выполним программу:
uses crt;
const n=2;
e=0.0001;
type Mas2=array[1..n,1..n] of real;
Mas1=array[1..n] of real;
var i,j,k:integer;
q0,q:mas1;
w:mas2;
procedure Gaus(A:mas2;B:mas1;var x:mas1);
var i,j,k:integer;
m,s:real;
begin
for k:=1 to n-1 do
begin
for i:=k+1 to n do
begin
m:=a[i,k]/a[k,k];
a[i,k]:=0;
for j:=k+1 to n do a[i,j]:=a[i,j]-m*a[k,j];
b[i]:=b[i]-m*b[k];
end;
end;
x[n]:=b[n]/a[n,n];
for i:=n-1 downto 1 do
begin
s:=0;
for j:=i+1 to n do s:=s+a[i,j]*x[j];
x[i]:=(b[i]-s)/a[i,i];
end;
end;
procedure II(a1:mas1;var b:mas2);
var q,q1:mas1;
a:mas2;
i,j:integer;
op:real;
begin
a[1,1]:=cos(a1[1]+1);
a[1,2]:=-1;
a[2,1]:=2;
a[2,2]:=-sin(a1[2]);
q[1]:=1;
q[2]:=0;
gaus(a,q,q1);
b[1,1]:=q1[1];
b[2,1]:=q1[2];
q1[1]:=0; q1[2]:=0;
q[1]:=0;
q[2]:=1;
gaus(a,q,q1);
b[1,2]:=q1[1];
b[2,2]:=q1[2];
end;
function f(x:mas1;p:byte):real;
begin
case p of
1:f:=sin(x[1]+1)-x[2]-1.2;
2:f:=2*x[1]+cos(x[2])-2;
end;
end;
function stop:boolean;
var i:byte;
begin
for i:=1 to n do stop:=abs(q[i]-q0[i]) < e
end;
var r:real;
begin
clrscr;
q0[1]:=0.5;q0[2]:=-0.2;
repeat
II(q0,w);
q[1]:=q0[1]-w[2,2]*f(q0,1)-w[1,2]*f(q0,2);
q[2]:=q0[2]-w[2,1]*f(q0,1)-w[1,1]*f(q0,2);
q0:=q;
until (stop=true);
for i:=1 to n do writeln(q[i]:5:9);
readkey;
end.
В результате работы программы получилось одно решение: x=0.509985148, y=-0.200521271.
Похожие статьи: