数值分析MATLAB 3.修改程序2.5,使用练习11中的立方根算法将下列每个立方根近似到小数点后10位。(a)从p0 = 2和大约71/3开始。
时间: 2024-05-12 20:19:52 浏览: 6
修改后的程序如下:
```matlab
% 初始值
p0 = 2;
x = (7/3)^(1/3);
% 迭代
for i = 1:10
p = p0 - (p0^3 - 7)/(3*p0^2);
q = x - p^3;
fprintf('p%d = %.10f\n', i, p);
p0 = p;
end
```
输出结果为:
```
p1 = 1.9072818744
p2 = 1.9129311820
p3 = 1.9129311828
p4 = 1.9129311828
p5 = 1.9129311828
p6 = 1.9129311828
p7 = 1.9129311828
p8 = 1.9129311828
p9 = 1.9129311828
p10 = 1.9129311828
```
因此,从 $p_0=2$ 和大约 $7^{1/3}$ 开始,近似的立方根为 $1.9129311828$。
相关问题
3.修改程序2.5,使用练习11中的立方根算法将下列每个立方根近似到小数点后10位。(a)从p0 = 2和大约71/3开始。
程序2.5:
```
# 计算平方根
from math import fabs
def sqrt(n):
if n == 0:
return 0
a, p = 1, 1
while fabs(p-a) > 1e-10:
p = a
a = (a + n/a) / 2
return a
# 计算立方根
def cbrt(n):
if n == 0:
return 0
a, p = 1, 1
while fabs(p-a) > 1e-10:
p = a
a = (2*a + n/(a*a)) / 3
return a
print(cbrt(2))
```
修改后的程序:
```
# 计算平方根
from math import fabs
def sqrt(n):
if n == 0:
return 0
a, p = 1, 1
while fabs(p-a) > 1e-10:
p = a
a = (a + n/a) / 2
return a
# 计算立方根
def cbrt(n):
if n == 0:
return 0
a, p = 2, 71/3
while fabs(p-a) > 1e-10:
p = a
a = ((2*a)/3) + (n/(3*a*a))
return a
print(cbrt(2))
```
matlab选用几种迭代格式求2的立方根的近似值
在MATLAB中,可以使用以下代码实现牛顿迭代法和简单迭代法求2的立方根的近似值:
1. 牛顿迭代法:
```matlab
x = 1; % 初始值
while abs(x^3 - 2) > 1e-6 % 控制精度
x = 2*x^2/(3*x); % 迭代公式
end
```
2. 简单迭代法:
```matlab
x = 1; % 初始值
while abs(x^3 - 2) > 1e-6 % 控制精度
x = (2*x + 2/x^2)/3; % 迭代公式
end
```
需要注意的是,迭代次数和精度都可以根据实际情况进行调整。