二分法 matlab应用,MATLAB算法の二分法[通俗易懂]

从今起准备连续多期介绍一些常用的算法,通过不断实践“算法到程序”这一过程来学习matlab编程,久而久之就可做到熟能生巧。今天要介绍的是二分法,它是一种古老且经典的、蕴含深刻哲理的算法。我们知道现实物理世界是有限的,而抛开物理意义却又是无限可分的,而二分法就是基于这种无限可分思想,可以说它是连接有限与无限的纽带。今天主要介绍二分法在数学寻根中的应用,毕竟为的是将算法程序化。要求单调函数f(x)在区…

大家好,又见面了,我是你们的朋友全栈君。

从今起准备连续多期介绍一些常用的算法,通过不断实践“算法到程序”这一过程来学习matlab编程,久而久之就可做到熟能生巧。

今天要介绍的是二分法,它是一种古老且经典的、蕴含深刻哲理的算法。我们知道现实物理世界是有限的,而抛开物理意义却又是无限可分的,而二分法就是基于这种无限可分思想,可以说它是连接有限与无限的纽带。今天主要介绍二分法在数学寻根中的应用,毕竟为的是将算法程序化。

c44a4272014087c41c45594cda565fab.png

要求单调函数f(x)在区间[a,b]上的根,且给定计算精度为e,用二分法寻根的过程大致如下:

1、分别计算f(a),f(b)的函数值,验证f(a)*f(b)是否小于0,若大小于0则说明在区间[a,b]上存在根。

2、计算区间求中点mid = (a+b)/2。

3、计算f(mid)的函数值,

① 若f(mid)=0,则mid就是函数的根;

② 若f(a)·f(mid)<0,则令b=mid;

③ 若f(mid)·f(b)<0,则令a=mid。

4、通过比较区间差绝对值与计算精度e的大小来判断是否达到预设条件,若|a-b|

问题定义:求函数f(x) = 3*x.^3-9*x.^2+5.6*x-7.5在区间[2,3]的根,计算精度为10^-6.

% 定义区间[2,3]

x = 2:0.1:3;

% 定义参考y值,即y=0的直线

ty = zeros(1,length(x));

% 定义在区间[2,3]上单调的函数fun

fun = @(x) 3*x.^3-9*x.^2+5.6*x-7.5;

y = fun(x);

% 绘制示意图

plot(x,y,’b.-‘,x,ty,’r–‘,’LineWidth’,3.5);

xlabel(‘x轴’);

ylabel(‘y轴’);

title(‘二分法寻根测试’);

% 定义计算精度ep和临时变量tmp

% 对于不知道循环次数的,用whlie来实现

while(tmp>ep)

if fun(a)*fun(b) < 0

mid = (a+b)/2;

if fun(a)*fun(mid) < 0

if fun(b)*fun(mid) < 0

tmp = abs(a-b);

disp(‘此区间不存在根!!!’);

JG = fun(mid);

disp([‘在区间[2,3]的近似解为’,num2str(JG)]);

% 绘制近似交点

plot(mid,JG,’r.’,’MarkerSize’,50);

效果图:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128038.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在触发思考

    在触发思考

    2022年1月11日
    48
  • 【转载】来自 GitHub 的系列渗透测试工具

    【转载】来自 GitHub 的系列渗透测试工具51CTO2019-04-03渗透测试Kali-GNU/Linux发行版,专为数字取证和渗透测试而设计。(https://www.kali.org/)ArchStrike-为安全专业人士和爱好者提供ArchGNU/Linux存储库。(https://archstrike.org/)BlackArch-基于GNU/Linux的分布式渗透测试…

    2022年5月22日
    38
  • ipynb后缀文件怎么打开「建议收藏」

    ipynb后缀文件怎么打开「建议收藏」ipynb,顾名思义,ipythonnotebook,哦,原来是用ipythonnotebook打开的啊,下面讲讲怎么安装ipythonnotebook(我的环境是win1064位python是2.7版本,如果要问为何是这个版本,我之后给你丢一个神秘的微笑)第一部分:安装ipython1:安装python,这个不说2:安装pip,这个也不说,网上有很多例子,一般装了py…

    2025年6月9日
    0
  • 嵌入式学习网站推荐[通俗易懂]

    嵌入式学习网站推荐[通俗易懂]嵌入式学习网站推荐  http://blog.chinaunix.net/uid-2413049-id-158374.html转到这里来是为了自己日后好找:-)2.  TheFirstStopfortheLatestICsandComponents非常好的关于微处理器,DSP,可以编程控制器资讯的网站,更新非常快。强烈推荐一些领导级别的人常去,了解行

    2022年5月23日
    31
  • 如何在 Python 中使用断点调试

    如何在 Python 中使用断点调试实际上没人能一次就写出完美的代码,除了我。但是世界上只有一个我。–林纳斯·托瓦兹(Linux之父) 既然不是神,写代码自然免不了要修改。修改代码的过程被称作调试,又叫 debug。 刚接触编程的人,往往对调试代码没有很深的认识,觉得把功能做出来就完事了。一旦程序运行出现问题,便无从下手。而实际开发中,调试代码通常要花费比新编写代码更多的时间。所谓“行百里者半于九十”,这句…

    2022年5月21日
    44
  • java 解析xml报文(字符串)「建议收藏」

    java 解析xml报文(字符串)「建议收藏」一:maven:<!–解析xml报文–><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1….

    2022年6月4日
    235

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号