当我使用SUB给consants赋值时,以及当我直接应用数字时,Matlab符号解算器给出了不同的解

当我使用SUB给consants赋值时,以及当我直接应用数字时,Matlab符号解算器给出了不同的解,matlab,solver,symbolic-computation,Matlab,Solver,Symbolic Computation,我的问题与车辆的运动有关:我使用Matlab中的dsolve求解一个关于急动的微分方程,它是加速度的导数,然后我对解进行三次积分,得到加速度、速度和位置。我在每次积分中加上必要的积分常数 然后为了计算所有的常数6,我使用了解和6个方程,这些方程与初始位置、速度、加速度和加速度等有关,所以现在我有了每个常数的符号表达式 为了给这些常量提供数值,我使用了两种方法。一种是使用doublevpasubssymb_表达式,{abc},{no1,no2,no3},它工作正常,但速度非常慢。为了加快计算速度,

我的问题与车辆的运动有关:我使用Matlab中的dsolve求解一个关于急动的微分方程,它是加速度的导数,然后我对解进行三次积分,得到加速度、速度和位置。我在每次积分中加上必要的积分常数

然后为了计算所有的常数6,我使用了解和6个方程,这些方程与初始位置、速度、加速度和加速度等有关,所以现在我有了每个常数的符号表达式

为了给这些常量提供数值,我使用了两种方法。一种是使用doublevpasubssymb_表达式,{abc},{no1,no2,no3},它工作正常,但速度非常慢。为了加快计算速度,我考虑采用符号表达式,并使用函数将其作为正常计算。[例如,如果符号表达式为C1=a+b*expv1/v2,我只需将其复制并粘贴到一个函数中,该函数将a、b、v1和v2作为输入,并返回C1.]但是,我的表达式非常长

问题是,第一种方法得到的正是我想要的,而第二种方法在接近模拟结束时变得疯狂。在第一部分中,即时间<14时,它们完全相同,尽管无法看到,因为错误案例中的最终值非常大,并且迫使图形以不同的比例缩放。这个问题可以在左上角和右下角的图中看到,其他的不相关。 我认为这与精度有关,并尝试增加数字值,但没有解决问题


任何想法都是非常受欢迎的

请尝试使用此函数来转换,而不是复制和粘贴:我尝试了此函数,但不幸的是结果是相同的,您可能正在处理数字精度问题。复制粘贴数据从来都不是一个好主意,很容易出错,在大多数情况下都应该避免——您确定得到了准确的值吗?看起来您正在处理指数-您确定在转换为双精度时没有不足或溢出吗?即使使用vpa转换为可变精度,在某些情况下,如果`位的值对于特定问题来说不够高,也会导致问题。如果没有复制当前问题的真正可运行代码,就不可能说得更多。