Witam serdecznie. Chciałbym wykorzystać Pythona do zapisania wyników z programu Cantera w formacie NASA Thermodynamics DATA:
https://www.grc.nasa.gov/www/CEAWeb/def_formats.htm (wzór 1).
W tym celu napisałem program wzorując się na następującym:
http://www.staff.amu.edu.pl/~zcht/pliki/Aproksymacja.pdf
Program działa dla małych liczb, lecz dla dużych liczb wyświetla błąd:
C:\>python nasa2.py
Traceback (most recent call last):
File "nasa2.py", line 45, in <module>
inverse = inv(tab)
File "C:\Python27\lib\site-packages\numpy\linalg\linalg.py", line 526, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
TypeError: No loop matching the specified signature and casting
was found for ufunc inv
Uproszczony kod programu:
import sys
import numpy as np
import math
from numpy.linalg import inv
Tlow = 30
Tcommon = 100
Thigh = 500
step = 10
gas = [0 for x in range(step+1)]
for i in range(step+1):
gas[i] = 1000.0*math.sin(i)
# tabela na liste temperatur
templist = [0 for x in range(step+1)]
#wypelnienie tabeli temperaturami
for i in range (step+1):
templist[i] = Tlow+i*((Tcommon-Tlow)/step)
# macierz X wypelniona wartosciami
tab = [[0 for x in range(7)] for y in range(7)]
for a in range(7):
for b in range(7):
for i in range (step+1):
tab[a][b] += templist[i]**(-4+b+a)
# macierz Y
tab2 = [0 for x in range(7)]
# wypelnienie macierzy Y wartosciami
for a in range(7):
for i in range(step+1):
tab2[a] += gas[i]*templist[i]**(-2+a)
# odwrocenie macierzy X
inverse = inv(tab)
# mnozenie X^-1*Y
suma = np.matmul(inverse,tab2)
print suma
Ja potrzebuję dodać po jednym zerze do każdego z parametrów:
Tlow = 30
Tcommon = 100
Thigh = 500
step = 10
Zastanawiam się czy ktoś z was będzie potrafił mi pomóc.