具有复杂元素的矩阵的 numpy 最小二乘解

问题描述 投票:0回答:1

我正在尝试求解方程 y=a*x。我有 x (x1,x2,x3) 和 y (y1,y2,y3) 的三个测量值,并试图找到“a”(斜率)。首先重要的是 y 和 X 是复数(例如,a+ib)。当我除 y1/x1 和其余数据时,我得到正确的答案(我已经知道答案),但是当我使用 np.linalg.lstsq() 时,我得到不同的答案。 这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
y1= -19.64927911-6.1398258j
x1=-1.1754612296645994+1.246124677990216*1j
y2=20.362010267083804+5.457126922032681*1j
x2=-1.1754612296645994+1.246124677990216*1j
y3=-21.582640711300716-4.866985215398231*1j
x3=1.0043723963072644-0.6003393298974578*1j
coeff_1=y1/x1

########linear least square method
X=np.vstack((x1,x2,x3))
Y=np.vstack((y1,y2,y3))

[coeff_2, resid, _, singular_values] = np.linalg.lstsq(X, Y, rcond=None)
print(coeff_1)
print(coeff_2)

如果运行它,coeff_1 与 coeff_2 不同(这是不正确的)。请帮我解决这个问题。

python numpy least-squares
1个回答
0
投票

我从您的数据中可视化了值

y1/x1
y2/x2
y3/x3

它们差异很大。为什么用该数据进行最小二乘拟合应该给出准确的值

y1/x1

© www.soinside.com 2019 - 2024. All rights reserved.