1.Постановка
задачи: решить систему уравнений F(x)=0
;Функция (*):
Sin(x1+2)-x2=2.5;
x1+cos(x2+2)=0.5;
2.Метод
Ньютона-Рафсона;
3.Программа:
var
f,x,vx: array [1..2] of real;y,j,i:integer;
m:array
[1..2,1..2] of real;s,v,v1,v2:real;
begin
for
i:=1 to 2 do
read(x[i]);y:=0;
repeat
for
i:=1 to 2 do
begin
f[1]:=sin(x[1]+2)-x[2]-2.5;
f[2]:=x[1]+cos(x[2]+2)-0.5;
end;
for
i:=1 to 2 do
begin
for
j:=1 to 2 do begin
m[1,1]:=cos(x[1]+2);
m[1,2]:=-1;
m[2,1]:=1;
m[2,2]:=-sin(x[2]+2);
end;
end;
v:=-cos(x[1]+2)*sin(x[2]+2)+1;
v1:=-1*f[1]*sin(x[2]+2)+f[2];
v2:=f[2]*cos(x[1]+2)-f[1];
for
i:=1 to 2 do
begin
vx[1]:=v1/v;
vx[2]:=v2/v;
end;
x[1]:=x[1]-vx[1];
x[2]:=x[2]-vx[2];
f[1]:=sin(x[1]+2)-x[2]-2.5;
f[2]:=x[1]+cos(x[2]+2)-0.5;
s:=abs(f[1])+abs(f[2]);
inc(y)
until
s<0.000001;
for
i:=1 to 2 do
writeln(x[i]:18:17);
write(y);
end.
4.Результаты:
Turbo
Pascal Version 7.0 Copyright (c) 1983,92 Borland International
x[1]=1;x[2]=1
x*[1]=
-0.37820514236
x*[2]=
-1.50130014310
a=7
6.Результаты
вычисления функции в maxima:
(%i1)
load(mnewton); (%o1)
C:/PROGRA~1/MAXIMA~1.3/share/maxima/5.16.3/share/contrib/mnewton.mac (%i2)
mnewton([sin(x+2)-y-2.5,x+cos(y+2)-0.5],[x,y],[1,1]); (%o2)
[[x=-0.37820514188261,y=-1.501300143272053]] 7.Вывод:
Вычисление
функции (*) в maxima и в Паскале приблизительно
равны.Функция (*) решена с помощью метода
Ньютона -Рафсона с точностью ε=0.000001.
|