在python

时间:2017-08-17 22:12:30

标签: python scipy odeint

我的问题是,是否有办法在函数中取一些值而不是 整合在odeint中。

例如:如果我有一个导数dy(x)/dt = A*x+ln(x),并且在得到这个等式之前,我计算了一个像A = B*D这样的中间等式的A通过。我希望在此过程中获取A的价值。

更详细(仅举例):

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

我可以使用A的函数值吗?

Josh 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

#Derivatives

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

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

真正的代码比那更重要。但是,我想知道是否有一种方法可以将f1(enthalpy),f2(比容),f3(热释放)的值存储为odeint解决过程中的向量或元组,其大小与p和T.

1 个答案:

答案 0 :(得分:0)

它并不完全清楚你想要什么,但听起来你需要将另一个值传递给你正在整合的功能。我能想到两个选择:

  1. scipy.integrate.odeint接受一个args参数,该参数包含要传递给integrand函数的额外参数,然后可以使用签名y(t, A)
  2. 您可以使用functools.partial构建一个新函数,其函数A已经设置了y(t, A)