如何在Python中从测试数据进行插值?2套输入

2024-09-29 23:24:25 发布

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

这里是新的编码员。我有2行输入和3行输出,试图在输入之间插值。输出由实验确定。输入数据确实形成了一个网格

输入值为温度%,浓度%。输出为系数A、B、C

T      %
[[316, 3],
 [316, 6],
 [322, 3],
 [322, 6],
 [333, 3],
 [333, 6]]
A, B, C
[[0.2925*10**-11, 7517.9, -0.0027],
 [0.1275*10**-14, 9826.53, -0.0471], 
 [0.2506*10**-13, 8923.77, -0.0010],
 [0.2506*10**-15, 10669.89, -0.2284],
 [0.7319*10**-10, 6770.42, -0.0467],
 [0.1800*10**-13, 9259.93, -0.0564]]

我已经尝试过使用numpy和scipy.linalg进行多维线性插值,就像课堂上教的那样,但我认为它只适用于具有已知函数的数据。方阵的列是[1],T,%,T*%,T/%,%/T。我想它只适用于方阵,但我仍然没有得到好的值。这一个只是试图暂时解出系数A

import numpy
import scipy.linalg
N = 6
coorA = numpy.zeros((N,N))
coorA = [[1, 316, 3, 948, 105, 0.0095],
         [1, 316, 6, 1896, 53, 0.0190],
         [1, 322, 3, 966, 107, 0.0093],
         [1, 322, 6, 1932, 54, 0.0186],
         [1, 333, 3, 999, 111, 0.0090],
         [1, 333, 6, 1998, 56, 0.0180]]
solnA = numpy.zeros(N)
solnA = [0.2925*10**-11, 0.1275*10**-14, 0.2506*10**-13, 0.2691*10**-15, 0.7319*10**-10, 0.18*10**-13]
cA = numpy.zeros(N)
cA = scipy.linalg.solve(coorA, solnA)
x = 316
y = 6
A = cA[0] + cA[1]*x + cA[2]*y + cA[3]*x*y + cA[4]*x/y + cA[5]/x*y
print (coorA)
print (solnA)
print (cA)
print (A)
# A output was -9.966296504331275e-11
# A output should be 0.1275*10**-14 as it's the 2nd line of inputs

你知道如何前进吗?我觉得有一个简单的答案,但这门课是一个关于编码的速成课程


Tags: 数据importnumpyoutputzerosscipyca插值
1条回答
网友
1楼 · 发布于 2024-09-29 23:24:25

插值应该适用于未知函数,这就是为什么要插值。如果函数是已知的,您将使它们与数据相匹配

我建议您查看一下scipy.interpolate.interp2d,如图所示here。每个输出都是两个变量(输入)的函数,所以我会对每个输出变量分别进行3次2D插值

相关问题 更多 >

    热门问题