帮我写一个牛顿迭代法求解非线性方程的数值解的代码
时间: 2024-05-10 07:19:09 浏览: 117
当然可以,以下是一个用牛顿迭代法求解非线性方程的数值解的 Python 代码示例:
```python
def newton_raphson(f, df, x0, tol=1e-6, max_iter=100):
"""
使用牛顿-拉夫逊迭代法求解非线性方程的数值解
:param f: 目标方程
:param df: 目标方程的导数
:param x0: 初始猜测
:param tol: 容忍误差
:param max_iter: 最大迭代次数
:return: 数值解
"""
x = x0
for i in range(max_iter):
fx = f(x)
if abs(fx) < tol:
return x
dfx = df(x)
if abs(dfx) < tol:
return None
x -= fx / dfx
return None
```
其中,f 和 df 分别为目标方程和目标方程的导数,x0 是初始猜测,tol 是容忍误差,max_iter 是最大迭代次数。函数返回数值解。
你可以将 f 和 df 定义为 lambda 函数,例如:
```python
f = lambda x: x ** 3 - x - 1
df = lambda x: 3 * x ** 2 - 1
```
然后调用函数 `newton_raphson(f, df, x0)` 即可得到数值解。
阅读全文