阵分线性最小二乘法给出错误结果

2024-10-06 11:22:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在练习矩阵除法,在Python中使用非平方矩阵。从一个4×1的列向量(E)和一个1×3的行向量(S)开始,我使用outer将它们相乘,生成矩阵(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]与[1,5,4,2]相对,这也是正确的比率,但系数为46。我将其与MATLAB的左右除法进行比较,得出正确的结果。你知道吗


Tags: importa1asnp线性矩阵array向量