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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机版java启动器,我的世界Launcher启动器

    手机版java启动器,我的世界Launcher启动器我的世界Launcher启动器是一款我的世界的助手,在这个工具中你可以自由体验像素玩法,还可以免费加入其中的挑战,这样玩家就可以轻松感受各种高难度的比拼,而且游戏中有许多关卡,可以让你更好的体验冒险竞技,接下来让我们加入游戏体验各种创意玩法,赶紧来这里下载体验吧!我的世界Launcher启动器游戏简介我的世界Launcher启动器,可以尽情体验不同的沙盒历险,多样的地图和玩法可以在这个虚拟世界里尽…

    2022年7月8日
    49
  • myeclipse6.0下载及注冊码

    myeclipse6.0下载及注冊码

    2021年12月10日
    41
  • 很具体GC学习笔记

    很具体GC学习笔记

    2021年12月9日
    40
  • VBoxManage安装

    VBoxManage安装扩展包的版本需要与VirtualBox的版本一致,通过帮助可以查看VirtualBox的版本信息,然后在http://download.virtualbox.org/virtualbox/寻找对应的版本。接下来执行安装命令[root@root下载]#VBoxManageextpackinstall./Oracle_VM_VirtualBox_Extension_Pack…

    2022年6月11日
    50
  • 缓存穿透,缓存击穿,缓存雪崩解决方案分析

    缓存穿透,缓存击穿,缓存雪崩解决方案分析前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案

    2022年6月30日
    18
  • Java封装详解,很简单

    Java封装详解,很简单大家好,今天来给大家分享一下Java封装面向对象有三大特征:1.封装2.继承3.多态我们来讲Java封装,它也是Java面向对象的三大特征之一封装,大白话的解释就是,把一个东西,装到箱子了,只留小小的口,用于外界访问画一个图就是该露的露,该藏的藏我们在程序设计的过程中要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己来完成,不允许外部干涉,低耦合:就是,仅暴露少量的方法给外部使用封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而是应该通过操作接口来访问

    2022年7月7日
    24

发表回复

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

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