2301_77482663 2023-04-12 23:12 采纳率: 82.4%
浏览 67
已结题

MATLAB求方程近似根

img


求上机代码和清晰的思路分析。(二分法 牛顿迭代法的定义与在此题中的具体应用 )

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-04-13 08:23
    关注

    第一个问题:运行结果如下:

    img


    二分法的MATLAB代码如下:

    f = @(x) exp(x) + 10*x - 2; % 定义函数
    a = 0; % 区间左端点
    b = 1; % 区间右端点
    tol = 1/2*10^(-3); % 精度要求
    while (b-a)/2 > tol
        c = (a+b)/2; % 取区间中点
        if f(c) == 0 % 精确命中
            break
        elseif f(c)*f(a) < 0 % 根在左半区间
            b = c;
        else % 根在右半区间
            a = c;
        end
    end
    root = (a+b)/2 % 输出近似根
    

    第二个问题:

    img


    选代过程的MATLAB代码如下:

    f = @(x) exp(x) + 10*x - 2; % 定义函数
    x0 = 0; % 初值
    tol = 1/2*10^(-3); % 精度要求
    x = x0;
    k = 1;
    while abs(f(x)) > tol && k <= 100 % k <= 100 为防止死循环
        x = (2-f(x)*k)/10; % 选代公式
        k = k + 1;
    end
    root = x % 输出近似根
    

    第三个问题:运行结果:

    img


    牛顿迭代法的MATLAB代码如下:

    f = @(x) exp(x) + 10*x - 2; % 定义函数
    df = @(x) exp(x) + 10; % 定义导数
    x0 = 0; % 初值
    tol = 1/2*10^(-3); % 精度要求
    x = x0;
    k = 1;
    while abs(f(x)) > tol && k <= 100 % k <= 100 为防止死循环
        x = x - f(x)/df(x); % 牛顿迭代公式
        k = k + 1;
    end
    root = x % 输出近似根
    

    三种方法的计算量比较:

    二分法:每次迭代区间减半,因此需要进行 $\log_2(n)$ 次迭代,其中 $n$ 是区间长度与精度要求的比值的倒数,即 $n=2/\epsilon$。每次迭代需要计算函数值一次,因此总共需要计算函数值 $\log_2(n)+1$ 次。
    选代过程:每次迭代只需要计算一次函数值,因此总共需要计算函数值 $k$ 次。当 $k=100$ 时迭代停止。
    牛顿迭代法:每次迭代需要计算函数值和导数值各一次,因此总共需要计算函数值和导数值 $k$ 次。当 $k=100$ 时迭代停止。
    综上,选代过程最简单,二分法和牛顿迭代法计算量相当。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error