我想将不同的方程式放入彼此,然后在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)
答案 0 :(得分:0)
似乎您多次求解基本相同的方程,只是系数不同。引入符号
会更有效p, M_Ar, ..., eta = symbols('p, M_Ar, ... , eta', positive=True)
并求解一次方程式。然后用
将浮点常量替换为 solutionvalues = {p: 103000, ..., eta: 0.00012217}
result_numeric = result.subs(values)