2.7 先判断下列线性方程组解的情况,然后求对应的唯一解、最小二乘解或最小范数解
(1)
4x1+2x2-x3=2
3x1-x2+2x3=10
11x1+3x2=8
(2)
2x+3y+z=4
x-2y+4z=-5
3x+8y-2z=13
4x-y+9z=-6
点击查看代码
import numpy as np
# 定义系数矩阵A和常数项向量b
A = np.array([[4, 2, -1],
[3, -1, 2],
[11, 3, 0]])
b = np.array([2, 10, 8])
# 使用numpy的lstsq求解最小二乘解
x, residuals, rank, s = np.linalg.lstsq(A, b, rcond=None)
print("最小二乘解为:")
print(x)
# 打印残差和矩阵A的秩
print("残差为:", residuals)
print("矩阵A的秩为:", rank)
print("学号:3004")
print("\n")
import numpy as np
# 定义系数矩阵A和常数项向量b
A = np.array([[2, 3, 1],
[1, -2, 4],
[3, 8, -2],
[4, -1, 9]])
b = np.array([4, -5, 13, -6])
# 使用numpy的lstsq函数求解最小二乘解
# 对于这个特定的问题,由于方程数和未知数数量相同,且没有矛盾,lstsq将给出唯一解
x, residuals, rank, s = np.linalg.lstsq(A, b, rcond=None)
# 输出解
print("解 x:", x)
# 验证解是否正确(可选)
print("验证结果:", np.dot(A, x))
# 检查是否精确等于b(对于精确解,这应该非常接近)
print("与b的误差:", np.linalg.norm(np.dot(A, x) - b))
# 计算系数矩阵的秩(可选,以确认方程组是否有唯一解)
print("系数矩阵的秩:", np.linalg.matrix_rank(A))
# 由于秩等于未知数数量,且没有矛盾,我们可以确信有一个唯一解
print("学号:3004")