Я хотел бы поместить разные уравнения друг в друга, а затем решить после d. К сожалению, это берет навсегда, и в какой-то момент он говорит мне, что память заполнена. Могу ли я это ускорить? Я делаю что-то неправильно? Команда должна быть правильной, потому что с более простой формулой я уже сделал то же самое, не вставляя друг в друга.
Вот мой модуль с уравнениями:
## Parameter in SI-Einheiten
p = 103000 # Pa
M_Ar = 0.039948 # kg/mol
R = 8.314 # J/(mol*K)
A_N = 0.0123
gamma = 3*10**(-4)
g = 9.81 # m/s^2
cw2 = 0.45
cw1 = 0.18
# --------
## Eingabe der Temperatur
choice = 1
if choice == 1:
temp = 298.15
roh_titan = 4505 # kg/m^3
eta = 0.0000225
elif choice == 2:
temp = 2000
roh_titan = 4000 # kg/m^3
eta = 0.00012217
# --------
## Berechnung Geschwindigkeit u für allgemein cw
def u_cw(du, u3):
return (sigma_p()*4/3*du/cw(du, u3)*g)-(u3*10**(-3))**2
# ------
# Berechnung cw-Wert
def cw(d4, u4):
return 24/re(d4, u4)*(1+0.15*re(d4, u4)**0.687)+0.44
# Berechnung Reynoldszahl
def re(d2, u2):
return roh_ar()*u2*d2/eta
## Berechnung Dichte Argon
def roh_ar():
return p*M_Ar/(R*temp)
def sigma_p():
return roh_titan/roh_ar()
И вот мой сценарий:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
import pandas as pd
import fw_istgleich_fg_NurEinCw
from sympy import *
print('Datei einlesen')
## Aus Datei lesen mit genfromtxt und ausgeben
data = np.genfromtxt(dateiname3, skip_header=1, usecols=(0,1,4), delimiter='\t', invalid_raise=False, filling_values=0)
print('Datei eingelesen')
xx = data[0::,0]
yy = data[0::,1]
velocity_1d = data[0::,2]
# definiere Dataframe
vel_Coord = {'x':xx,
'y':yy,
'velocity': velocity_1d} # in mm/s, muss im Modul umgerechnet werden!
df = pd.DataFrame(vel_Coord)
print('Dataframe wurde erzeugt')
# Geschwindigkeit in Durchmesser umrechnen
diameter1 = []
diameter2 = []
Эта команда должна вызывать уравнения, а затем решать их после d:
d, geschw = symbols('d, geschw')
result = solve(fw_istgleich_fg_NurEinCw.u_cw(d, geschw), d)
print(result)
Кажется, вы решаете по существу одно и то же уравнение много раз, просто с разными коэффициентами. Было бы более эффективно вводить символы
p, M_Ar, ..., eta = symbols('p, M_Ar, ... , eta', positive=True)
и решить уравнение один раз. Затем замените константы с плавающей запятой на решение,
values = {p: 103000, ..., eta: 0.00012217}
result_numeric = result.subs(values)