我必须计算下面函数的系数(c1-c9),而温度(to,tc)和解(y)都是通过不同点的测量数据给出的。我尝试用 numpy.linalg.solv 解决它,但它引发了奇异矩阵错误,我不知道如何避免。
c[0] + c[[0]]*to[0] + c[[1]]*tc[0] + c[3]*to[0]^2 + c[4]*to[0]*tc[0] + c[5]*tc[0]^2 + c[6]*to[0]^3 + c[7]*tc[0]*to[0]^2 + c[8]*to[0]*tc[0]^2 + c[9]*tc[0]^3 = y[0]
有人可以给我一个线索或解决方案,告诉我如何用 Python 解决这个问题吗?这是我到目前为止的代码
import numpy as np
to1 = 10
tc1 = 30
y1 = 148450
to2 = 5
tc2 = 30
y2 = 124955
to3 = 0
tc3 = 30
y3 = 104596
to4 = -5
tc4 = 30
y4 = 86964
to5 = -10
tc5 = 30
y5 = 71704
a = np.array([[1,to1,tc1, to1**2, to1*tc1], [1,to2,tc2,to2**2, to2*tc2],[1,to3,tc3,to3**2, to3*tc3],[1,to4,tc4,to4**2, to4*tc4],[1,to5,tc5,to5**2, to5*tc5]])
b = np.array([y1,y2,y3,y4,y5])
x = np.linalg.solve(a, b)
print x
最佳答案
你的问题
在所有数据点中,您都有tc=30
!
当您尝试使用 to, tc
函数拟合数据时,算法会告诉您(使用它唯一知道的语言,线性代数语言)您无法估计变异性当数据集中没有 tc
的变化时,将 y
作为 tc
的函数。
如何纠正您的问题
有更多的数据点,两个自变量的值不同,并且尽可能使用最小二乘法,使用您可以收集的所有数据点(我的意思是,要估计 10 个参数?使用数十个或数百个数据点)。这部分答案与您想要使用的编程语言无关:拥有更多数据。
关于python - 使用 Python 将系数拟合到数据和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513969/