3

Pythonコードにシンボリック関数を入力する方法があるかどうか疑問に思っていましたか?

私のコードのように私は持っています:

from sympy import *
import numpy as np
import math
myfunction = input("enter your function \n")
l = Symbol('l')

print myfunction(l**2).diff(l)

cos、sin、またはexpを入力として入力すると、次の出力が得られます。 -2*l*sin(l**2)

入力関数をより一般的にしたい場合、たとえば、多項式または複素関数、あるいはcos、sin、expを組み合わせた関数と言いますか?

4

2 に答える 2

11

構文としては、sin + cos単純にうまく機能しません。一般的なケースを機能させる最も簡単な方法は、sympyに評価するを与えることです。文字列をオブジェクトsympifyに変換するという大変な作業を行うことができます。sympy

>>> s = raw_input("enter a formula: ")
enter a formula: sin(x) + x**3
>>> s
'sin(x) + x**3'
>>> f = sympy.sympify(s)
>>> f
x**3 + sin(x)

その後、次のように置き換えて評価できます。

>>> f.subs({'x': 2})
sin(2) + 8
>>> f.subs({'x': 2}).evalf()
8.90929742682568

少しの作業で引き出すことができる他のトリックについては、ここで私の答えも参照してください。

>>> f = definition_to_function("f(x) = sin(x) + x**3")
>>> f(3)
27.14112000805987
于 2013-03-12T18:39:56.547 に答える
1

シンボリック関数の適切なサポートが必要な場合は、sageの使用を検討する必要があります。

これはPythonのプリプロセッサであり、シンボリック関数を含む多くの数学サポートを備えています。セージコードは、通常のpythonコードと混在させることができます。

パッケージはかなり大きいですが、私はそれで良い経験をしています。これは無料でオープンソースです。

于 2013-03-12T18:31:17.417 に答える