【源码】二分法的matlab实现「建议收藏」

二分法的matlab算法实现本篇是在课程学习中自己编程实现的二分法计算非线性方程或者超越方程近似根的算法,写一下,后边便于复习和期末课程设计引用。%二分法求根的matlab算法function[x0,n]=dichotomy(a,b,err,f_x)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%输入参数a为根的区间左端点%%输入参数b为根的区间右端点

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

二分法的matlab算法实现

本篇是在课程学习中自己编程实现的二分法计算非线性方程或者超越方程近似根的算法,写一下,后边便于复习和期末课程设计引用。

% 二分法求根的matlab算法
function [x0,n]=dichotomy(a,b,err,f_x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%输入参数a为根的区间左端点                         %
%输入参数b为根的区间右端点                         %
%输入参数err为误差精度                             %
% 输入参数f_x为待求根函数                          %
%输出参数x0为满足精度要求的根                      %
% 输出参数n为迭代的次数                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
n=ceil((log((b-a)./err)./log(2)-1));%求迭代次数
while(sign(f_x(a))==0)%如果a的函数值为0停止迭代输出x0为a的值,迭代次数为0
    x0=a;
    n=0;
    return;
end
while(sign(f_x(b))==0)%如果b的函数值为0停止迭代输出x0为b的值,迭代次数为0
    x0=b;
    n=0;
    return;
end
while(sign(f_x(a))~=sign(f_x(b)))%a、b符号不同进行区间二分
 x0=a/2+b/2;                     %区间中点
 if(sign(f_x(a))~=sign(f_x(x0)))%判断区间中点函数值与区间端点符号
     b=x0;                      %将中点赋值给符号相同的端点
      if(b-a<=err||abs(f_x(x0))<=err)%判断是否满足精度要求
     x0=a/2+b/2;                     
     return;
      else                          %不满足精度循环调用二分法
       dichotomy(a,b,err,f_x);
      end
 else
     a=x0;                          %将中点赋值给符号相同的端点
      if(b-a<=err||abs(f_x(x0))<=err)%判断是否满足精度要求
     x0=a/2+b/2;
     return;
      else                            %不满足精度循环调用二分法
       dichotomy(a,b,err,f_x);
      end
 end
end
    

引用实列:求解函数f(x)=x^3-x-1在区间[1,1.5]上的一个零点,误差不超过0.005
f=@(x)x^3-x-1
[x0,n]=dichotomy(1,1.5,0.005,f)
结果在这里插入图片描述

转载请注明出处!

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

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

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


相关推荐

  • rabbit mq exchange_exchange设置公司邮箱

    rabbit mq exchange_exchange设置公司邮箱上一篇,我们介绍了rabbimtmq的简单工作队列的使用方式,即生产者和消费者之间直接通过绑定相同的workqueue进行消息的发送和接收,如果业务逻辑比较简单,这样的方式也是可以用的,但在实际工作中,实际的业务场景远远比这个复杂,而且需要更加细粒度的对消息进行进行分发和接收,这就需要用到rabbitmq的另外一个组件exchange;顾名思义,exchange在rabbitmq中翻译为交换机…

    2022年10月3日
    2
  • msys2安装与使用_mingw使用教程

    msys2安装与使用_mingw使用教程一、安装官方下载地址http://www.msys2.org/指定好安装路径(一般D根目录即可),一路下一步就好。二、配置国内镜像、设置窗体修改颜色使用[清华大学开源软件镜像站]中的地址,修

    2022年8月6日
    8
  • win ce 编译运行自定义控件提示:Result code: 0x80040154 错误解决

    win ce 编译运行自定义控件提示:Result code: 0x80040154 错误解决

    2021年8月8日
    54
  • 什么是yuv420(苹果6sp升级13怎么样)

    在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,只有Y的图像就是灰度图像。YUV420sp与YUV420p的数据格式区别在于UV排列上的完全不同。420p它是先把U存放完后,再存放V,如下图。而420sp它是UV、UV这样交替存放的。有了上面的理论,我就可以准确的计算出一个YUV420在内存中存放的大小。

    2022年4月10日
    39
  • java中修饰符的用法_定义类的修饰符有哪些

    java中修饰符的用法_定义类的修饰符有哪些引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员。

    2025年8月20日
    5
  • 微信聊天内容制作生成器微信小程序源码/支持多种制作生成[通俗易懂]

    ☑️编号:ym205☑️品牌:小程序☑️语言:wx☑️大小:345KB☑️类型:聊天内容制作☑️支持:小程序????欢迎免费领取(注明编号)????✨源码介绍这是一款微信聊天内容制作生成小程序源码,该小程序支持制作多种内容。支持单人聊天模式制作,支持群聊模式制作生成;每一种模式都支持我们微信需要的功能都有,视频,语音,时间,内容等等,大家可以最后看演示图!!另外还支持微信零钱,也就是我的界面制作生成DIY金额(具体大家看演示图);另外也支持微信红包制作DIY金额,发

    2022年4月9日
    176

发表回复

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

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