首先,我需要道歉,因为下面的问题可能只是愚蠢的,所以请原谅我对数学的了解很少到零。
我已经使用 VBA 工作了很长时间并且对 Python 有点熟悉,我希望有人可以帮助我解决以下问题。
在下表中,我得到了一些值,其中列标题表示密度,表的第一列表示温度。
密度/温度
0.5
0.505
0.51
0.515
0.52
0.525
0.53
0.535
0.54
0.545
0.55
-2.5
1.051
1.05
1.048
1.047
1.046
1.045
1.043
1.042
1.041
1.04
1.039
-2
1.05
1.049
1.047
1.046
1.045
1.044
1.042
1.041
1.04
1.039
1.038
-1.5
1.048
1.047
1.046
1.044
1.043
1.042
1.041
1.04
1.038
1.038
1.037
-1
1.047
1.046
1.044
1.043
1.042
1.41
1.039
1.038
1.037
1.037
1.036
-0.5
1.046
1.045
1.043
1.042
1.041
1.04
1.038
1.037
1.036
1.036
1.035
0
1.044
1.43
1.042
1.041
1.04
1.038
1.037
1.036
1.035
1.035
1.034
0.5
1.043
1.042
1.04
1.039
1.038
1.037
1.036
1.035
1.034
1.033
1.032
1
1.41
1.04
1.039
1.038
1.037
1.036
1.035
1.034
1.033
1.032
1.031
1.5
1.04
1.039
1.037
1.037
1.036
1.035
1.034
1.033
1.032
1.031
1.03
2
1.038
1.038
1.036
1.035
1.034
1.033
1.032
1.031
1.03
1.03
1.029
2.5
1.037
1.036
1.035
1.034
1.033
1.032
1.031
1.03
1.029
1.029
1.028
3
1.036
1.035
1.033
1.033
1.032
1.031
1.03
1.029
1.028
1.028
1.027
3.5
1.034
1.033
1.032
1.031
1.03
1.03
1.029
1.028
1.027
1.027
1.026
4
1.033
1.032
1.031
1.03
1.029
1.029
1.028
1.027
1.026
1.026
1.025
4.5
1.031
1.03
1.029
1.029
1.028
1.027
1.026
1.026
1.025
1.025
1.024
5
1.03
1.029
1.028
1.027
1.027
1.026
1.025
1.025
1.024
1.023
1.023
5.5
1.028
1.028
1.027
1.026
1.025
1.025
1.024
1.023
1.022
1.022
1.022
现在我的实际 table 要大得多,这就是问题所在。将这一切添加到 VBA 模块中首先会使其打开或保存速度非常慢。
当然,我可以将整个表格保存到工作表中并作为查找表处理。但是考虑到这一点,将它放在一个可以生成完整表格的公式中会更好/更干净。
如前所述,在数学方面,我不是数据分析师,也不是真正的菜鸟。我只是希望只有一些可用的软件或一些 python 模块,我可以在其中将表格作为 csv 文件打开,该文件将被分析并获得某种公式常量。当然这可以更好地描述,但抱歉我不知道所有的数学术语。
也许整体是不可能的,但我愿意接受任何反馈。
额外补充澄清:
我可以理解的不是很清楚,我真诚的道歉!我的问题是,是否有某种方法可以从表中检索由 X 和 Y 定义的温度和密度的因子。 X 和 Y 会给你一个坐标,它代表这个表中的一个值。现在的问题是温度和密度是否有一个因子/公式来替换表格,这样我就可以计算出 X 和 Y 坐标的值
最佳答案
我假设你想找到一个近似函数,否则没有什么可谈的。据我所知,您的数据可以用线性公式近似。
我们可以使用 linear regression或者,在这种情况下,method of ordinary least squares .我们的最终公式看起来像 f(Density, Temperature) = k1*Density + k2*Temperature + k3
.但首先,让我们修复提供的数据。
接下来,我建议normalize data representation .将温度参数放在单独的列中。使用 Power Query 编辑器加载数据并应用非透视温度列。
然后我们必须为近似公式中的自由系数 k3 的归一化数据添加一个附加列。它的所有值都应该等于 1。
为了方便起见,让我们重命名未透视数据表。我将此表命名为 Data
完成所有准备后,将此公式放入新工作表上的任何单元格中:
=LET(MatrixA; Data[[Density]:[Coeff]]; MatrixB; Data[Value]; MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(MatrixA);MatrixA));TRANSPOSE(MatrixA));MatrixB))
在结果中,您将获得所需公式的系数 k1、k2、k3。我用提供的数据得到了这个结果:
f(density, temperature) = -0.0025*density - 0.1783*temperature + 1.1329
期望的误差绝对值为0.003
在这种情况下。有关更多详细信息,我建议观看此视频:
关于python - 找到一个公式/常数将表格替换为一个公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71988051/