3

導関数のフーリエ変換は

導関数のフーリエ変換

ここで、k はフーリエ変数です。 説明はこちら

sympy私の質問は、なぜこの知識を使用しないのですか? 例えば:

from sympy import Function, symbols, fourier_transform, Derivative

f = Function('f')
x, k= symbols('x, k')

G = fourier_transform(Derivative(f(x), x, x) + f(x), x, k)
print(G)

これは印刷します

FourierTransform(f(x), x, k) + FourierTransform(Derivative(f(x), x, x), x, k)

しかし、私はそれが印刷されることを期待していました(2 pi iのいくつかの係数まで)

FourierTransform(f(x), x, k) + k**2 FourierTransform(f(x), x, k)

sympyx が無限大になると f(x) -> 0 が予想されるため、この単純化を行うのが保存されていることを伝える方法はありますか?

そうでない場合、置換を行う最もクリーンな方法は何ですか?

4

1 に答える 1

3

Sympy がこれを行わない単純な理由は、まだ実装されていないからです。FourierTransform現時点での回避策として、導関数の を手動で乗算に置き換えることができます。

from sympy import Wild, FourierTransform, Derivative
a, b, c = symbols('a b c', cls=Wild)
G.replace(
    FourierTransform(Derivative(a, b, b), b, c),
    c**2 * FourierTransform(a, b, c)
)

私の知る限り、Sympy は任意の数の引数に一致するパターンを提供しないためDerivative(f(x), x)Derivative(f(x), x, x)Derivative(f(x), x, x, x)、 などに一致する単一のパターンを持つことはできません。の関数-関数形式を使用して回避できますがreplace()、扱っている導関数の順序がわかっている場合はb、例で行ったように、その多くの s を明示的に入れる方がおそらく簡単です。

于 2017-01-09T21:02:22.603 に答える