Какие требования должны быть выполнены, чтобы использовать сложные шаги на компоненте? - PullRequest
0 голосов
/ 23 апреля 2020

Каким требованиям должен соответствовать компонент, чтобы использовать сложные шаги для аппроксимации частных производных на компоненте?

1 Ответ

0 голосов
/ 23 апреля 2020

Во-первых, функция должна быть определена таким образом, чтобы она могла принимать сложный ввод и предоставлять соответствующий вывод. Многие функций в 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

По сути, математика в вашем Компонент должен содержать функции, которые аккуратно обрабатывают комплексные числа, не обрезая мнимую часть. Например, если вы когда-нибудь выполните поиск в таблице, используя только действительное число, это будет означать, что ответ не изменится, если изменится мнимая часть ввода. 1018 *. Это в основном означает, что они непрерывно дифференцируемы в обоих направлениях комплексной плоскости. Абсолютное значение является одним из примеров функции, которая не является комплексной аналитикой c. Подробнее о функциях сложной аналитики c можно прочитать здесь: https://en.wikiversity.org/wiki/Complex_analytic_function

...