python - 使用 Python 将系数拟合到数据和函数

标签 python numpy matrix linear-algebra

我必须计算下面函数的系数(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/

相关文章:

python - 如何创建上三角矩阵

algorithm - 如何获得解决 `game of fifteen` 的最小步数?

python - 我可以在 Python 中搜索一段字符串但保持索引相对于原始字符串吗?

python - 使用 ROS 回调时动态更新 Matplotlib 3D 图

python - 奇怪的 lxml 行为

python - 来自单个种子的多个独立随机数流

haskell - 如何在 Haskell 中使用 setElem 更新矩阵

python - 为什么在 django-admin 后端中,markdown 小部件不与 django-markdown 一起显示?

python - 如何在 Python 中为余弦相似度运行一个大矩阵?

python - 在线 PPO : TensorFlow Session returns NaN