组件上使用复阶必须满足哪些要求?

问题描述 投票:0回答:1

一个组件必须满足哪些要求才能使用复杂的步骤来近似组件上的部分导数?

openmdao
1个回答
0
投票

首先,函数的定义必须使其能够接受复杂的输入并提供相应的输出。 许多 中的职能。numpy 支持这一点。 一个明显的例外是 arctan2.

你可以自己演示一下,让我们使用 np.sin 并用 complex-step 计算它的导数。

>>> import numpy as np
>>> x = 3.231662
>>> np.sin(x)
-0.08994761472861613
>>> dx = 0+1E-16j
>>> # The complex step solution
>>> (np.sin(x+dx) - np.sin(x))/1.0E-16j
(-0.995946497862527-0j)
>>> # The analytic solution
>>> np.cos(x)
-0.995946497862527

基本上,你的组件中的数学需要包含一些函数,这些函数可以干净利落地处理复数,而不会截断虚数部分。 例如,如果你曾经只使用实数进行查表,那就意味着如果输入的虚数部分发生变化,响应就不会改变。

其次,函数必须是 复杂分析. 这基本上意味着它们在复数平面的两个方向上都可以连续微分。 绝对值是一个非复分析函数的例子。 你可以在这里阅读更多关于复分析函数的信息。 https:/en.wikiversity.orgwikiComplex_analytic_function(复分析函数)

© www.soinside.com 2019 - 2024. All rights reserved.