求上机代码和清晰的思路分析。(二分法 牛顿迭代法的定义与在此题中的具体应用 )
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无用