2016-05-08 52 views
11

私は今これを数時間試しています。私は基本的なコンセプトを理解していないと思うので、私はこれまで自分自身にこの質問に答えることができませんでした。私はその関数を導出したいその後SymPyで数学関数を定義する方法は?

f(x) = x**2 + 1 

:私は何をしようとしている

はこのように、数学的な機能を実装することです。

私はシンボルと機能を定義しました。今、私はこの機能f(x)に式を定義するに苦しんだ

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

f.exp("x**2 + 1")のようなものは機能しません。

最終的に定義された後、この機能のコンソールにどのようにプリントアウトすることができるのだろうか。ここで

+1

をIあなたはラムダが欲しいと思いますか?私はsympyに精通していない。 –

+0

私はlambdasを使いたいと思っていますが、タスクではsympyでこれを解決しなければならないと言います。 – Robin

+0

おそらく 'f = x ** 2 + 1'を探していますか? – unutbu

答えて

9

sympy.Functionは未定義の関数のためです。同様にf = Function('f')の場合、f(x)は式で未評価のままです。

あなたが実際の関数(のようなあなたがf(1)をすれば、それはx=1x**2 + 1を評価したい場合は、次にf(Symbol('x'))がシンボリックx**2 + 1f(1)2を与える与える

def f(x): 
    return x**2 + 1 

Pythonの関数を使用することができます。

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

f = x**2 + 1 

を使用してください。あなたが値をxを代用したい場合は、subsを使用し、

f.subs(x, 1) 
4

はあなたのソリューションです:

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

機能を定義するためのものではないとき、sympy.Functionが使用するものは何ですか? – Robin

+0

私はそれが標準的な関数の全範囲の基本クラスだと思います。 – enedil

+0

@Robin 'sympy.Function'は未定義の関数です。 'f = Function( 'f')'のように 'f(x)'は式の中で未評価のままです。 – asmeurer

1

のような別の可能性(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 
関連する問題