Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Modelica 如何理解;“限制步长”;及;“控制错误”;在迪莫拉_Modelica_Dymola - Fatal编程技术网

Modelica 如何理解;“限制步长”;及;“控制错误”;在迪莫拉

Modelica 如何理解;“限制步长”;及;“控制错误”;在迪莫拉,modelica,dymola,Modelica,Dymola,Dymola提供了一个分析数值积分过程的函数,主要的两个结果是“限制步长”和“控制误差”,我在我的模型中做了一些测试,如下面的屏幕截图所示 但我在分析这些数据时遇到了几个问题: 积分器如何选择Dymola中的积分步长 对于“限制步长”,这是否意味着积分器必须使用较小的步长,以便相应变量的积分可以收敛 对于“支配误差”,这是否意味着相应变量在迭代过程中会导致临界误差 我对OpenModelica的了解比Dymola多,但我想以下几点通常是正确的: Dassl积分器(标准)使用BDF方法 (向后微

Dymola提供了一个分析数值积分过程的函数,主要的两个结果是“限制步长”和“控制误差”,我在我的模型中做了一些测试,如下面的屏幕截图所示

但我在分析这些数据时遇到了几个问题:

  • 积分器如何选择Dymola中的积分步长
  • 对于“限制步长”,这是否意味着积分器必须使用较小的步长,以便相应变量的积分可以收敛
  • 对于“支配误差”,这是否意味着相应变量在迭代过程中会导致临界误差

  • 我对OpenModelica的了解比Dymola多,但我想以下几点通常是正确的:

  • Dassl积分器(标准)使用BDF方法 (向后微分公式)并求解一个非线性系统 用牛顿来计算状态导数。你可以去的地方 提供一个积分器容差(我想默认值是10^-6)。这个 “解算器”为牛顿选择步长,以便它能够尊重该步长 容错性。我认为这是通过观察 雅可比矩阵的正则性。它离奇点有多近。特征值
  • 限制步长:变量是约束性最强的变量。不是为了收敛,而是为了容错。加上步长实际上必须降低,否则我想这里不会跟踪
  • 主要错误:我认为这是因为这个变量导致的收敛失败。它离应该的值最远。通常情况下,在这里会做一些事情,比如完全旋转和对值进行小的调整(除了降低步长之外)。关于最后一个,我不是100%确定

  • 我对OpenModelica的了解比Dymola多,但我想以下几点通常是正确的:

  • Dassl积分器(标准)使用BDF方法 (向后微分公式)并求解一个非线性系统 用牛顿来计算状态导数。你可以去的地方 提供一个积分器容差(我想默认值是10^-6)。这个 “解算器”为牛顿选择步长,以便它能够尊重该步长 容错性。我认为这是通过观察 雅可比矩阵的正则性。它离奇点有多近。特征值
  • 限制步长:变量是约束性最强的变量。不是为了收敛,而是为了容错。加上步长实际上必须降低,否则我想这里不会跟踪
  • 主要错误:我认为这是因为这个变量导致的收敛失败。它离应该的值最远。通常情况下,在这里会做一些事情,比如完全旋转和对值进行小的调整(除了降低步长之外)。关于最后一个,我不是100%确定
  • Dymola中有几个不同的积分器。使用哪种阶跃控制器取决于所选积分器最适合什么。如前所述,默认的集成器是Dassl,它实现了BDF方法。选择步长的逻辑相当复杂,它与积分顺序选择交织在一起。简而言之,Dassl对局部误差进行估计,然后选择步长和顺序,以使估计值与用户提供的公差相匹配。有关详细信息,请参阅,尽管可能会对Dymola中使用的解算器进行自适应

  • “限制步长”是指该变量的误差(可能还有其他变量的误差)太大,以至于积分器必须放弃该步长,并用较小的步长重复该步长

  • 从Dymola手册:

    变量控制误差的次数,即 积分误差大于任何其他状态变量

    因此,回答您的问题:这并不意味着严重错误(请参阅上面的“限制步长”)。相反,这只是意味着在这一特定步骤中,该状态的误差是所有状态中最大的。这一步骤可能已经成功

  • Dymola中有几个不同的积分器。使用哪种阶跃控制器取决于所选积分器最适合什么。如前所述,默认的集成器是Dassl,它实现了BDF方法。选择步长的逻辑相当复杂,它与积分顺序选择交织在一起。简而言之,Dassl对局部误差进行估计,然后选择步长和顺序,以使估计值与用户提供的公差相匹配。有关详细信息,请参阅,尽管可能会对Dymola中使用的解算器进行自适应

  • “限制步长”是指该变量的误差(可能还有其他变量的误差)太大,以至于积分器必须放弃该步长,并用较小的步长重复该步长

  • 从Dymola手册:

    变量控制误差的次数,即 积分误差大于任何其他状态变量

    因此,回答您的问题:这并不意味着严重错误(请参阅上面的“限制步长”)。相反,这只是意味着在这一特定步骤中,该状态的误差是所有状态中最大的。这一步骤可能已经成功

  • 我认为“严重错误”并不完全正确。支配误差意味着变量比其他变量有更大的估计数值误差,但这是由数值解算器管理的。我认为“临界误差”并不完全正确。支配误差意味着该变量比其他变量具有更大的估计数值误差,但这将由数值解算器进行管理。