Python题目:试编程,采用松弛G-S迭代法,获得以下线性方程组的解,要求程序能够根据用户所输入的误差限,来自行决定G-S迭代步数;并且,松弛因子ω也由用户输入,通过计算对比不同ω对收敛性的影响(注:该方程组的精确解依次是:x1 =-4.0;x2 =3.0;x3 =2.0)。 5 x1 + 2x2 + x3 = -12 - x1 + 4 x2 + 2 x3 = 20 2 x1 - 3 x2 + 10 x3 = 3
时间: 2024-02-25 20:57:21 浏览: 117
超松弛迭代法求解线性方程组
好的,以下为该方程组的 Python 代码实现:
```python
import numpy as np
# 定义系数矩阵 A 和右端向量 b
A = np.array([[5, 2, 1], [-1, 4, 2], [2, -3, 10]])
b = np.array([-12, 20, 3])
# 定义初始解 x 和误差限 error_limit
x = np.zeros(3)
error_limit = float(input("请输入误差限:"))
# 定义松弛因子 omega
omega = float(input("请输入松弛因子 omega:"))
# 定义计数器 count 和误差 err
count = 0
err = 1
# 开始迭代
while err > error_limit:
count += 1
for i in range(3):
temp = b[i]
for j in range(3):
if j != i:
temp -= A[i][j] * x[j]
x[i] = omega * (temp / A[i][i]) + (1 - omega) * x[i]
err = np.sqrt(np.sum(np.square(A.dot(x) - b)))
print("第 %d 次迭代,误差为 %.10f" % (count, err))
# 输出结果
print("迭代结束!最终结果为:", x)
```
在上述代码中,我们使用了 `numpy` 库来进行矩阵运算,并且通过 `input()` 函数来让用户输入误差限和松弛因子。在迭代过程中,我们使用了一个计数器 `count` 来记录迭代次数,并且计算误差的方式为 $||A x - b||_2$。
你可以试着运行一下上述代码,并且输入误差限和松弛因子,观察程序的输出结果。
阅读全文