用MATLAB体现牛顿高斯最优化方法

用MATLAB体现牛顿高斯最优化方法,第1张

《应用最优化方法及MATLAB实现》系统讲述如何将最优化方法实现为应用软件。系统阐述了各种无约束和带约束优化问题的计算方法和程序实现,内容包括:精确/非精确一维搜索、最速下降法、牛顿/拟牛顿法、共轭梯度法、单纯形法、内点法、积极集法、序列二次规划方法等。书中包含了必要的最优化理论知识,为得到最优化方法并用程序实现做准备。书中给出的许多应用优化技术是我们的最新研究成果,给出的优化程序是以专业编程技巧实现的最优化算法。书中还给出了大量的例子和习题。《应用最优化方法及MATLAB实现》可作为高等院校自动化、控制、系统工程、工业工程、计算机、应用数学、经济、管理、化工、材料、机械、能源等相关专业学生的教材,也可作为有关研究人员和工程技术人员的参考书。

你的y1,y2是什么?我没看懂你的代码,你的x没用到。

我在matlab里试了一下

tic;

for i = 1 : 10000

for j = 1 : 10000

end

end

toc;

单单是这样的空循环已经需要30分钟以上了。我可以让你自身的代码不出现循环。只调用build-in function或者需要一个额外下载的mex function。但我不保证30分钟之内算完。

还有个问题是,如果两跳线段在不画延长线的情况下画不出垂线的话算数吗?

MATLAB是一种解释性语言,从运行效率来说肯定远不如其他基本语言。但还是有些方法可以提高运行速度的:

1,MATLAB擅长于矩阵运算,但并不适用于循环,能不用循环的地方尽量用矩阵运算代替;

2,对于大维度的矩阵,要预先确定它的维度,比如用zeros(a,b,c)预先定义好,这样每次给矩阵赋值的时候就不用改变维度了,对运算速度的提高很明显,这点你可以用MATLAB自带的tic和toc命令测试。

3对于多重循环的将长的循环放在内循环。还有对有相似功能的命令的选择也对速度有影响。

如果对于计算量特别大的程序,用MATLAB是不怎么合适的哦,你可以把计算部分用其他语言,比如FORTRAN来实现。

以上就是关于用MATLAB体现牛顿高斯最优化方法全部的内容,包括:用MATLAB体现牛顿高斯最优化方法、求Matlab大神帮我看下如何能优化这个程序!!!、MATLAB优化问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9569331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存