Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №3 / B
.PAS Program Metod_Nuton_Rafson;
Uses Crt;
Const a=3;b=-1.4;c=0.09;d=1.3;e=0.0003;del=0.09;
Var
k:Integer;
Dx1,Dx2,Dx1x1,Dx1x2,Dx2x2,Dx2x1,Opr,OprX1,OprX2,p1,p2,p,al:Real;
X: Array [0..1,1..2] of Real;
Function DefX1(X1,X2:real):real;
Begin
DefX1:=A+2*C*X1*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2(X1,X2:Real):Real;
Begin
DefX2:=B+2*D*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX1X1(X1,X2:real):real;
Begin
DefX1X1:=2*C*exp(C*sqr(X1)+D*sqr(X2))*(1+2*C*sqr(x1));
End;
Function DefX1X2(X1,X2:real):real;
Begin
DefX1X2:=4*C*D*X1*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2X1(X1,X2:real):real;
Begin
DefX2X1:=4*C*d*X1*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2X2(X1,X2:real):real;
Begin
DefX2X2:=2*D*exp(C*sqr(X1)+D*sqr(X2))*(1+2*D*sqr(x2));
End;
Function Fun(X1,X2:Real):Real;
Begin
Fun:=A*X1+B*X2+exp(C*sqr(X1)+D*sqr(X2));
End;
label a1,a2,a3,a4,a5,a6;
BEGIN
a1:
ClrScr;
WriteLn('Metod_Nuton_Rafson');
Writeln('X[0,1]:=0;X[0,2]:=0 ');
X[0,1]:=0;
X[0,2]:=0;
Writeln('Eps:=0.0003');
k:=5;
al:=1;
DX1:=DefX1(X[0,1],X[0,2]);
DX2:=DefX2(X[0,1],X[0,2]);
DX1X1:=DefX1X1(X[0,1],X[0,2]);
DX1X2:=DefX1X2(X[0,1],X[0,2]);
DX2X1:=DefX2X1(X[0,1],X[0,2]);
DX2X2:=DefX2X2(X[0,1],X[0,2]);
a2:
Opr:=DX1X1*DX2X2-DX1X2*DX2X1;
p1:=(DX2X2*DX1-DX1X2*DX2)/Opr;
p2:=(-DX2X1*DX1+DX1X1*DX2)/Opr;
a3:
if (Fun(X[0,1]-al*p1,X[0,2]-al*p2)-Fun(X[0,1],X[0,2]))<(-del*al*(DX1*p1+DX2*p2)) then goto a4
else begin al:=al/2;goto a3;End;
a4:
X[1,1]:=X[0,1]-al*p1;
X[1,2]:=X[0,2]-al*p2;
a5:
DX1:=DefX1(X[1,1],X[1,2]);
DX2:=DefX2(X[1,1],X[1,2]);
DX1X1:=DefX1X1(X[1,1],X[1,2]);
DX1X2:=DefX1X2(X[1,1],X[1,2]);
DX2X1:=DefX2X1(X[1,1],X[1,2]);
DX2X2:=DefX2X2(X[1,1],X[1,2]);
a6:
p:=sqrt(sqr(DX1)+sqr(DX2));
if p>e then
Begin
X[0,1]:=X[1,1];X[0,2]:=X[1,2];
k:=k+5;Goto a2;
End
Else
Begin
WriteLn;
WriteLn('Xmin[0,1]:=',X[1,1]);
WriteLn('Xmin[0,2]:=',X[1,2]);
WriteLn('Ymin:=',Fun(X[1,1],X[1,2]));
WriteLn('Chislo iteraciy:=',k);
End;
ReadLn;
End.
Uses Crt;
Const a=3;b=-1.4;c=0.09;d=1.3;e=0.0003;del=0.09;
Var
k:Integer;
Dx1,Dx2,Dx1x1,Dx1x2,Dx2x2,Dx2x1,Opr,OprX1,OprX2,p1,p2,p,al:Real;
X: Array [0..1,1..2] of Real;
Function DefX1(X1,X2:real):real;
Begin
DefX1:=A+2*C*X1*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2(X1,X2:Real):Real;
Begin
DefX2:=B+2*D*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX1X1(X1,X2:real):real;
Begin
DefX1X1:=2*C*exp(C*sqr(X1)+D*sqr(X2))*(1+2*C*sqr(x1));
End;
Function DefX1X2(X1,X2:real):real;
Begin
DefX1X2:=4*C*D*X1*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2X1(X1,X2:real):real;
Begin
DefX2X1:=4*C*d*X1*X2*exp(C*sqr(X1)+D*sqr(X2));
End;
Function DefX2X2(X1,X2:real):real;
Begin
DefX2X2:=2*D*exp(C*sqr(X1)+D*sqr(X2))*(1+2*D*sqr(x2));
End;
Function Fun(X1,X2:Real):Real;
Begin
Fun:=A*X1+B*X2+exp(C*sqr(X1)+D*sqr(X2));
End;
label a1,a2,a3,a4,a5,a6;
BEGIN
a1:
ClrScr;
WriteLn('Metod_Nuton_Rafson');
Writeln('X[0,1]:=0;X[0,2]:=0 ');
X[0,1]:=0;
X[0,2]:=0;
Writeln('Eps:=0.0003');
k:=5;
al:=1;
DX1:=DefX1(X[0,1],X[0,2]);
DX2:=DefX2(X[0,1],X[0,2]);
DX1X1:=DefX1X1(X[0,1],X[0,2]);
DX1X2:=DefX1X2(X[0,1],X[0,2]);
DX2X1:=DefX2X1(X[0,1],X[0,2]);
DX2X2:=DefX2X2(X[0,1],X[0,2]);
a2:
Opr:=DX1X1*DX2X2-DX1X2*DX2X1;
p1:=(DX2X2*DX1-DX1X2*DX2)/Opr;
p2:=(-DX2X1*DX1+DX1X1*DX2)/Opr;
a3:
if (Fun(X[0,1]-al*p1,X[0,2]-al*p2)-Fun(X[0,1],X[0,2]))<(-del*al*(DX1*p1+DX2*p2)) then goto a4
else begin al:=al/2;goto a3;End;
a4:
X[1,1]:=X[0,1]-al*p1;
X[1,2]:=X[0,2]-al*p2;
a5:
DX1:=DefX1(X[1,1],X[1,2]);
DX2:=DefX2(X[1,1],X[1,2]);
DX1X1:=DefX1X1(X[1,1],X[1,2]);
DX1X2:=DefX1X2(X[1,1],X[1,2]);
DX2X1:=DefX2X1(X[1,1],X[1,2]);
DX2X2:=DefX2X2(X[1,1],X[1,2]);
a6:
p:=sqrt(sqr(DX1)+sqr(DX2));
if p>e then
Begin
X[0,1]:=X[1,1];X[0,2]:=X[1,2];
k:=k+5;Goto a2;
End
Else
Begin
WriteLn;
WriteLn('Xmin[0,1]:=',X[1,1]);
WriteLn('Xmin[0,2]:=',X[1,2]);
WriteLn('Ymin:=',Fun(X[1,1],X[1,2]));
WriteLn('Chislo iteraciy:=',k);
End;
ReadLn;
End.