matlab中矩阵积分,MATLAB的ode15如何处理包含值矩阵的方程的积分?

本文探讨了MATLAB中的ODE15s解算器与Python中ODEINT函数的工作原理,特别是在处理包含6x6矩阵的微分方程组时的行为差异。作者在尝试将MATLAB代码翻译成Python的过程中遇到了疑问,并寻求了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在将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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值