求上机代码和清晰的思路分析。(二分法 牛顿迭代法的定义与在此题中的具体应用 )
5条回答 默认 最新
- 「已注销」 2023-04-13 08:23关注
第一个问题:运行结果如下:
二分法的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 % 输出近似根
第二个问题:
选代过程的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 % 输出近似根
第三个问题:运行结果:
牛顿迭代法的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$ 时迭代停止。
综上,选代过程最简单,二分法和牛顿迭代法计算量相当。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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