二分法 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年4月11日 上午10:00
下一篇 2022年4月11日 上午10:20


相关推荐

  • 龙虾(OpenClaw)对个人用户的意义:Open、入口、记忆

    龙虾(OpenClaw)对个人用户的意义:Open、入口、记忆

    2026年3月13日
    3
  • callable线程使用_java线程结束用什么方法

    callable线程使用_java线程结束用什么方法接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返

    2022年10月17日
    5
  • PHP获取客户端IP地址方式[通俗易懂]

    PHP获取客户端IP地址方式[通俗易懂]一、如果没有使用代理服务器REMOTE_ADDR=客户端IPHTTP_X_FORWARDED_FOR=没数值或不显示$ip=$_SERVER[‘REMOTE_ADDR’];二、使用透明代理REMOTE_ADDR=最后一个代理服务器IPHTTP_X_FORWARDED_FOR=客户端真实IP(经过多个代理服务器时,这个值类似:221.5.252….

    2025年7月21日
    6
  • Linux采用yum方式安装及卸载软件

    Linux采用yum方式安装及卸载软件前言很多时候,我们在Linux中安装了软件,但是却不怎么会卸载,Linux不像Windows可以直接在控制面板中卸载。这篇文章肯定会帮助到你。收藏好了。正文1.采用yum方式安装软件yum方式安装软件是最方便的,自己一直践行的理论是能用yum绝不用源码编译,当然,yum方式的优点就是简单方便,但是它的不能自己定义安装插件,这点在我们需要自定义安装包时很不方便,在实际中,要看自己的应用场景…

    2022年6月2日
    48
  • MySQL数据库:explain执行计划详解

    MySQL数据库:explain执行计划详解

    2021年4月9日
    140
  • two bin system_system系统目录是什么

    two bin system_system系统目录是什么这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件, 在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。\system\app\AlarmClock.apk 闹钟\system\app\AlarmClock.odex\system\app\Browser.apk 浏览器\system\app\Browser.

    2022年10月10日
    5

发表回复

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

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