web-dev-qa-db-ja.com

SymPyで数学関数を定義する方法は?

私は今これを何時間も試してきました。私は基本的な概念を理解していないと思うので、これまでのところこの質問に答えることができませんでした。

私がしようとしているのは、次のような簡単な数学関数を実装することです:

_f(x) = x**2 + 1
_

その後、その関数を導出したいと思います。

私はシンボルと関数を次のように定義しました:

_x = sympy.Symbol('x')
f = sympy.Function('f')(x)
_

今、この関数f(x)の方程式を定義することに苦労しています。 f.exp("x**2 + 1")のようなものが機能していません。

また、この関数が最終的に定義された後、この関数のコンソールにどのように印刷できるのか疑問に思います。

21
Robin

_sympy.Function_は未定義関数用です。 if f = Function('f') then f(x)は式で未評価のままです。

実際の関数が必要な場合(f(1)を行う場合など、_x**2 + 1_を_x=1_で評価する場合、Python=

_def f(x):
    return x**2 + 1
_

次に、f(Symbol('x'))はシンボリック__x**2 + 1_を与え、f(1)は_2_を与えます。

または、変数に式を割り当てることができます

_f = x**2 + 1
_

それを使用します。値の代わりにxを使用する場合は、次のようにsubsを使用します

_f.subs(x, 1)
_
28
asmeurer

ソリューションは次のとおりです。

>>> import sympy
>>> x = sympy.symbols('x')
>>> f = x**2 + 1
>>> sympy.diff(f, x)
2*x
9
enedil

別の可能性(isympyコマンドプロンプト):

>>> type(x)
<class 'sympy.core.symbol.Symbol'>
>>> f = Lambda(x, x**2)
>>> f
     2
x ↦ x 
>>> f(3)
9

導関数の計算は次のように機能します。

>>> g = Lambda(x, diff(f(x), x))
>>> g
x ↦ 2x
>>> g(3)
6
3
hochl