Здесь новый кодер. У меня есть 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
Есть идеи, как двигаться дальше? Я чувствую, что есть простой ответ, но этот курс — ускоренный курс кодирования.