1

コマンドを使用して上付き文字を書くためにsympyを使用していpretty_printます。pretty_print コマンドを機能させるには、これをいくつかの変数 (代数 (x、y など)) と一緒にインポートする必要があります。変数 (代数) を sympy.abc からインポートしない場合は、文字を引用符''で囲む必要があります。これにより、pretty_print コマンドが機能しなくなります。

たとえば、画面に印刷する場合、プログラムで使用できるようにインポートする必要があります。xこのような:

import sympy  
from sympy import pretty_text as exp   
from sympy.abc import x

equation= x**2

exp(equation)

これにより、画面に x² が出力されます。問題は、x に値を割り当てると、それ自体と等しくなくなることです。sympy.abc からインポートした直後に x を出力すると、これが実行されます。

(IDLE のふりをして) >

>>> import sympy  
>>> from sympy import pretty_text as exp   
>>> from sympy.abc import x

>>> x
x 

ただし、メーカー×1の場合

>>> import sympy  
>>> from sympy import pretty_text as exp   
>>> from sympy.abc import x

>>> x
x 
>>> x = 1
>>>x
1

それから私はx再び二乗する必要があります、

>>> import sympy  
>>> from sympy import pretty_text as exp   
>>> from sympy.abc import x

>>> x
x 
>>> x = 1
>>>x
1 
>>> equation = x**2
>>> exp(equation)
1

1を2乗するだけです。x = 'x'もう一度作ろうとしても、周りがあるので同じではありません''。これを修正するには、再度インポートする必要があります。ただし、私のプログラムでは、変数をインポートする必要があるため、文字を再度インポートする必要が生じる可能性があります。私は試した

from sympy.abc import x[0]

しかし、それは無効です。では、さまざまな文字をインポートする方法はありますか?

4

3 に答える 3

2

シンボルを保持したい場合は、それらに値を割り当てないでください。本当に解決策が必要になるまで、シンボルを使用し続けてください。

例えば:

In [15]: equation=sympy.sin(x**2)

In [16]: exp(equation)
   ⎛ 2⎞
sin⎝x ⎠

In [17]: result = equation.subs({'x': 2})

In [18]: result
Out[18]: sin(4)

In [19]: result.evalf()
Out[19]: -0.756802495307928

これはそれ自体を変更しませんx-後で:

In [23]: exp(sympy.log(x**.5))
   ⎛ 0.5⎞
log⎝x   ⎠

必要な限り方程式を記号形式で保持し、値自体について心配する必要はありません。

于 2013-02-08T00:40:18.577 に答える
1

SymPy でシンボル名をインポートする必要はありません。abc モジュールは、1 文字のシンボル名の利便性のために存在します。

任意の名前で Symbol オブジェクトを作成するだけです (これは、動的に作成されたものを含め、任意の文字列にすることができます)。

>>> x = Symbol('x')
>>> x
x

また、シンボルに付ける名前と、そのシンボルを保持する Python 変数の名前を関連付ける必要がないことに注意してください。実際、シンボルは、それがバインドされている Python 変数名を認識していません (これは、SymPy だけでなく、Python ですべてが機能する方法です)。

>>> x = Symbol('y')
>>> x
y 

symbolsを使用して、一度に複数のシンボルを作成することもできます

>>> x, y, z = symbols('x y z')
于 2013-02-08T17:52:55.963 に答える
0

代わりに次のようにします。

import sympy.abc
x = sympy.abc.x

その後、元の値が必要なときはいつでも使用してくださいsympy.abc.x。名前を動的に取得する必要がある場合:

getattr(sympy.abc, "x")

リテラルを任意の変数に置き換えることができる場所。

于 2013-02-08T00:36:49.920 に答える