2
: . .
..
: -200301
: ..
, ..:
(47)
, (47). :
1. (47).
2. , , .. (46).
3. i- , .2
4. : (47); ; , .
:
1. : xº , ε1 > 0, ε2> 0, M ;
2. n = 0;
3. : gradf(xⁿ);
4. || gradf(xⁿ) ||;
4.1) || gradf(xⁿ) || < ε1,
x*= xⁿ;
4.2) || gradf(xⁿ) || > ε1, 5);
5. n < M
5.1) , 6);
5.2) , x*= xⁿ;
6. φ(tn) = f(xⁿ tn * gradf(xⁿ));
7. xⁿ ¹ = xⁿ tn * gradf(xⁿ);
8. f(xⁿ ¹) f(xⁿ) < 0
8.1) , 9);
8.2) , tn= tn / 2 7);
9. ||xⁿ ¹ xⁿ ||< ε2 f(xⁿ ¹) f(xⁿ) < ε2
9.1) , x*= xⁿ ¹;
9.2) , n = n+1 3).
u = f (x 1, x 2,, xn). - M 0 . , . - x 1. , M 0 , x 1 . , x 1.
|
|
, x 2, . , , .. . x 3, x 4,, xn, x 1 xn .. M 0, M 1,, f . k - , f (Mk) .
, .
z=f (x, y), . . 1 . . M 0(x 0, y 0) . , M 1(x 1, y 0). , , M 2(x 1, y 1) ..
. , f (M 0), f (M 1), ? .
. 1.
, . . , . , . , , .
( ) . .
:
R2. (2) , - , .
(0) f(). (k) (3):
x(k+1)=x(k)+t(k)S(k) (k=0,1,2,...),
s(k)- , - (, S(k) 1, S(k)= {1,0,0,...,0}, x2, S(k)={0, 1, 0,...,0} ..); t(k) :
f(x(k)+ts(k)) --> min, t R1, (k=0,1,2,...),
, , .
R2 * , , (k), ~(k), x(k+1) (k=0, 1, 2,) (.2). k=0, (0)=(x1(0),x2(0)), ~(0)= (x1~(0),x2(0)), f(x1,x2(0)); f(x~(0))<=f(x(0)). x(1) f (x1~(0),x2) . k=1. , (1). (1), ~(1)= (x1~(1),x2(1)), f(x1,x2(1)) x(1); f(x~(1))<=f(x(1))<=f(x(0)). (2) , f(x1~(1),x2), 2, x1~(1), x(1), ..
e
||x(k+1) - x(k) ||<e (4)
|
|
:
clc
clear
%xx0=[2 3];
%xx0=[13 10];
xx0=[8.5 14.3];
[x11 x22]=meshgrid([-15:0.1:15],[-15:0.1:15]);
z=7.*x11.^2+2.*x11.*x22+5.*x22.^2-2.*x11-10.*x22;
contour(x11,x22,z);
hold on;
grid on;
syms x1 x2;
f=7*x1^2+2*x1*x2+5*x2^2-2*x1-10*x2;
eps=10^(-5);
h=1;
k=0;
plot(xx0(1),xx0(2),'o');
hold on
tic
while(1)
grad=[subs(diff(f,x1),[x1 x2],xx0)
subs(diff(f,x2),[x1 x2],xx0)];
l=norm(grad,inf);
grad1=grad./l;
fx0=subs(f,[x1 x2],xx0);
xxk=xx0-h*grad1';
fxk=subs(f,[x1 x2],xxk);
if (fxk<fx0)
fxp=fx0;
xxp=xx0;
while(fxk<fxp)
xxp=xxk;
xxk=xxp-h*grad1';
fxk=subs(f,[x1 x2],xxk);
xxp=xxk+h*grad1';
fxp=subs(f,[x1 x2],xxp);
plot(xxk(1),xxk(2),'.');
hold on
end
xx0=xxp;
plot(xx0(1),xx0(2),'o');
hold on
else
h=h/10;
end
if (h<eps)
break;
end
if (norm(grad,inf)<eps)
break;
end
k=k+1;
end
k
xxk
fxk
f=7*x1^2+2*x1*x2+5*x2^2-2*x1-10*x2;
xx0=[0 1];
:
clc
clear
%xx0=[2 3];
%xx0=[13 10];
xx0=[8.5 14.3];
[x11 x22]=meshgrid([-15:0.1:15],[-15:0.1:15]);
z=7.*x11.^2+2.*x11.*x22+5.*x22.^2-2.*x11-10.*x22;
contour(x11,x22,z);
hold on;
grid on;
plot(xx0(1),xx0(2),'o');
hold on;
syms x1 x2;
f=7*x1^2+2*x1*x2+5*x2^2-2*x1-10*x2;
eps=10^(-5);
h1=1;
h2=1;
k=0;
tic
while(1)
dfx1=subs(f,[x1 x2],[xx0(1) xx0(2)]);
xxk_=[xx0(1)+h1 xx0(2)];
xx_k=[xx0(1)-h1 xx0(2)];
dfx1_=subs(f,[x1 x2],xxk_);
df_x1=subs(f,[x1 x2],xx_k);
if (dfx1_<df_x1)&&(dfx1_<dfx1)
xxk=xxk_;
fxk=dfx1_;
fx0=dfx1;
while(fxk<fx0)
fx0=fxk;
xx0=xxk;
xxk=[xx0(1)+h1 xx0(2)];
fxk=subs(f,[x1 x2],xxk);
plot(xxk(1),xxk(2),'.');
hold on
end
else
if (df_x1<dfx1_)&&(df_x1<dfx1)
xxk=xx_k;
fxk=df_x1;
fx0=dfx1;
while(fxk<fx0)
fx0=fxk;
xx0=xxk;
xxk=[xx0(1)-h1 xx0(2)];
fxk=subs(f,[x1 x2],xxk);
plot(xxk(1),xxk(2),'.');
hold on
end
else
h1=h1/10;
end
plot(xx0(1),xx0(2),'o');
hold on
end
dfx2=subs(f,[x1 x2],[xx0(1) xx0(2)]);
xxk_=[xx0(1) xx0(2)+h2];
dfx2_=subs(f,[x1 x2],xxk);
xx_k=[xx0(1) xx0(2)-h2];
df_x2=subs(f,[x1 x2],xx_k);
if (dfx2_<df_x2)&&(dfx2_<dfx2)
xxk=xxk_;
fxk=dfx2_;
fx0=dfx2;
while(fxk<fx0)
fx0=fxk;
xx0=xxk;
xxk=[xx0(1) xx0(2)+h2];
fxk=subs(f,[x1 x2],xxk);
plot(xxk(1),xxk(2),'.');
hold on
end
else
if (df_x2<dfx2_)&&(df_x2<dfx2)
xxk=xx_k;
fxk=df_x2;
fx0=dfx2;
while(fxk<fx0)
fx0=fxk;
xx0=xxk;
xxk=[xx0(1) xx0(2)-h2];
fxk=subs(f,[x1 x2],xxk);
plot(xxk(1),xxk(2),'.');
hold on
end
else
h2=h2/10;
end
end
if((h1<eps)&&(h2<eps))
break;
end
plot(xx0(1),xx0(2),'+');
hold on
fx0=subs(f,[x1 x2],xx0);
k=k+1;
end
fx0
k
xx0
toc
f=7*x1^2+2*x1*x2+5*x2^2-2*x1-10*x2;
xx0=[0 1];
h=1; eps=10^(-5);
X0=[2 3]
|
|
1.683678 seconds | ||
0.924417 seconds |
X0=[13 10]
1.978522 seconds | ||
1.152933 seconds |
X0=[8.5 14.3]
2.023583 second | ||
1.675416 seconds |