【源码】二分法的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 单调队列初步「建议收藏」

    单调队列初步「建议收藏」
    一直弄不明白单调队列是什么,在网上也找不到易懂的介绍。最后结合别人博客上的介绍和程序看才理解是怎么回事。
    我们从最简单的问题开始:
    给定一个长度为N的整数数列a(i),i=0,1,…,N-1和窗长度k.
    要求:
         f(i)=max{a(i-k+1),a(i-k+2),…,a(i)},i=0,1,…,N-1
    问题的另一种描述就是用一个长度为k的窗在整数数列上移动,求窗里面所包含的数的最大值。
    解法一:

    2022年6月25日
    27
  • ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」

    ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」今天小编给大家讲解如何用Photoshop处理证件照,证件照是大家生活中经常要用到的,相信很多同学碰到过需要给背景照换颜色的时候,却不知道如何更换背景颜色。我们平时照的证件照,一般都是红底,这时我们遇到要蓝底的时候怎么办呢?下面讲解ps修图教程新手入门如何用Photoshop处理证件照。下面,以一寸照片为例,讲解如何用Photoshop制作证件照。1、电脑操作2、ps软件:AdobePhotoshop2017(演示)一、ps改变尺寸1、打开证件照原件(图片小编从网上下载了一张,并打码

    2022年6月26日
    50
  • 安装VMware Tools选项显示灰色的正确解决办法

    安装VMware Tools选项显示灰色的正确解决办法百度了一天,重新安装了vm,在csdn逛了又逛,结合无数篇大神文章,最后自己成功琢磨出了真正能点亮灰色按钮的方法。简单实在,大神们的方法实在千秋万变,一个比一个复杂,最后只能实现成功拖拽,而复制粘贴却还是不行。首先问题如下:解决办法如下:1.关闭虚拟机;2.在虚拟机设置分别设置CD/DVD、CD/DVD2和软盘为自动检测三个步骤;3.再重启虚拟机,灰色字即点…

    2022年5月9日
    687
  • java开发培训_Java培训课程那里好?

    java开发培训_Java培训课程那里好?互联网时代,人们纷纷羡慕IT软件行业的前景和“钱景”。有些行动力较强的更是摩拳擦掌,直接通过参加Java培训班来成功转行这一行业。这些通过Java培训班转行成功的人现在如何了,他们的薪资高吗?没有基础但是想要跟上IT软件行业的发展步伐,选择Java培训班显然是一条有效途径。早几年,IT行业发展刚起步的时候,每一天都有无数家互联网企业诞生,对IT技术人才的需求规模巨大,学员从Java培训班毕业之后迅…

    2022年7月8日
    20
  • Pytorch-DataLoader的使用

    Pytorch-DataLoader的使用原文连接:http://chenhao.space/post/d313d236.htmlpytorch-DataLoader的使用importtorchimporttorch.utils.dataasData#[1,1,1]相当于一句话的wordembedding,这个tensor中含有三句话x=torch.tensor([[1,1,1],[2,2,2…

    2022年5月14日
    38
  • Python 利用pickle库查看pkl文件实例演示,pkl是什么类型的文件?怎么来打开它?「建议收藏」

    Python 利用pickle库查看pkl文件实例演示,pkl是什么类型的文件?怎么来打开它?「建议收藏」pkl是什么类型的文件?怎么来打开它?pkl格式的文件是python用于保存文件用的。本文的重点是怎么打开这类文件,请看大屏幕!博主之前呢也踩了个小坑呢,就是在打开文件的时候用的是r,r是用来打开文本类型文件的,我要打开的是二进制类型的文件,需要用rb。

    2022年6月9日
    59

发表回复

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

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