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

问题描述

此处是新编码器。我有2行输入和3行输出,试图在输入之间进行插值。输出是实验确定的系数。输入的数据确实形成一个网格。

输入的是温度,浓度百分比。输出是系数A,B,C。

T      %
[[316,3],[316,6],[322,[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,6,1896,53,0.0190],322,966,107,0.0093],1932,54,0.0186],333,999,111,0.0090],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

关于前进的任何想法?我觉得这里有一个简单的答案,但这堂课是编码的速成班。

解决方法

插值应该与未知函数一起使用,这就是为什么要插值。如果功能已知,则可以将它们拟合到数据中。

我建议您看看herescipy.interpolate.interp2d。您的每个输出都是两个变量(输入)的函数,因此我将对每个输出变量分别进行3个2D插值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...