2017-08-17 4 views
0

私の質問は、oakeの中に組み込まれた ではない関数でいくつかの値を取る方法があるかどうかです。Pythonでodeintの中の値を取る

例:私が派生語dy(x)/dt = A*x+ln(x)を持っていて、この方程式を得る前に、私はA = B*Dのような中間方程式のA throughtを計算しました。私はその過程でAの価値を取りたいと思っています。

(のみexemple)より詳細な

def func(y,t) 
    K = y[0] 
    B = 3 
    A = cos(t**2) + B 
    dy/dt = A*t+ln(t) 
    return [dy/dt] 

私は、関数のAの値を取ることができますか?

ジョシュKarpel

コードの答えはそのようなものです:

def Reaction(state,t): 

    # Integrate Results 

    p = state[0] 

    T = state[1] 

    # function determine enthalpy of system 

    f1(T,p) = enthalpy 

    # function determine specific volume of system 

    f2(T,p) = specific volume 

    # function determine heat release by reactions 

    f3(T,p,t) = heat release by reactions 

#デリバティブ

dp/dt = f(T,p,enthalpy,specific volume,heat release by reactions) 

dT/dt = f(T,p,enthalpy,specific volume,heat release by reactions) 

実際のコードは、それよりも大きいです。しかし、私は同じサイズのodeintの解法の過程でf1(エンタルピー)、f2(比体積)、f3(熱放出)の値をベクトルまたはタプルとして保存する方法があるかどうかを知りたいpとT.

答えて

0

あなたが望むものは完全にはっきりしませんが、統合する関数に別の値を渡す必要があるようです。

  1. scipy.integrate.odeintは、署名y(t, A)を持つことができ積分関数に渡される追加の引数が含まれていargs引数を取る:私は考えることができる2つのオプションがあります。
  2. integrand関数y(t, A)の引数がすでに設定されているAの新しい関数を構築するのに、functools.partialを使用できます。
+0

あなたは入力引数について話しています。私は、統合された値以外のベクトルや値との積分関数を取り除く方法があるかどうかについて話していました。 –

+0

明確にする:積分の結果を関数Y(A)にしますか? [SymPy](http://www.sympy.org/)は、シンボリックな積分/微分を行うことができます。あるいは、Aの値を知っているように思えます - 興味のあるAの値ごとに積分を単純に計算することができない理由がありますか? –

+0

注目のおかげでジョシュ。もっと問題を明らかにする。原子炉の熱力学的挙動を計算するためのコードを作成しています。私は、圧力と別の温度を計算するための2つの微分方程式を扱っています。しかし、いくつかの熱力学的特性は解決されていませんが、私はその値をグラフにプロットすることをお勧めします。 –

関連する問題