我正在将MATLAB代码翻译成Python,但是在担心翻译之前,我想了解一下MATLAB,特别是它的ODE15s解算器是如何解释一个方程的。在
我有一个在主脚本中调用的函数脚本,该函数脚本包含以下等式:function testFun=testFunction(t,f,dmat,releasevec)
testFun=(dmat*f)+(releasevec.');
在testFunction中,t表示时间,f表示我要求解的值,dmat表示我想知道的常数矩阵,并将vec释放到一个附加常数的向量。在
主脚本中的ODE15s解算器通过以下几行发挥其魔力:
^{pr2}$
fresults最初是一个包含f结果的零表。这些选项调用odeset以获取“非负”值。上面的d值矩阵是一个6x6矩阵。我已经计算了所有的d值和释放值。我的问题是:ODE15如何与测试函数方程中给定的6x6矩阵进行积分?我试图用手来解决这个问题,但没有成功。任何帮助都将不胜感激!!在
#
def func(y, t, params):
f = 5.75e-16
f = y
dmat, rvec = params
derivs = [(dmat*f)+rvec]
return derivs
# Parameters
dmat = np.array([[-1964977.10876756, 58831.976165, 39221.31744333, 1866923.81515922, 0.0, 0.0],
[58831.976165, -1.89800738e+09, 0.0, 1234.12447489, 21088.06180415, 14058.70786944],
[39221.31744333, 0.84352331, -7.59182852e+09, 0.0, 0.0, 0.0],
[1866923.81515922, 0.0, 0.0, -9.30598884e+08, 0.0, 0.0],
[0.0, 21088.10183616, 0.0, 0.0, -1.15427010e+09, 0.0],
[0.0, 0.0, 14058.73455744, 0.0, 0.0, -5.98519566e+09]], np.float)
new_d = np.ndarray.flatten(dmat)
rvec = np.array([[0.0], [0.0], [0.0], [0.0], [0.0], [0.0]])
f = 5.75e-16
# Initial conditions for ODE
y0 = f
# Parameters for ODE
params = [dmat, rvec]
# Times
tStop = 2.0
tStart = 0.0
tStep = 1.0
t = np.arange(tStart, tStop, tStep)
# Call the ODE Solver
soln = odeint(func, y0, t, args=(params,))
#y = odeint(lambda y, t: func(y,t,params), y0, t)
最后
以上就是坦率饼干最近收集整理的关于matlab中矩阵积分,MATLAB的ode15如何处理包含值矩阵的方程的积分?的全部内容,更多相关matlab中矩阵积分,MATLAB内容请搜索靠谱客的其他文章。
发表评论 取消回复