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

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 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解