首页 > 解决方案 > 在组件上使用复杂步骤必须满足哪些要求?

问题描述

组件必须满足哪些要求才能使用复杂的步骤来逼近组件的偏导数?

标签: openmdao

解决方案


首先,函数必须以一种可以接受复杂输入并提供相应输出的方式定义。 许多功能numpy支持这一点。一个值得注意的例外是arctan2

您可以自己演示一下,让我们使用 np.sin 并使用复数步计算其导数:

>>> 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.org/wiki/Complex_analytic_function


推荐阅读