你如何在Python中使用odeint解决方案作为变量?

时间:2014-05-20 20:04:12

标签: python numpy scipy odeint

所以基本上我用odeint来解决我所拥有的颂歌,我希望将它用作另一个等式中的变量(这个等式实际上是我的解决方案)。

所以在这里我解决了第一个颂歌(我的代码实际上是在解决一个ODE矩阵,但同样的问题仍然适用)

Omeg = odeint(f, zeros, sMesh, args=(dOmeg,om,)) 

我的f()函数定义如下:

def f(y, t, dh, v):
"""Returns dh/ds with initial values plugged in"""
# Create vector for solved DEs    
solvedEqs = range(len(dh))

# Establish a dictionary for values to substitue
subValues = {}
for i in range(0,len(v)):
    subValues.update({v[i]:y[i]}) #add {symbol:value} to dictionary

# Set each element of dh with initial values subed in to return array
for i in range(0,len(solvedEqs)):
    solvedEqs[i] = dh[i].subs(subValues)
return solvedEqs
毕竟那些好东西,我得到一个数组或数字,积分,我可以绘制以显示解决方案,等等。但问题是,我需要使用这个解决方案(让我们为...为了简单起见,假设它是一个而不是解决方案的矩阵,以插入我实际想要找到的函数:

Hs = H0
for i in range(1,order): # length of order
    Hs += ((bernoulli(i-1)*1.)/math.factorial(i-1))*(adjointOp(H0,Omeg,i))

其中bernoulli()只是一个函数,它返回该订单的bernoulli数,而adjointOp()只是给定订单的伴随运算符(换向器关系)。

我首先在Mathematica中做到了这一点,其中Omeg的解决方案是一个InterpolationFunction,但它只是作为一个变量并且成倍增加等等。但是,我不知道如何在python中处理这种情况。

0 个答案:

没有答案