MATLAB实现无约束求解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x2=C(2);
df=diff(2*x1^2+3*x2^2-8*x1+10,s);
s=solve(df)
X0=eval(X0+s*e2);
A=[A X0];
x1=X0(1);
x2=X0(2);
b=subs(2*x1^2+3*x2^2-8*x1+10);
%计算误差
a=[a b];
B=A(:,k+1)-A(:,k);
symstsx1x2;
e1=[1;0];
e2=[0;1];
%沿e1方向寻找最优解
C=X0+t*e1;
x1=C(1);
x2=C(2);
df=diff(2*x1^2+3*x2^2-8*x1+10,t);
t=solve(df)
X0=eval(X0+t*e1);
%沿e2方向寻找最优解
C=X0+s*e2;
x1=C(1);
5/17
2
5/3
3
5/17
4
5/3
5
5/17
fx1=diff(f,'x1');%求偏导
fx2=diff(f,'x2');
g=[fx1 fห้องสมุดไป่ตู้2]';%梯度
x1=a;
x2=b;
g1=subs(g)%求解梯度方向
x0=[x1 x2]';
k=0;
norm(g1)
while(abs(norm(g1))>=e)
symsx1x2delta
x=x0-delta*g1;
x1=x(1);
x2=x(2);
f=1.5*x1^2+0.5*x2^2-x1*x2-2*x1;
v=diff(f,delta);
delta=solve(v)
x0=x0-delta*g1%搜索到的点
x1=x0(1);
x2=x0(2);
g1=subs(g)
norm(g1)
k=k+1
end
计算结果:
k
0
-
1
err=double(sqrt(B(1)^2+B(2)^2))
k=k+1;
end
结果:
程序迭代两次计算出结果
二、试用梯度法求目标函数 的无约束最优解,初始点为 。
程序:
functiony=fs2steep(e,a,b)
symsx1x2delta
f=1.5*x1^2+0.5*x2^2-x1*x2-2*x1;
MATLAB实现无约束求解
一、试用坐标轮换法求目标函数 的无约束最优解,已设定初始值为 .
程序:
symstsx1x2;
f=2*x1^2+3*x2^2-8*x1+10;
e=0.001;
k=1;
X0=[1;2];
A=[1;2];
err=1;
x1=X0(1);
x2=X0(2);
a=eval(f);
while(err>e)
df=diff(2*x1^2+3*x2^2-8*x1+10,s);
s=solve(df)
X0=eval(X0+s*e2);
A=[A X0];
x1=X0(1);
x2=X0(2);
b=subs(2*x1^2+3*x2^2-8*x1+10);
%计算误差
a=[a b];
B=A(:,k+1)-A(:,k);
symstsx1x2;
e1=[1;0];
e2=[0;1];
%沿e1方向寻找最优解
C=X0+t*e1;
x1=C(1);
x2=C(2);
df=diff(2*x1^2+3*x2^2-8*x1+10,t);
t=solve(df)
X0=eval(X0+t*e1);
%沿e2方向寻找最优解
C=X0+s*e2;
x1=C(1);
5/17
2
5/3
3
5/17
4
5/3
5
5/17
fx1=diff(f,'x1');%求偏导
fx2=diff(f,'x2');
g=[fx1 fห้องสมุดไป่ตู้2]';%梯度
x1=a;
x2=b;
g1=subs(g)%求解梯度方向
x0=[x1 x2]';
k=0;
norm(g1)
while(abs(norm(g1))>=e)
symsx1x2delta
x=x0-delta*g1;
x1=x(1);
x2=x(2);
f=1.5*x1^2+0.5*x2^2-x1*x2-2*x1;
v=diff(f,delta);
delta=solve(v)
x0=x0-delta*g1%搜索到的点
x1=x0(1);
x2=x0(2);
g1=subs(g)
norm(g1)
k=k+1
end
计算结果:
k
0
-
1
err=double(sqrt(B(1)^2+B(2)^2))
k=k+1;
end
结果:
程序迭代两次计算出结果
二、试用梯度法求目标函数 的无约束最优解,初始点为 。
程序:
functiony=fs2steep(e,a,b)
symsx1x2delta
f=1.5*x1^2+0.5*x2^2-x1*x2-2*x1;
MATLAB实现无约束求解
一、试用坐标轮换法求目标函数 的无约束最优解,已设定初始值为 .
程序:
symstsx1x2;
f=2*x1^2+3*x2^2-8*x1+10;
e=0.001;
k=1;
X0=[1;2];
A=[1;2];
err=1;
x1=X0(1);
x2=X0(2);
a=eval(f);
while(err>e)