我想使用numpy.linalg.solve来解决线性代数方程,但我收到一条错误消息,说"数组的最后2个维度必须是正方形".非常感谢!! 这是我的代码:
import numpy as np
from numpy. linalg import solve
A = np.array([[3,-1,-1,0,0,0], [-1,4,-1,-1,0,0], [0,0,-1,-1,4,-1], [0,0,0,-1,-1,3]],float)
w = np.array([5,5,0,0],float)
v = solve(A,w)
print(v)
Run Code Online (Sandbox Code Playgroud)
小智 5
由于igavriil已经写过numpy.linalg.solve,只能用于找到一个确定的系统(即sqare系数矩阵)的(确切的)解决方案.如果您的系统不足或过度确定,通常没有确切的解决方案.
如果要查找近似解,可以使用numpy.linalg.lstsq.它使用一种称为"最小二乘拟合"的方法来找到最小化整体误差的解决方案.
这个错误基本上说明的是线性系统无法明确求解。这是因为您有 6 个变量,但只有 4 个方程。换句话说,系数矩阵必须是方阵。在以下情况下会引发错误:
max(a.shape[-2:]) != min(a.shape[-2:]):
Run Code Online (Sandbox Code Playgroud)