LEAD

感谢关注matlab爱好者公众号!如果公众号文章对您有帮助,别忘了点击分享和“在看”哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言!

本文作者:过冷水

优化算法的讲解姗姗来迟,过冷水在此感到十分的抱歉。本节将会讲到在数值优化中经常用到的两个知识点:迭代法和终止条件。

迭代法

迭代法的基本思想是:在给出f(x)的目标值附近的一个初始估计点x(0)后,计算一系列的点列x(k)(k=1,2,…),希望点列{x(k)}的极限x*就是f(x)对应的目标值。点列有下式给出:

式中:d(k)为一个向量;λk为一个实数(称为步长)。当d(k)与λk确定之后,由x(k)就可以唯一的地确定x(k+1),依次下去就可以求出点列x(k)。如下图即为用迭代法使得f(x)趋向某个变化如图所示。

现给出迭代法的基本代码

clear allfx='function';x=x0;f0=eval(fx);while %循环的具体判断条件    x=x0;f0=eval(fx);    xa=x0+a*lamda;x=xa;fa=eval(fx);    x0=xa;end

迭代法可以代替手算通过赋值自动计算在数值优化的作用不言而喻,在后面的优化算法会经常看见迭代法的身影,平常解决一些计算问题也可以用迭代法自动计算。

终止准则

一个问题不可能让其永远迭代下去,要有一个终止准则,迭代法的目的是通过迭代运算的方法使得我们函数值接近目标值。在计算中常用的终止标准中过冷水能想到的有以下几种:

变化趋势为终止条件

当函数的变化趋势不断减小,甚至不变时,继续迭代下去就没有必要了,因此终止。

如例:

代码

clear allfx='exp(x)';ezplot(fx,[-5 10]);x0=10;eps=1;i=0;while eps>0.01    i=1+i;    x=x0;f0=eval(fx);    xa=x0-0.2*1;x=xa;fa=eval(fx);    eps=abs(fa-f0);    Fa(i)=fa;   Xa(i)=xa;    x0=xa;endhold onplot(Xa,Fa,'*');legend('原函数','迭代法');

接近具体值为终止条件

当我们知道函数的具体值,需要求其自变量的值,于是就可以通过迭代法确定自变量的范围。

clear allfx='x^5-x^3-x^2-500';ezplot(fx,[-10 10])x0=6;eps=120;i=0;while eps>0.01;    i=1+i;    x=x0;f0=eval(fx);    xa=x0-0.0001*1;x=xa;fa=eval(fx);    eps=abs(0-fa);    Fa(i)=fa;   Xa(i)=xa;    x0=xa;endhold onezplot('0',[-10 10]);plot(Xa,Fa,'*');legend('原函数','y=0','迭代值');

变化趋势转折点为终止条件

该方法在求极值的时候可以应用。

clear allfx='sin(x^2)';fig = figure;ezplot(fx,[1.4 2.8])xa=2.6;x=xa;fa=eval(fx);xb=xa-0.0001*1;x=xb;fb=eval(fx);i=0while fb    i=1+i    x=xa;fa=eval(fx);    xb=xa-0.0001*1;x=xb;fb=eval(fx);    fb-fa    xa=xb;    Fa(i)=fa;    Xa(i)=xa;endhold onplot(Xa,Fa,'*');legend('原函数','迭代值')

可以设为终止条件的标准有很多,在此只是简单的举例几种,在遇到具体问题时,终止条件的选择一般依据自己的问题而设定,一般在过冷水自己接触到了有:最小均方差、最大相关性,变化趋势这三种作为终止条件。

确定了迭代方法和终止条件,就可以进行简单的数值训练了。现在给出

MATLAB算法の二分法案列。二分法是优化算法中原始的一种方法了。二分法有助于学习其它算法。

本期给出的案例都比较简单,实际求解方法不需要用到迭代法,只是为了让读者容易理解选的案例比较简单,实际二狗遇到的问题因为方程过于复杂,用MATLAB自带函数是无法求导、求零点,直接求极值,这个时候用迭代法就十分有效寻求答案,甚至牛顿法或其它算法都不一定能求解,简单、粗暴、实用。

本期过冷水的讲解就到此为,特此说明前段时间因为公众号被举报的原因,过冷水的情绪有受影响,但还不至于自暴自弃的想放弃,只过不恰好上半年结尾,手头有事要做连载一直没有更新,也因为始终欠大家一个连载,所以也督促我赶快更新。于是终于赶出来了,坚持不容易,读者的支持才是过冷水前进的动力。

往期阅读

图论碎碎念(2.2)

MATLAB算法の二分法

大话matlabの通用对话框

MATLAB算法の二分法改进版

