利用牛顿迭代法求方程组实根Python
时间: 2024-04-28 09:18:15 浏览: 97
牛顿迭代法求方程的根
4星 · 用户满意度95%
牛顿迭代法是一种用于求解方程实根的数值方法,它基于函数的局部线性逼近来逐步逼近方程的根。下面是利用牛顿迭代法求解方程组实根的Python代码示例:
```python
import numpy as np
def newton_method(f, J, x0, tol=1e-6, max_iter=100):
"""
牛顿迭代法求解方程组实根
:param f: 方程组的函数向量
:param J: 方程组的雅可比矩阵
:param x0: 初始解向量
:param tol: 迭代收敛的容差
:param max_iter: 最大迭代次数
:return: 方程组的实根向量
"""
x = x0
for i in range(max_iter):
delta_x = np.linalg.solve(J(x), -f(x))
x += delta_x
if np.linalg.norm(delta_x) < tol:
return x
raise ValueError("未能收敛到解")
# 示例方程组:x^2 + y^2 = 25, x^2 - y = 1
def equations(x):
return np.array([x**2 + x**2 - 25, x**2 - x - 1])
# 示例方程组的雅可比矩阵
def jacobian(x):
return np.array([[2*x, 2*x], [2*x, -1]])
# 初始解向量
x0 = np.array([1, 1])
# 调用牛顿迭代法求解方程组实根
root = newton_method(equations, jacobian, x0)
print("方程组的实根为:", root)
```
这段代码中,`newton_method`函数是利用牛顿迭代法求解方程组实根的主要函数。其中,`f`参数是方程组的函数向量,`J`参数是方程组的雅可比矩阵,`x0`参数是初始解向量,`tol`参数是迭代收敛的容差,`max_iter`参数是最大迭代次数。函数中使用了`numpy`库来进行矩阵运算。
示例中给出了一个方程组的函数向量和雅可比矩阵的定义,你可以根据实际问题进行修改。最后,通过调用`newton_method`函数,可以得到方程组的实根向量。
阅读全文