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


相关推荐

  • quartus ii12.1安装教程_ghost手动安装教程

    quartus ii12.1安装教程_ghost手动安装教程安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。1.鼠标右击【QuartusII11.0】压缩包选择【解压到QuartusII11.0】。2.双击打开解压后的【QuartusII11.0】文件夹。3.双击打开【Quartus】文件夹。4.鼠标右击【11.0_quartus_windows.exe】选择【以管理员身份运行】。5.点击【Install】。6.解压中。7.勾选【AllowAlter…

    2022年10月15日
    1
  • java hashmap和treemap_java中treemap和hashmap的区别是什么?

    java hashmap和treemap_java中treemap和hashmap的区别是什么?区别 1 HashMap 中元素是没有顺序的 TreeMap 中所有元素都是有某一固定顺序的 2 HashMap 继承 AbstractMap 类 是基于 hash 表实现的 TreeMap 继承 SortedMap 类 是基于红黑树实现的 TreeMap 和 HashMap 的区别 Map 在数组中是通过数组下标来对其内容进行索引的 而 Map 是通过对象来对对象进行索引的 用来索引的对象叫键 key 其对应的对象叫值 va

    2025年8月24日
    3
  • 深入浅出谈开窗函数(一)

    深入浅出谈开窗函数(一)

    2021年12月5日
    47
  • 关于kafuka的简单认识与理解「建议收藏」

    关于kafuka的简单认识与理解「建议收藏」因为工作中负责维护的产品中有使用消息中间件kafuka的系统,所以把工作中的理解和遇到的问题总结出来,方便后期查看,好记性不如烂笔头。kafuka是一个分布式的、分区化、可复制提交的发布订阅消息系统,使用kafuka需要对其中的一些概念做简单了解。一、kafuka基础1、topic主题:Kafka中用于区分不同类别信息的类别名称。由producer指定2、Producer:将消息发布到Kafka特定的Topic的对象3、Consumers:订阅并处理特定的Topic中的消息的对象4、broke

    2022年6月11日
    47
  • R 检测多重共线性

    R 检测多重共线性多重共线性可用统计量VIF(VarianceInflationFactor,方差膨胀因子)进行检测。VIF的平方根表示变量回归参数的置信区间能膨胀为与模型无关的预测变量的程度(因此而得名)。car包中的vif()函数提供VIF值。一般原则下,vif>2就表明存在多重共线性问题。检测多重共线性>library(car)>vif(fit)PopulationIlliteracyIncomeFrost1.22.21.32.1&g

    2022年5月6日
    51
  • AWVS10.5&12超详细使用教程

    AWVS10.5&12超详细使用教程AWVS介绍awvs

    2025年5月27日
    2

发表回复

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

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