,,,
:
:
, 2006
1. .
2.
2.1
2.2
2.3
2.3.1
2.3.2
2.4
2.4.1
2.4.2
2.4.3
3. Maple
3.1
3.2
3.3
3.4
1. . .
, - :
(1.1)
:
(1.1)
Ÿ ,
(1.1) n n .
- (1, 2,..., n)T (1.2): F() = 0, F = (f1, f2,..., fn)T.
, , , . , , G() , . F = grad G, .
, ( ), ( ) , , . . , .
, " ". xn, *,
(k - ), k .
2.
2.1
( ) .
fi(x1,x2,...xn) = 0, i=1,2,..n;
:
(2.1)
. (2.2)
,
.
X(0)= (x1(0),x2(0),...xn(0))
X(k+1) = (X(k)). . .
.
, .
( ).
1). - ()
;
2).
3).
:
1.
2. ,
;
3. ,
. 2) - () S ( ). , S, . . (2.2) . , (2.2) S, q.
. , 3) . , . , , k=2,3,
(2.3)
. , .. . , S, (2.3) . , 2)
.
.
,
,
.. (2.3) . , . (2.3) ,
, , .
, . (, ).
=1,2,
, , ,
, . . 2) .
. , , 3).
2. (2.2) S .
, , .
,
, .
2) . (2.2)
, - S (.. S
).
2) .
.
, ( - )
, , , , .
S , . ,
, . (2.4)
2)
.
, (2.4) -
.
,.
x xk.
.
. .
: ,
:
()
().
,
2 .
, , (2r-1). , . , , ,. .
2.3
, . .
, - .
,
(3.1)
. - - , :
.
- .
, ..
, ,
(3.2)
, - ( ), (3.1) .
, , . , . , , :
. . : , , .
, .
.
( ).
1) - -
(3.1),
2) ,
3)
4)
(3.2)
1)
2)
3)
. . . , . , . 3)
.
(3.2)
,
.
,
,
(3.3)
. 4)
,
, , . .
. (3.3) . ,
(3.4)
. (3.4.) . , .
, .. (3.4) .
3).
, .. .
, :
1. (3.3) , .
2. , 3)
. fi(x) , G, Fx , .
.
. , F(x,x)= F(x),
(12)
.
x0, ,.
x0 .
. fi(x) 1 - 2 - G, x0 :
x0 F-1
xk+1=xk-f-1x(xk)F(xk) . f(x)=0
3
)
)
)
)
)
.. F-1x(x0)Fx(x1) ,
Fx(x0)(x1-x0)+f(x0)=0
, k :
()
m=k-1
() , R xk , .. .
..,
,, .. .
2.3.1
1. , , .. . : . , , . .
2.
, (3.1), ..
(3.5)
.
- (3.1)
,
,
:
.
, . , (3.5) .
2.3.2
. , . , . . . , , . , - .
, . , , , - . k = 0, 1....
n- , . , , . , .
. {0) , , - .
n- , . : , , -.
, ,
(3.30)
(3.27). 0(2) 0(3), .
(3.30), (3.27) (3.29) . . , . , (3.27) (3.29), , .
, , . (3.27) , 0(n3) . , , , . , 0(n3) . , +1, (3.27) , 0(2) . (3.27) (3.39) , (3.27) ,
, , (). . F(). , (3.26) (3.27), , (3.27)
, - - .
. , (3.29)
---, ( ), .
(0). , .
( ). = 1
(3.34)
- . ,
(3.35)
.. (, , ), (3.34). (3.35).
, ( ) . , , , ()., , , - ( ).
3.
3.1
, .
, l(X) g(X) fi(X) = li(X) + gi(x), .
li(X) = - gi(X), i=1,2,3...n;
A X= - G(X);
A- ;
G(X) - - .
X(0)
A X(k+1)=-G(X(k)).
, fi(X). A , , .
3.2
X=X+ F(X),
- ,
X(k+1) = X(k) + F(X(k)).
,
||+ W|| < 1,
E- .
, ,
||X(k)-X(k-1)||<||X(k-1)-X(k-2)||.
, - , .
3.3
()
, .
()
, () U(x); , , U(x) , ().
, , U(x) n- .
x - () x0 - . x0 U(x). x0 x,
U(x)= U(x0)
.
x0 U(x)= U(x0) , x1 - U(x)= U(x1).
, x1, U(x)= U(x1) , x2 U(x)= U(x2), ..
U(x0)>U(x1)>U(x2)>..., , , U (" "), .
U(x).
:
.
F(l) U xp. , F(l) . l ,
.
.
, l - , . :
l , :
,
.
,
,
- - f.
, :
.
,
W'(x) - .
,
.
3.
:
3.1
:
.
> f1:=0.1-x0^2+2*y0*z0;
f2:=-0.2+y0^2-3*x0*z0;
f3:=0.3-z0^2-2*x0*y0;
> f1x:=diff(f1,x0):
> f1y:=diff(f1,y0):
> f1z:=diff(f1,z0):
> f2x:=diff(f2,x0):
> f2y:=diff(f2,y0):
> f2z:=diff(f2,z0):
> f3x:=diff(f3,x0):
> f3y:=diff(f3,y0):
> f3z:=diff(f3,z0):
> A:=<<f1x|f1y|f1z>,<f2x|f2y|f2z>,<f3x|f3y|f3z>>;
, :
> A1:=MatrixInverse(A);
> norma:=MatrixNorm(A1,1);
.
> x0:=1; y0:=1; z0:=1;
> norma;
,
.
> restart;
> with(LinearAlgebra):
> x0:=0:
y0:=0:
z0:=0:
> x:=0.1-x0^2+2*y0*z0;
y:=-0.2+y0^2-3*x0*z0;
z:=0.3-z0^2-2*x0*y0;
i:=1;
> while (abs(x-x0)>0.0001)and(abs(y-y0)>0.0001)and(abs(z-z0)>0.0001) do
x0:=x:
y0:=y:
z0:=z:
x:=0.1-x0^2+2*y0*z0;
y:=-0.2+y0^2-3*x0*z0;
z:=0.3-z0^2-2*x0*y0;
i:=i+1;
end do:
:
:
:
:
> P:= 0.3*q^22/(1-q)-0.0001;
> q:= fsolve(P);
, ,
:
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
x0,y0,z0,x,y,z,eps: real;
begin
x0:=StrToFloat(Edit1.Text);
y0:=StrToFloat(Edit2.text);
z0:=StrToFloat(Edit3.Text);
eps:=StrToFloat(Edit20.Text);
i:=1;
x:=0.1-x0*x0+2*y0*z0;
y:=-0.2+y0*y0-3*x0*z0;
z:=0.3-z0*z0-2*x0*y0;
repeat
i:=i+1;
x0:=x;
y0:=y;
z0:=z;
x:=0.1-x0*x0+2*y*z;
y:=-0.2+y0*y0-3*x0*z0;
z:=0.3-z0*z0-2*x0*y0;
until ((abs(x-x0)<eps)and(abs(y-y0)<eps)and(abs(z-z0)<eps));
Edit8.Text:=FloatToStr(x);
Edit9.Text:=FloatToStr(y);
Edit10.Text:=FloatToStr(z);
Edit11.Text:=IntToStr(i);
end;
:
> restart;
> x0:=0:
y0:=0:
z0:=0:
> f1:=0.1-x0^2+2*y0*z0;
f2:=-0.2+y0^2-3*x0*z0;
f3:=0.3-z0^2-2*x0*y0;
ff1:=0.1-f1^2+2*f2*f3;
ff2:=-0.2+f2^2-3*f1*f3;
ff3:=0.3-f3^2-2*f1*f2;
x:=(x0*ff1-f1^2)/(ff1-2*f1+x0);
y:=(y0*ff2-f2^2)/(ff2-2*f2+y0);
z:=(z0*ff3-f3^2)/(ff3-2*f3+z0);
i:=1;
while (abs(x-x0)>0.0001)do
x0:=x:
y0:=y:
z0:=z:
f1:=0.1-x0^2+2*y0*z0;
f2:=-0.2+y0^2-3*x0*z0;
f3:=0.3-z0^2-2*x0*y0;
ff1:=0.1-f1^2+2*f2*f3;
ff2:=-0.2+f2^2-3*f1*f3;
ff3:=0.3-f3^2-2*f1*f2;
x:=(x0*ff1-f1^2)/(ff1-2*f1+x0);
y:=(y0*ff2-f2^2)/(ff2-2*f2+y0);
z:=(z0*ff3-f3^2)/(ff3-2*f3+z0):
i:=i+1;
end do:
:
:
3.2
:
> U:=(0.1-x^2+2*y*z-x)^2+(-0.2+y^2-3*x*z-y)^2+(0.3-z^2-2*x*y-z)^2;
:
> Ux:= diff(U,x);
Uy:= diff(U,y);
Uz:= diff(U,z);
:
> x:=0;
y:=0;
z:=0;
> N1:=2*(.1-x^2+2*y*z-x)*(-2*x-1)-6*(-.2+y^2-3*x*z-y)*z-4*(.3-z^2-2*x*y-z)*y;
> N2:=4*(.1-x^2+2*y*z-x)*z+2*(-.2+y^2-3*x*z-y)*(2*y-1)-4*(.3-z^2-2*x*y-z)*x;
> N3:=4*(.1-x^2+2*y*z-x)*y-6*(-.2+y^2-3*x*z-y)*x+2*(.3-z^2-2*x*y-z)*(-2*z-1);
> x:=x-lambda*N1;
y:=y-lambda*N2;
z:=z-lambda*N3;
i:=1;
> N1:=2*(.1-x^2+2*y*z-x)*(-2*x-1)-6*(-.2+y^2-3*x*z-y)*z-4*(.3-z^2-2*x*y-z)*y;
N2:=4*(.1-x^2+2*y*z-x)*z+2*(-.2+y^2-3*x*z-y)*(2*y-1)-4*(.3-z^2-2*x*y-z)*x;
N3:=4*(.1-x^2+2*y*z-x)*y-6*(-.2+y^2-3*x*z-y)*x+2*(.3-z^2-2*x*y-z)*(-2*z-1);
x:=x-lambda*N1;
y:=y-lambda*N2;
z:=z-lambda*N3;
> while (abs(N3)>0.0001) do
N1:=2*(.1-x^2+2*y*z-x)*(-2*x-1)-6*(-.2+y^2-3*x*z-y)*z-4*(.3-z^2-2*x*y-z)*y:
N2:=4*(.1-x^2+2*y*z-x)*z+2*(-.2+y^2-3*x*z-y)*(2*y-1)-4*(.3-z^2-2*x*y-z)*x:
N3:=4*(.1-x^2+2*y*z-x)*y-6*(-.2+y^2-3*x*z-y)*x+2*(.3-z^2-2*x*y-z)*(-2*z-1):
x:=x-lambda*N1:
y:=y-lambda*N2:
z:=z-lambda*N3:
i:=i+1:
end do:
:
:
:
procedure TForm1.Button1Click(Sender: TObject);
const
lambda=-0.0001;
n=3;
type mas=array[1..n]of real;
var //x,y,z:real;
Xp,nab,v:mas;
i:integer;
eps:real;
function max(x:mas):real;
var s:real;
i:integer;
begin s:=abs(x[1]);
for i:=2 to 4 do if abs(x[i])>s then s:=abs(x[i]);
max:=s;
end;
Procedure add(var a,b:mas);
var
i:integer;
begin
for i:=1 to n do
begin
a[i]:=a[i]+b[i];
end;
end;
Procedure mult(a:mas;c:real;var v:mas);
var
i:integer;
begin
for i:=1 to n do
begin
v[i]:=a[i]*c;
end;
end;
procedure nabla(Xp:mas; var nab:mas);
begin
nab[1]:=2*(0.1-xp[1]*xp[1]+2*xp[2]*xp[3]-xp[1])*(-2*xp[1]-1)-6*(-0.2+xp[2]*xp[2]-3*xp[1]*xp[3]-xp[2])*xp[3]-4*(0.3-xp[3]*xp[3]-2*xp[1]*xp[2]-xp[3])*xp[2];
nab[2]:=4*(0.1-xp[1]*xp[1]+2*xp[2]*xp[3]-xp[1])*xp[3]+2*(-0.2+xp[2]*xp[2]-3*xp[1]*xp[3]-xp[2])*(2*xp[2]-1)-4*(0.3-xp[3]*xp[3]-2*xp[1]*xp[2]-xp[3])*xp[1];
nab[3]:=4*(0.1-xp[1]*xp[1]+2*xp[2]*xp[3]-xp[1])*xp[2]-6*(-0.2+xp[2]*xp[2]-3*xp[1]*xp[3]-xp[2])*xp[1]+2*(0.3-xp[3]*xp[3]-2*xp[1]*xp[2]-xp[3])*(-2*xp[3]-1);
end;
begin
Xp[1]:=StrToFloat(Edit1.Text);
Xp[2]:=StrToFloat(Edit2.Text);
Xp[3]:=StrToFloat(Edit3.Text);
eps:=StrToFloat(Edit20.Text);
repeat
nabla(Xp,nab);
mult(nab,lambda,v);
add(Xp,v);
i:=i+1;
until max(nab)<eps;
Edit4.Text:=FloatToStr(Xp[1]);
Edit5.Text:=FloatToStr(Xp[2]);
Edit6.Text:=FloatToStr(Xp[3]);
Edit7.Text:=IntToStr(i);
//Edit21.Text:=IntToStr(kk);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
x0,y0,z0,x,y,z,eps: real;
begin
x0:=StrToFloat(Edit1.Text);
y0:=StrToFloat(Edit2.text);
z0:=StrToFloat(Edit3.Text);
eps:=StrToFloat(Edit20.Text);
i:=1;
x:=0.1-x0*x0+2*y0*z0;
y:=-0.2+y0*y0-3*x0*z0;
z:=0.3-z0*z0-2*x0*y0;
repeat
i:=i+1;
x0:=x;
y0:=y;
z0:=z;
x:=0.1-x0*x0+2*y*z;
y:=-0.2+y0*y0-3*x0*z0;
z:=0.3-z0*z0-2*x0*y0;
until ((abs(x-x0)<eps)and(abs(y-y0)<eps)and(abs(z-z0)<eps));
Edit8.Text:=FloatToStr(x);
Edit9.Text:=FloatToStr(y);
Edit10.Text:=FloatToStr(z);
Edit11.Text:=IntToStr(i);
end;
3.3
:
> restart;
> with(LinearAlgebra):
> f1:=0.1-x0^2+2*y0*z0-x0;
> f2:=-0.2+y0^2-3*x0*z0-y0;
> f3:=0.3-z0^2-2*x0*y0-z0;
> f1x:=diff(f1,x0);
> f1y:=diff(f1,y0);
> f1z:=diff(f1,z0);
> f2x:=diff(f2,x0);
> f2y:=diff(f2,y0);
> f2z:=diff(f2,z0);
> f3x:=diff(f3,x0);
> f3y:=diff(f3,y0);
> f3z:=diff(f3,z0);
> A:=<<f1x|f1y|f1z>,<f2x|f2y|f2z>,<f3x|f3y|f3z>>;
, :
> x0:=0;y0:=0;z0:=0;
> A:=A;
> A1:=A^(-1);
> f:=<f1,f2,f3>;
> X0:=<x0,y0,z0>:
> X:=Add(X0,(Multiply(A1,f)),1,-1);
> X0:=X;
> x0:=X[1];y0:=X[2];z0:=X[3];
> A:=<<f1x|f1y|f1z>,<f2x|f2y|f2z>,<f3x|f3y|f3z>>;
> A1:=A^(-1);
> f:=<f1,f2,f3>;
> X:=Add(X0,(Multiply(A1,f)),1,-1);
> i:=2:
> while (Norm(f))>0.0001 do
X0:=X;
x0:=X[1];y0:=X[2];z0:=X[3];
A:=<<f1x|f1y|f1z>,<f2x|f2y|f2z>,<f3x|f3y|f3z>>;
A1:=A^(-1);
f:=<f1,f2,f3>;
X:=Add(X0,(Multiply(A1,f)),1,-1);
i:=i+1;
end do:
> X:=X;
:
:
procedure TForm1.Button4Click(Sender: TObject);
type mas=array[1..3]of real;
matr=array[1..3,1..3]of real;
var a,a1:matr;
i,j:integer;
x,y,z,eps:real;
f,xk,xkk,temp:mas;
procedure jacobi(x,y,z:real; var a:matr);
begin
a[1,1]:=-2*x-1;
a[1,2]:=2*z;
a[1,3]:=2*y;
a[2,1]:=-3*z;
a[2,2]:=2*y-1;
a[2,3]:=-3*x;
a[3,1]:=-2*y;
a[3,2]:=-2*x;
a[3,3]:=-2*z-1;
end;
procedure inverse(a:matr;var a1:matr);
var i,j:integer;
det:real;
s:matr;
begin
det:=a[1,1]*a[2,2]*a[3,3]+a[2,1]*a[3,2]*a[1,3]+a[1,2]*a[2,3]*a[3,1]-a[3,1]*a[2,2]*a[1,3]-a[3,2]*a[2,3]*a[1,1]-a[2,1]*a[1,2]*a[3,3];
s[1,1]:=a[2,2]*a[3,3]-a[2,3]*a[3,2];
s[1,2]:=-a[1,2]*a[3,3]+a[1,3]*a[3,2];
s[1,3]:=a[1,2]*a[2,3]-a[1,3]*a[2,2];
s[2,1]:=-a[2,1]*a[3,3]+a[2,3]*a[3,1];
s[2,2]:=a[1,1]*a[3,3]-a[1,3]*a[3,1];
s[2,3]:=-a[1,1]*a[2,3]+a[1,3]*a[2,1];
s[3,1]:=a[2,1]*a[3,2]-a[2,2]*a[3,1];
s[3,2]:=-a[1,1]*a[3,2]+a[1,2]*a[3,1];
s[3,3]:=a[1,1]*a[2,2]-a[1,2]*a[2,1];
for i:=1 to 3 do
for j:=1 to 3 do
a1[i,j]:=(1/det)*s[i,j];
end;
procedure fx(x,y,z:real; var f:mas);
begin
f[1]:=-x-x*x+2*y*z+0.1;
f[2]:=-y+y*y-3*x*z-0.2;
f[3]:=-z-z*z-2*x*y+0.3;
end;
procedure minus(x,y:mas; var z:mas);
var i:integer;
begin
for i:=1 to 3 do
z[i]:=x[i]-y[i];
end;
function max(f:mas):real;
var p:real;
i:integer;
begin
p:=0;
for i:=1 to 3 do
if abs(f[i])>p then p:=abs(f[i]);
max:=p;
end;
procedure mult(a:matr;b:mas;var c:mas);
begin
c[1]:=a[1,1]*b[1]+a[1,2]*b[2]+a[1,3]*b[3];
c[2]:=a[2,1]*b[1]+a[2,2]*b[2]+a[2,3]*b[3];
c[3]:=a[3,1]*b[1]+a[3,2]*b[2]+a[3,3]*b[3];
end;
begin
xk[1]:=StrToFloat(Edit1.Text);
xk[2]:=StrToFloat(Edit2.Text);
xk[3]:=StrToFloat(Edit3.Text);
eps:=StrToFloat(Edit20.Text);
i:=0;
repeat
fx(xk[1],xk[2],xk[3],f);
jacobi(xk[1],xk[2],xk[3],a);
inverse(a,a1);
mult(a1,f,temp);
minus(xk,temp,xk);
i:=i+1;
until max(f)<eps;
Edit12.Text:=FloatToStr(xk[1]);
Edit13.Text:=FloatToStr(xk[2]);
Edit14.Text:=FloatToStr(xk[3]);
Edit15.Text:=IntToStr(i);
end;
3.4
, , :
> with(LinearAlgebra):
> f1x:=diff(f1,x0);
> f1y:=diff(f1,y0);
> f1z:=diff(f1,z0);
> f2x:=diff(f2,x0);
> f2y:=diff(f2,y0);
> f2z:=diff(f2,z0);
> f3x:=diff(f3,x0);
> f3y:=diff(f3,y0);
> f3z:=diff(f3,z0);
> A:=<<f1x|f1y|f1z>,<f2x|f2y|f2z>,<f3x|f3y|f3z>>;
> x0:=0;y0:=0;z0:=0;
> A:=A;
> A1:=A^(-1);
> f:=<f1,f2,f3>;
> X0:=<x0,y0,z0>;
> X:=Add(X0,(Multiply(A1,f)),1,-1);
> X0:=X;
> x0:=X[1];y0:=X[2];z0:=X[3];
> f:=<f1,f2,f3>;
> i:=1;
> while (Norm(f))>0.0001 do
X0:=X;
x0:=X[1];y0:=X[2];z0:=X[3];
f:=<f1,f2,f3>;
X:=Add(X0,(Multiply(A1,f)),1,-1);
i:=i+1;
end do;
:
:
procedure TForm1.Button2Click(Sender: TObject);
type mas=array[1..3]of real;
matr=array[1..3,1..3]of real;
var x,y,z,ex,ey,ez,eps,b,c,d:real;
r,xk,f,temp:mas;
a,h,w,a1:matr;
i,kk: integer;
procedure jacobi(x,y,z:real; var a:matr);
procedure inverse(a:matr;var a1:matr);
procedure fx(x,y,z:real; var f:mas);
procedure minus(x,y:mas; var z:mas);
function max(f:mas):real;
procedure mult(a:matr;b:mas;var c:mas);
//
begin
xk[1]:=StrToFloat(Edit1.Text);
xk[2]:=StrToFloat(Edit2.Text);
xk[3]:=StrToFloat(Edit3.Text);
eps:=StrToFloat(Edit20.Text);
i:=0;
jacobi(xk[1],xk[2],xk[3],a);
inverse(a,a1);
repeat
fx(xk[1],xk[2],xk[3],f);
mult(a1,f,temp);
minus(xk,temp,xk);
i:=i+1;
until max(f)<eps;
Edit16.Text:=FloatToStr(xk[1]);
Edit17.Text:=FloatToStr(xk[2]);
Edit18.Text:=FloatToStr(xk[3]);
Edit19.Text:=IntToStr(i);
.
. , . , , - . . , - , .
, . , . , , .
.
. , , () . , , . , . , , . , . , , .
, , . .
, . , , . , . , . - , , . , , . . , .
.
, . , - , . , , . , . , .
.
1. .., .., .. . .: , 2000.
2. .., .., , ,., 2001.
3. .., .., .. . .: , 1994.
4. .., .. ..: , 1989.
5. .., , .
: :
Copyright (c) 2025 Stud-Baza.ru , , , .