python用高斯消元法求解线性代数方程组,并计算舍入误差
时间: 2024-05-05 15:16:25 浏览: 29
以下是Python实现高斯消元法求解线性代数方程组,并计算舍入误差的代码:
```python
import numpy as np
# 高斯消元法求解线性代数方程组
def gaussian_elimination(A, b):
n = len(A)
for i in range(n):
# 找到最大的元素并交换行
max_row = i
for j in range(i+1, n):
if abs(A[j,i]) > abs(A[max_row,i]):
max_row = j
A[i,:], A[max_row,:] = A[max_row,:], A[i,:]
b[i], b[max_row] = b[max_row], b[i]
# 消元
for j in range(i+1, n):
factor = A[j,i] / A[i,i]
A[j,i+1:] -= factor * A[i,i+1:]
b[j] -= factor * b[i]
# 回带求解
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (b[i] - np.dot(A[i,i+1:], x[i+1:])) / A[i,i]
return x
# 计算舍入误差
def round_error(A, b, x):
return np.linalg.norm(A @ x - b)
# 示例
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([10, 20, 30])
x = gaussian_elimination(A, b)
print("解:", x)
print("舍入误差:", round_error(A, b, x))
```
输出结果为:
```
解: [-2.83726777e+16 5.67453553e+16 -2.83726777e+16]
舍入误差: 9.797958971132713e-11
```
可以看到,使用高斯消元法求解线性代数方程组得到的解存在较大的舍入误差。这是由于在计算机内部,浮点数的表示有限,而高斯消元法中的计算涉及到除法和减法等运算,会带来舍入误差的累加。因此,在实际使用中需要注意舍入误差的问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)