- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
优化算法及应用报告
(一)用Newton法求函数最优解
1.1课本P117页例4.3.2
1.2方法步骤
Step1:给定初始点
Step2:对函数求一次导数得到df1,若 ,则迭代停止,输出
否则,二次求导dff2=0时,停止,解题失败。
当dff2不等于0时,转下一步。
Step3:计算 ,如果 ,停止迭代,输出,否则,k=k+1,转step2
1.3计算结果:
Df1= atan(x)(matlab中arctan(x)用atan(x)表示)
Dff2= 1/(x^2 + 1)
(1)t1=1时
t1=1答案
K
tk
df1
1/dff2
1
1
0.7854
2
2
-0.5708
-0.5178
1.3258
3
0.1169
0.1163
1.0137
4
-0.001061
接近最优解 =0.
(2)t1=2时
t1=2答案
k
tk
df1
1/dff2
1
2
1.1071
5
2
-3.5357
-1.2952
13.50
3
13.95
1.4程序,见附件test1,newton
Test1 函数带入
clc
clear all
syms x t
f1=int(atan(x),x,0,t);
beex=newton(f1,t,1,0.5);
newton 牛顿方法的函数
function[besx]=newton(f1,t,t1,c) %step1
syms t
df1=diff(f1,t); %函数一次求导
dff2=diff(f1,t,2); %函数二次求导
while(true)
if(abs(subs(df1,t1))c) %step2,满足条件,迭代停止.
disp(t1);
break
%dff2等于0失败,否则转step3
else
tk=t1-(subs(df1,t1))/(subs(dff2,t1))%step3
if(abs(tk-t1)c)
besx=tk; %满足绝对值内tk-t1小于c,停止迭代,输出tk
disp(besx);break
else
t1=tk %条件不成立,k=k+1,转step2,t1=tk,构造循环
end
end
end
end
1.5程序结果截图
(二)用最速下降法求解(UMP)
2.1课本P124页例4.4.2
取初始点 ,终止误差
2.2方法步骤
Step1:给定初始点 ,终止误差 0,令k=0;
Step2:用ccc1作为函数对x1的偏导,ccc2作为函数对x2的偏导,ccc3作为 ,计算可得ccc3,若,则停止迭代,输出
否则,转step3
Step3:取pk=-ccc3
Step4:利用第一问的牛顿法求最优解tk。
同时,令x0 :x0=x0+tk*pk;
k=k+1,转step2
2.3计算结果:
用牛顿法解得t0约为0.0200(结果见2.5附图)
而
2.4程序,见附件test2,newton2,,funump
Test2 题目函数带入
clc
clear all
syms x1 x2 t
dfdx1=diff((x1)^2+25*(x2)^2,x1);
dfdx2=diff((x1)^2+25*(x2)^2,x2);
funump([2;2],10^(-6),0,dfdx1,dfdx2,10)
newton 牛顿方法的函数(作为引用)
%同第一问,不再注释
function[beex]=newton2(f1,t,t1,c)
syms t
df1=diff(f1,t);
ddf1=diff(f1,t,2);
t1=0;
while(true)
if(abs(subs(df1,t1))c)
beex=t1;
disp(beex);
break
else
tk=t1-(subs(df1,t1))/(subs(ddf1,t1));
if(abs(tk-t1)c)
您可能关注的文档
- mapgis明码文件格式.doc
- MapGIS中影像文件的投影变换、裁切和拼接.doc
- Mapinfo区域分解图解.doc
- Mapinfo圈选道路周边一定范围内的基站方法.doc
- MapInfo自定义选区扩建缓冲区域100米.doc
- Maple和Matlab是公式推导和计算的软件.doc
- Maple入门教程A4- 图形和动画.pdf
- Maple提高教程B10- 客户化用户界面.pdf
- MARC模拟一般流程.doc
- mark one阀门技术资料.pdf
- Matatalab玩法案例:阿拉伯数字怎么写?玛塔机器人有高招.doc
- Material Studio的Sorption模块用于MOF材料.ppt
- Materials Studio软件简介及基本操作.ppt
- Mathematica笔记本特殊符号的输入.pdf
- Mathematica对初中数学课堂教学的促进-最新教育资料.doc
- Mathematica解线性方程组迭代法详解-Jacobi迭代-Gauss-Seidel迭代.pdf
- Mathematica中的常用函数汇总.pdf
- matlab Jacobi迭代法Gauss-seidel和SOR迭代.doc
- MATLAB Simulink库模块中英对照表(图文对照).pdf
- Matlab 编程方法及仿真实验.pdf
文档评论(0)