2016-11-26 5 views
0

xを実際の値に置き換える機能を維持しながら、Pythonが多項式を入力とする方法を教えてください。ここでPythonの入力としての多項式

は、私が試したものです:

fx=input("Enter a Polynomial: ") 
x=float(input("At wich position should the polynomial be evaluated: ")) 

while True: 
    print(eval("fx")) 

    continue 

生じる問題は、Pythonは単にxとしていない私は私の第二の入力を経由してのxに与えた値としてFXを評価するということです。

+1

'eval(fx)'を試してください。 –

+0

これもうまくいった。ありがとうございます:-) –

答えて

1

これは役立つはず:

def eval_polynomial(poly, val): 
    xs = [ x.strip().replace('^','**') for x in poly.split('+') ] 
    return sum([eval(n.replace('x', str(val))) for n in xs]) 

以前valは安全上の理由から番号であることを確認する必要がありますのでご注意ください。

0

xのような特定の変数は重要ではないため、多項式の係数となる数字のシーケンスをユーザーに入力させるだけです。ユーザに定数係数、線形係数、二次係数などを入力させます。これらが別々の入力として行われる場合は、停止信号が必要です(番号ではない信号)。すべてを1つの入力として使用したい場合は、係数の間にスペースやコンマなどを入れることができ、停止信号は必要ありません。

次に、係数をリストに入れます。入力が1行の場合は、split()メソッドを使用します。変数への代入などの多項式の演算は、このリストで行うことができます。たとえば、置換はHorner's methodで簡単かつ効率的に行うことができます。加算、減算、乗算、除算、微分などの簡単なアルゴリズムがあります。 Pythonでこれらのアルゴリズムを実装する方法の詳細が必要な場合はお知らせください。

Pythonのeval()関数は非常に危険です。その単純さにもかかわらず、その関数を使用しないことを強くお勧めします。

+0

提案していただきありがとうございます。多項式全体の代わりに係数行列を使用することも、今後のプロジェクトで念頭に置くことが有望な考えです。 –

関連する問題