我的问题如下(与车辆的运动有关):我在 Matlab 中使用 dsolve 来求解一个关于 jerk 的微分方程(这是加速度的导数),然后我对解进行三次积分以获得加速度,速度和位置。我在每个积分中添加必要的积分常数。
然后为了计算所有常数(总共 6 个),我使用求解和 6 个方程,这些方程与初始位置、速度、加速度和加加速度等有关。所以现在我对每个常数都有一个符号表达式。
为了给这些常量赋予数值,我使用了两种方法。一种是使用 double(vpa(subs(symb_expression,{ ABC}, {no1,no2,no3}))) ,它工作正常但速度很慢。为了让它更快,我考虑采用符号表达式并使用函数使其成为“正常”计算。[例如,如果符号表达式是 C1=a+b*exp(v1/v2),我只需复制并将此粘贴到一个函数中,该函数将 a、b、v1 和 v2 作为输入并返回 C1。] 然而我的表情很长。
问题是第一种方法我得到了我想要的,而第二种方法在接近模拟结束时变得疯狂。(在第一部分,即时间 < 14 的情况下,它们完全相同,尽管无法看到,因为错误情况下的最终值非常大,并迫使图形以不同的方式缩放)。这个问题可以在左上图和右下图看到(考虑其他无关的)。
我认为这与精度有关,并尝试增加数字值,但并没有解决问题。
任何想法都会受到欢迎!