【源码】二分法的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)
上一篇 2022年4月11日 上午8:00
下一篇 2022年4月11日 上午8:20


相关推荐

  • 设置 node 环境变量

    设置 node 环境变量一、前言下载完node后,想要在编辑器里面使用npm命令,必须设置环境变量。二、设置步骤如下(以win10操作系统为例)1.找到“此电脑”,点击右键,选择“属性”;2.按照下图1、2、3的顺序点击;3.出现如下图,选择“path”;4.出现如下图,选择“新建”;5.出现如下图,选择“浏览”,选择node的安装地址;6.确…

    2022年6月8日
    42
  • Android内存优化之磁盘缓存

    Android内存优化之磁盘缓存

    2022年3月2日
    39
  • dede list列表页和文章页分别使用if else

    dede list列表页和文章页分别使用if else

    2021年9月19日
    40
  • firebird修复_Firebird数据修复

    firebird修复_Firebird数据修复2014 10 15 回答深圳远标帮助您 java 可以使用 jdbc 对数据库进行读写 jdbc 访问一般分为如下流程 1 加载 jdbc 驱动程序 在连接数据库之前 首先要加载想要连接的数据库的驱动到 jvm java 虚拟机 这通过 java lang class 类的静态方法 forname stringclassn 实现 例如 try 加载 mysql 的驱动类 class forname com

    2026年3月18日
    1
  • 冒泡排序法(C++实现)

    冒泡排序法(C++实现)看图秒懂代码

    2026年3月20日
    2
  • vs代码补全的快捷键_效率工具 | 一款基于深度学习的代码自动补全神器

    vs代码补全的快捷键_效率工具 | 一款基于深度学习的代码自动补全神器前言代码补全对于大多数开发人员来说是至关重要的 它可以有效的提高开发效率 减少拼写错误和输入代码量 我们使用的大多数开发工具都自带补全功能 或者可以通过安装插件具备补全功能 但是 以往的代码补全功能主要基于语言本身的内置函数和上下文信息进行补全 而在候选项重要程度 代码块补全方面却不理想 与其说我们常用的自动补全工具的价值在补全方面 我更倾向于认为它的价值体现在提示 近几年随着深度学习的抬头 火热

    2026年3月27日
    3

发表回复

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

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