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")

posted on 2024-09-06 16:51  黄元元  阅读(21)  评论(0编辑  收藏  举报