数组除法线性最小lstsq给出错误结果

时间:2019-07-30 15:48:53

标签: python arrays matlab numpy

我正在使用非平方矩阵在Python中练习矩阵除法。从4 x 1列向量(E)和1 x 3行向量(S)开始,我使用external将它们相乘以生成矩阵(A)。然后,我尝试使用线性代数中的线性最小二乘从E和S获得A1以及从A和S获得E1,但是得到错误的结果...

线性代数:线性最小二乘和线性代数求解(不适用于非平方矩阵)。

Python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
E=np.array([[1],[5],[4],[2]])
S=np.array([3,5,4])
A=np.array([[3,5,4],[15,25,20],[12,20,16],[6,10,8]])
A1=np.outer(E,S)
print(A1)
[S1,resid,rank,s] =np.linalg.lstsq(A,E,rcond=None)
print(S1)
[E1t,resid,rank,s] =np.linalg.lstsq(A.T,S.T,rcond=None)
print(E1t)
E1=E1t.T
print(E1)

MATLAB

E=[1;5;1;2]
S=[3,5,4]
A=E*S
E1=A/S
A1=E\A

对于A1,这将产生一个正确比率的矢量,但其因子为50倍... [0.06 0.1 0.08]与[3,5,4]相对;而对于E1 [0.02173913 0.10869565 0.08695652 0.04347826] ,, 5,4,2]仍然是正确的比率,但系数是46。我正在将其与MATLAB的左右除法进行比较,得出正确的结果。

0 个答案:

没有答案