优化方法MATLAB编程 - 大连理工大学 - 图文

更新时间:2023-12-09 04:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

大连理工大学优化方法上机大作业

优化方法上机大作业

学 院: 姓 名: 学 号:

指导老师: 肖 现 涛

大连理工大学优化方法上机大作业

第一题

源程序如下:

function zy_x = di1ti(x)

%di1ti是用来求解优化作业第一题的函数。 x0=x; yimuxulong=0.000001; g0=g(x0);s0=-g0; A=2*ones(100,100); k=0; while k<100

lanmed=-(g0)'*s0/(s0'*A*s0); x=x0+lanmed*s0; g=g(x); k=k+1;

if norm(g)

fprintf('After %d iterations,obtain the optimal solution.\\n \\n The optimal solution is \\n %f.\\n\\nThe optimal \

1

大连理工大学优化方法上机大作业

break; end

miu=norm(g)^2/norm(g0)^2; s=-g+miu*s0; g0=g; s0=s;x0=x; end

function f=f(x)

f=(x'*ones(100,1))^2-x'*ones(100,1);

function g=g(x)

g=(2*x'*ones(100,1))*ones(100,1)-ones(100,1);

代入x0,运行结果如下: >> x=zeros(100,1); >> di1ti(x)

After 1 iterations,obtain the optimal solution.

The optimal solution is -0.250000.

The optimal \ans =0.005*ones(100,1).

2

大连理工大学优化方法上机大作业

第二题

1. 最速下降法。 源程序如下:

function zy_x=di2titidu(x) %该函数用来解大作业第二题。 x0=x; yimuxulong=1e-5; k=0; g0=g(x0); s0=-g0; while k>=0

if norm(g0)

lanmed=10;c=0.1;i=0; while i>=0&i<100 x=x0+lanmed*s0;

if f(x)>(f(x0)+c*lanmed*g0'*s0) lanmed=lanmed/2; i=i+1; else break;

3

大连理工大学优化方法上机大作业

end end

x=x0+lanmed*s0; x0=x; g0=g(x); s0=-g0; k=k+1; end end zy_x=x; zyj=f(x);

fprintf('after %d iterations,obtain the optimal solution.\\n\\nThe optimal solution is %f.\\n\\n The optimal \

function f=f(x) x1=[1 0 0 0]*x; x2=[0 1 0 0]*x; x3=[0 0 1 0]*x; x4=[0 0 0 1]*x;

f=(x1-1)^2+(x3-1)^2+100*(x2-x1^2)^2+100*(x4-x3^2)^2;

function g=g(x) x1=[1 0 0 0]*x; x2=[0 1 0 0]*x; x3=[0 0 1 0]*x; x4=[0 0 0 1]*x;

g=[2*(x1-1)-400*x1*(x2-x1^2);200*(x2-x1^2);2*(x3-1)-400*x3*(x4-x3^2);200*(x4-x3^2)];

4

本文来源:https://www.bwwdw.com/article/zqy5.html

Top