Python题目:题目:试编程,采用G-S迭代法,获得以下线性方程组的解,要求程序能够根据用户所输入的误差限,来自行决定G-S迭代步数(注:该方程组的精确解依次是:x1 =12.5;x2 =-6.0;x3 =13.0)。 4 x1 - 2x2 - 4 x3 = 10 -2 x1 + 17 x2 + 10 x3 = 3 -4 x1 + 10 x2 + 9 x3 = 7
时间: 2024-02-25 12:58:04 浏览: 56
以下是使用 Python 编写的 G-S 迭代法求解线性方程组的程序:
```python
import numpy as np
# 定义线性方程组的系数矩阵 A 和常数矩阵 b
A = np.array([[4, -2, -4], [-2, 17, 10], [-4, 10, 9]])
b = np.array([10, 3, 7])
# 定义误差限
epsilon = float(input("请输入误差限:"))
# 初始化解向量 x 和迭代步数 n
x = np.zeros_like(b)
n = 0
# 迭代求解
while True:
n += 1
x_new = np.zeros_like(x)
for i in range(len(x)):
x_new[i] = (b[i] - np.dot(A[i, :i], x_new[:i]) - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]
if np.linalg.norm(x_new - x) < epsilon:
break
x = x_new
# 输出结果
print("迭代步数:", n)
print("解向量:", x)
```
程序首先定义了线性方程组的系数矩阵 A 和常数矩阵 b。然后从用户输入中读取误差限 epsilon。接下来初始化解向量 x 和迭代步数 n。在迭代求解过程中,程序根据 G-S 迭代公式更新解向量 x_new,并检查当前解向量与上一次迭代的差值是否小于误差限 epsilon,如果满足要求就退出迭代。最后输出迭代步数和解向量。
需要注意的是,G-S 迭代法不一定能够收敛到精确解,因此程序的输出结果可能与精确解有一定误差。如果要求更高的精度,可以增加迭代次数或使用其他求解方法。
阅读全文