、编写程序用牛顿迭代法求方程 f(x)=x3-3x-1=0 在 x0=2 附近的根。 牛顿迭代公式: xn-1=xn-f(xn)/f’(xn) 其中误差限为 10 -6,要求 1)将牛顿迭代法、f(x)、f’(xn) 分别编写为子程序。 2)主程序调用函数/子程序求方程的根。
时间: 2024-02-05 18:13:16 浏览: 60
牛顿迭代法求方程的根.rar_MATLAB 求方程_求方程的根_牛顿法_牛顿;迭代
以下是使用牛顿迭代法求解方程的 Python 代码,包括了牛顿迭代、f(x)、f’(x) 的函数定义和主程序的调用:
```python
def newton_iteration(f, df, x0, eps=1e-6, max_iter=100):
"""
牛顿迭代法求解方程 f(x) = 0 的根
Args:
f (function): 函数 f(x)
df (function): 函数 f(x) 的导数 df(x)/dx
x0 (float): 迭代初始值
eps (float): 误差限,默认为 1e-6
max_iter (int): 最大迭代次数,默认为 100
Returns:
float: 方程 f(x) = 0 的近似根
"""
x = x0
for i in range(max_iter):
dx = - f(x) / df(x)
x += dx
if abs(dx) < eps:
return x
return None
def f(x):
"""
方程 f(x) = x^3 - 3x - 1
Args:
x (float): 自变量 x
Returns:
float: 函数值
"""
return x ** 3 - 3 * x - 1
def df(x):
"""
方程 f(x) 的导数 df(x)/dx = 3x^2 - 3
Args:
x (float): 自变量 x
Returns:
float: 导数值
"""
return 3 * x ** 2 - 3
if __name__ == '__main__':
x0 = 2.0
root = newton_iteration(f, df, x0)
if root is not None:
print(f"方程 f(x) = 0 的一个近似根为:{root:.6f}")
else:
print("未能求得方程的根")
```
输出结果为:
```plain
方程 f(x) = 0 的一个近似根为:1.879385
```
阅读全文