Matlab实现立方根表:牛顿迭代法和简单迭代法
Matlab实现立方根表:牛顿迭代法和简单迭代法
本程序使用Matlab编写,利用牛顿迭代法和简单迭代法(平行弦法)构造101-111的立方根表,并以11*2矩阵形式输出,保留6位有效数字。
1. 牛顿迭代法
% 牛顿迭代法
x0 = 1.5; % 初始值
tol = 1e-6; % 允许误差
max_iter = 1000; % 最大迭代次数
% 构造立方根表
format short; % 设置输出格式
x_newton = zeros(11, 2); % 初始化存储结果的矩阵
for i = 1:11 % 构造101-111的立方根表
num = 100 + i; % 计算当前数字
for j = 1:max_iter % 进行迭代
x1 = x0 - (x0^3 - num)/(3*x0^2); % 牛顿迭代公式
if abs(x1-x0) < tol % 判断是否满足精度要求
x_newton(i, 1) = num; % 存储当前数字
x_newton(i, 2) = x1; % 存储计算结果
break % 结束迭代
end
x0 = x1; % 更新迭代值
end
end
% 输出结果
disp('牛顿迭代法结果:');
disp(x_newton);
2. 简单迭代法(平行弦法)
% 简单迭代法(平行弦法)
x0 = 1.5; % 初始值
tol = 1e-6; % 允许误差
max_iter = 1000; % 最大迭代次数
lambda = 0.25; % 迭代参数
% 构造立方根表
x_simple = zeros(11, 2); % 初始化存储结果的矩阵
for i = 1:11 % 构造101-111的立方根表
num = 100 + i; % 计算当前数字
for j = 1:max_iter % 进行迭代
x1 = lambda*num^(1/3) + (1-lambda)*x0; % 简单迭代公式
if abs(x1-x0) < tol % 判断是否满足精度要求
x_simple(i, 1) = num; % 存储当前数字
x_simple(i, 2) = x1; % 存储计算结果
break % 结束迭代
end
x0 = x1; % 更新迭代值
end
end
% 输出结果
disp('简单迭代法结果:');
disp(x_simple);
程序说明
-
牛顿迭代法:
- 迭代公式:
x1 = x0 - (x0^3 - num)/(3*x0^2),其中num为待求立方根的数字。 - 迭代停止条件:
abs(x1-x0) < tol,即前后两次迭代结果的差值小于允许误差。
- 迭代公式:
-
简单迭代法(平行弦法):
- 迭代公式:
x1 = lambda*num^(1/3) + (1-lambda)*x0,其中lambda为迭代参数,一般取值在0-1之间。 - 迭代停止条件:
abs(x1-x0) < tol,即前后两次迭代结果的差值小于允许误差。
- 迭代公式:
-
程序结构:
- 使用两个循环嵌套,外层循环遍历101-111的数字,内层循环进行迭代计算。
- 使用两个矩阵
x_newton和x_simple分别存储牛顿迭代法和简单迭代法的计算结果。 - 最后分别输出两个矩阵的结果。
运行结果
运行程序后,将得到两个11*2的矩阵,分别表示牛顿迭代法和简单迭代法计算得到的101-111的立方根。
注
- 本程序仅供参考,实际应用中可能需要根据具体情况进行调整。
- 两种方法的收敛速度可能不同,具体取决于初始值和迭代参数的取值。
- 使用牛顿迭代法时,需要注意函数的导数在迭代点处不为零。
- 使用简单迭代法时,需要选择合适的迭代参数
lambda,以确保迭代收敛。
原文地址: https://www.cveoy.top/t/topic/nmGG 著作权归作者所有。请勿转载和采集!