问题或问题 | 回答 |
---|---|
如何选择错误阈值 |
粗略地说,这意味着你想 |
我想要精确到计算机水平的答案。为什么我不能简单的设定 |
你可以接近机器的精度,但不是那么接近。求解器不允许 |
我如何告诉解算器,我不关心得到一个解决方案组件的准确答案? |
你可以增加绝对容错 |
问题或问题 | 回答 |
---|---|
使用ODE套件可以解决多大的问题? |
主要的限制是内存和时间。在每个时间步,非刚性问题的求解器分配长度向量 如果问题是不僵硬的,或者如果你正在使用 |
我在解一个非常大的系统,但只关心它的几个组成部分 |
是的。的 |
集成的启动成本是多少?我如何降低它? |
当求解器试图找到与问题规模相适应的步长时,启动成本最大。如果您碰巧知道一个合适的步长,请使用 |
积分器采取的第一步大小太大,它错过了重要的行为。 |
属性指定第一步大小 |
问题或问题 | 回答 |
---|---|
解决方案和我期望的不一样。 |
如果您的期望是正确的,那么就减少默认值的容错。为了精确地解决“长”时间间隔内集成的问题,以及适度不稳定的问题,需要一个较小的相对误差公差。 检查是否有解决方案组件在一段时间内小于它们的绝对容错性。如果是这样,就不需要在这些组件中使用任何正确的数字。对于这些组件来说,这可能是可以接受的,但不能准确地计算它们可能会降低依赖它们的其他组件的准确性。 |
我的情节不够流畅。 |
增加价值 |
我正在绘制它的解,它看起来很好,但代码在某个点卡住了。 |
首先验证ODE函数在代码卡住的地方是否平滑。如果不是,那么求解器必须采取小步骤来处理这个问题。它可能有助于将积分区间分割成ODE函数平滑的部分。 如果函数是平滑的,而代码所采取的步骤非常小,那么您可能正在尝试用一个不用于此目的的解决器来解决一个棘手的问题。切换到使用一个僵硬的解算器 |
如果是末值而不是初值呢? |
ODE套件的所有求解器都允许您在时间上向后或向前求解。解析器的语法是 |
我的集成过程非常缓慢,使用了太多的时间步骤。 |
首先,检查 如果ODE函数没有明显的变化 最后,确保ODE函数是以一种有效的方式编写的。求解者在ODE函数中求导数很多次。数值积分的代价很大程度上取决于求ODE函数的代价。与其在每次求值时重新计算复杂的常量参数,不如将它们存储在全局变量中,或者只计算一次并将它们传递给嵌套函数。 |
我知道,解决方案有时会发生根本性的变化 |
如果你知道有一个急剧的变化 如果微分方程有周期系数或解,通过将最大步长限制为周期的长度,确保解算器不会跨越周期。金宝搏官方网站 |
求解器能处理用直线法离散的偏微分方程吗? |
是的,因为离散化产生了一个ode系统。取决于离散化,你可能有一个涉及质量矩阵的形式,这是ODE求解器提供的。系统通常是僵硬的。如果偏微分方程是抛物线的,或者在不同的时间尺度上发生一些现象,如流体中的化学反应,这是可以预期的。在这种情况下,使用四个硬解算器之一 如果有很多方程,用 如果系统不僵硬,或者不是很僵硬,那么 用MATLAB可以直接求解一维抛物型椭圆型偏微分方程®PDE解算器 |
我能整合一组抽样数据吗? |
不直接。相反,用插值或其他方法来拟合数据,将数据表示为函数。这个函数的平滑性是至关重要的。分段多项式拟合(如样条)看起来很平滑,但对求解器来说很粗糙;当拟合的导数有跳跃时,求解器会采取小步骤。要么使用平滑函数来表示数据,要么使用低阶求解器( |