用matlab打造属于自己的密码生成器

MATLAB程序开发器之一      GUIDE简介

温馨提示

长期坚持创作不易,如果您喜欢这篇推文,烦请有空点个赞,以资鼓励!喜欢就关注一下哦,谢谢!

在看点这里

matlab求条件概率密度_数值优化方法—迭代法amp;终止条件相关推荐

  1. matlab求pi值的三种方法

    https://www.icourse163.org/learn/CSU-1002475002?tid=1450231442#/learn/content?type=detail&id=121 ...

  2. Matlab求矩阵的逆(三种方法)

    Matlab求矩阵的逆(三种方法) 说明:若所求矩阵为非奇异矩阵(可逆矩阵),则可以精确求得其逆矩阵:若所求矩阵为奇异矩阵,则所求出的逆矩阵是近似的(不精确). 下面以矩阵A为例. inv()方法 A ...

  3. el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  4. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  5. l bfgs算法java代码_数值优化:理解L-BFGS算法

    译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...

  6. 大连理工优化方法matlab,大连理工大学2016年秋季优化方法大作业.pdf

    优化方法 期末上机大作业 姓 名:李岚松 学 部:电信学部电气工程 学 号 2016 年 11 月 9 日 1°最速下降法 //最速下降法主函数// function lls=di1titidu(x) ...

  7. java spring 条件注解_【Spring】Spring高级话题-条件注解-@Condition

    进行本示例的演示,需要先配置好Maven和Spring哦. 见: [Spring]基于IntelliJ IDEA搭建Maven 分析 通过profile,我们可以获得不同的profile,我们可以获得 ...

  8. python求不规则图形面积_使用蒙特卡洛方法求解不规则图形的面积

    使用蒙特卡洛方法求解不规则图形的面积 周绪达 [摘 要] [摘 要]蒙特卡洛方法是一种以计算机为工具,通过抽样统计作为手 段的一种解决问题的方法,在许多领域都有广泛应用.论文基于蒙特卡洛方法, 利用 ...

  9. matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数

    帮助你理解线性代数与机器学习紧密结合的核心内容 下文节选自北大出版社<机器学习线性代数基础>, [遇见]已获授权许可. 这本书不同于传统教材, 从新的角度来介绍线性代数的核心知识, 讲解也 ...

  10. matlab求傅里叶级数展开式_连续时间的傅里叶级数

    如果信号x(t)是周期信号,那么对于所有t,存在一个最小正数T,使得x(t)=x(t+T)其中T为这个周期信号的最小正周期.根据周期函数的周期性:x(t)=x(t+N*T)(N为整数) 称为这个信号的 ...

最新文章

  1. SQL Server 表分区注意事项(转载)
  2. poj 1947(树形dp+背包问题)
  3. poj2976 Dropping tests(01分数规划 好题)
  4. C#算法设计排序篇之10-桶排序(附带动画演示程序)
  5. C++primer 9.3.3节练习
  6. 计算机考研需要看数据库吗,05报考华中科技计算机系数据库所的我复试经历
  7. vm15不支持linux,每个处理程序的多个VMExtensions不支持操作系统类型'Linux
  8. java正则表达式 后顾,正则表达式:从Copy到手写
  9. 9位工作流业内专家联袂推荐
  10. 重载下标操作符,检查内存越界
  11. node mysql gbk_nodejs gb2312、GBK中文乱码解决方法
  12. C/C++[sort( )]排序
  13. .NET IO 复习中的误区
  14. 这游戏全服只有一个玩家,硬是坚挺了18年,官方竟还推新版本?
  15. xmapp教程及扩展
  16. 关于短路保护的三极管详解
  17. linux系统键盘关机快捷键,Linux三种关机/重启系统的命令
  18. 4k显示器用html好还是dp,4k显示器用hdmi还是dp
  19. IT开发团队分工及内容
  20. 你所不了解的分布性系统之高可用篇

热门文章

  1. c语言编程输出等腰三角形,C语言输出等腰三角形
  2. 发一款资源查看,编辑软件,可以编辑dll,exe,res等后缀名的文件的小东东(Reshacker汉化版)
  3. react中axios封装ajax,【逆流而上】[React]axios的封装使用
  4. form表单提交到controller时出现404的尴尬问题(或链接不到.action、链接不到.do跳404的问题)
  5. 如此详细的尾灯模组方案,不看看吗?
  6. TJA1403状态模式
  7. 大力出奇迹----旅行背包
  8. java万年历有农历_家庭农民历五行曰历,日历为什么叫“万年历”
  9. 欧姆龙PLC-小型PLC概述
  10. python矩阵标准化_python – 有效地行标准化矩阵