Как я могу ускорить решение после переменной?

1

Я хотел бы поместить разные уравнения друг в друга, а затем решить после 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)
Теги:
optimization
python-3.x
sympy

1 ответ

0

Кажется, вы решаете по существу одно и то же уравнение много раз, просто с разными коэффициентами. Было бы более эффективно вводить символы

p, M_Ar, ...,  eta = symbols('p, M_Ar, ... , eta', positive=True)

и решить уравнение один раз. Затем замените константы с плавающей запятой на решение,

values = {p: 103000, ..., eta: 0.00012217}
result_numeric = result.subs(values)
  • 0
    Спасибо за ваш ответ. Но я решаю уравнение только один раз, но напрямую со значениями. Но я могу попробовать твой код ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню