matlab 二分法区间,多区间二分法[通俗易懂]

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp预备知识 二分法这里介绍一种多区间二分法,可以求出连续函数在某区间内几乎全部的根.方法就是把这个区间等分为若干个相等的小区间,然后分别判断这些小区间两端函数值的符号,对所有两端异号的区间使用二分法即可.显然,小区间的个数越多,越有可能找到所有的根.例程如下.代码1:bis…

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

&nbsp

&nbsp

&nbsp

&nbsp

&nbsp

&nbsp

&nbsp

预备知识 二分法

这里介绍一种多区间二分法,可以求出连续函数在某区间内几乎全部的根.方法就是把这个区间等分为若干个相等的小区间,然后分别判断这些小区间两端函数值的符号,对所有两端异号的区间使用二分法即可.显然,小区间的个数越多,越有可能找到所有的根.例程如下.

代码 1:bisectionN.m

函数的前两个输入变量分别是需要求根的函数句柄和求根区间(二元行矢量或列矢量),第三个变量 $N$ 是子区间端点的个数(即子区间的个数加一).函数中先求出所有的端点 x,以及对应的函数值 y,然后画图.第 6-7 行寻找所有两端异号或有一端为 0 的区间的序号,然后在第 10 行的循环中对这些区间逐个使用二分法.为了提高运算效率,这里并没有使用 “二分法” 中的例程,而是使用了 Matlab 自带的 fzero 函数.

bisectionN 的画图功能是为了让用户判断是否有可能出现漏根,以下举两个例子说明.>> f = @(x)exp(-0.2*x)*sin(x);

>> roots = bisectionN(f, [0, 15], 50)

roots = 0 3.1416 6.2832 9.4248 12.5664

MBisec_1.svg?v=f4593b2f6e7d41

图 1:运行结果

运行结果如图 1,由于画出的曲线较为光滑,可判断漏根的可能性很小.再看另一个例子>> f = @(x)sin(1/x);

>> roots = bisectionN(f, [0, 0.3], 50)

roots = 0.0245 0.0398 0.0455 0.0531 0.0637 0.0796 0.1061 0.1592

MBisec_2.svg?v=52c58dea5c9a75

图 2:运行结果

我们已经知道函数 $ \sin\left(1/x\right) $ 在该区间上有无数个根,且越接近 $x = 0$,相邻根之间的距离越小.运行结果如图 2, 可见在区间 $[0, 0.1]$ 内,子区间端点的函数值非常不平滑,极有可能出现漏根.为了求得更多的根,我们可以增加子区间的个数.

致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择会员制,大量广告,内容付费等。 因此,我们请求广大读者热心打赏,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证网站能在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

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

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

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


相关推荐

  • jasypt 原理_litmp试剂

    jasypt 原理_litmp试剂文章目录一、jasypt的启动类加载二、jasypt中Encryptor、Detector和Resolver加载三、jasypt中EnableEncryptablePropertiesBeanFactoryPostProcesso四、proxy代理方式增强propertySources五、wrapper包装类方式增强propertySources六、resolver中属性值解密作者:史佳健推荐理由:文章详尽并有对应分析说明一、jasypt的启动类加载引入了jasypt-spring-boot-st

    2022年9月25日
    3
  • 天合光能与阿里云合作取得阶段性成果「建议收藏」

    天合光能与阿里云合作取得阶段性成果

    2022年3月12日
    84
  • java怎么求数组的和_java求和函数写法

    java怎么求数组的和_java求和函数写法Java经典题目之一,数组的各种求和,今天小编就用一些例子带大家了解一下其中详情。基础求和#includeusingnamespacestd;//数组求和//方法一:时间复杂度为O(n),额外空间为(n)intArraySum(intarr[],intn){intsum=0;for(inti=0;i{sum+=arr[i];}returnsum;}//方法二…

    2022年10月2日
    4
  • 电商网站商品价格获取方法_电商网站

    电商网站商品价格获取方法_电商网站电商网站商品价格获取本文以苏宁易购,京东,两个电商网站,模仿说明电商网站商品价格的两种获取方法。json形式存放,京东商品的价格以json形式存放,以以下页面为例https://item.jd.com/100000287133.html明显价格数据并非放在前端页面里,搜索找到以下数据查看当前的url在浏览器中请求https://p.3.cn/prices/mgets?cal…

    2022年10月1日
    3
  • Pycharm和Pytorch安装教程配置环境以及遇到的问题:

    Pycharm和Pytorch安装教程配置环境以及遇到的问题:Pycharm和Pytorch安装教程配置环境以及遇到的问题:注意:我们每次新建完项目,都要检查一下python解释器和conda.exe是否选择正确。一.如何找到Anconda哪个环境中安装了pytorch?Anconda提供环境,我们安装pytorch也是在一个环境下,所以不是在每个环境中都能用pytorch。那么我们如何找到我们pytorch安装的环境呢?要有NVDIA的显卡,才能用CUDA(AMD的小伙伴可能泪目了),查CUDA的版本比较简单,就不总结了。打开Anconda,输入conda

    2022年8月27日
    3
  • 重定向和转发区别[通俗易懂]

    重定向和转发区别[通俗易懂]一、转发转发的原理,可以通过下图展示:浏览器的请求发送给组件1,组件1经过一些处理之后,将request和response对象“传递”给组件2,由组件2继续处理,然后输出响应(当然,也可以继续向其他组件“传递”),这个传递的过程称之为“转发”。整个过程只涉及一次浏览器和服务器之间的“请求-响应”,转发过程中的组件共享同一个请求(request)和响应(response)对象。转发的意义在于可以实现组件的**“分工”。**在基于MVC,多层结构的Web应用中,经常需要多个组件协同完成一次“请求

    2025年10月6日
    8

发表回复

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

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