如何用完整Python代码实现数值分析中的超松弛迭代法?
时间: 2024-10-29 14:24:01 浏览: 10
超松弛迭代法是一种用于求解大型线性系统的数值算法,尤其适用于那些直接求解困难的问题。在Python中,我们可以使用NumPy库来进行矩阵运算,并结合循环结构实现该方法。以下是一个简单的例子:
```python
import numpy as np
def over_relaxation(A, b, x0, relaxation_factor=1.5, max_iter=1000):
"""
超松弛迭代法
:param A: 系统的系数矩阵 (numpy array)
:param b: 目标向量 (numpy array)
:param x0: 初始猜测解 (numpy array)
:param relaxation_factor: 超松弛因子,默认值为1.5
:param max_iter: 最大迭代次数
:return: 求得的近似解 (numpy array)
"""
x = x0.copy()
for _ in range(max_iter):
# 更新x的值,利用超松弛因子
x_new = relaxation_factor * A @ x + (1 - relaxation_factor) * b
if np.allclose(x, x_new): # 如果新旧解足够接近,停止迭代
break
x = x_new
return x
# 示例:求解 Ax = b 的问题
A = np.array([[4, -1], [1, 3]])
b = np.array([8, 12])
x0 = np.zeros_like(b) # 初始化零向量作为猜测解
solution = over_relaxation(A, b, x0)
print(f"最终近似解: {solution}")
阅读全文