2017-10-02 1 views
3

合計式を含む方程式、つまり のようなものをどのように解くことができますか?sympyバージョン1.1.1: 'summation()'を含む 'solve()'

Simple Equation

私はこの方程式を解くために以下のコードを検討する:

from sympy import * 

i, N, x = symbols("n, N, x") 
y  = Function("y") 
eq  = summation(x + y(i), (i, 0, N)) 

print solve(eq, [x]) 

しかし、この式は、結果を生成しませんsolve()簡単ですが。 期待ソリューションは

enter image description here

+0

期待される結果を追加して質問を編集しました。 –

答えて

2

だろう、私は無地の答えはそれだけで必要な置換を行うためにcurrecntシステムはあまりにも複雑だということであると信じています。

これで、ここでは合計の拡大に関する問題が発生する可能性があります。

expand出力のSumの出力をsummation秒に変更することで正解を得ることができました。以下のコンソールセッションをご覧ください。

私は可能な最後のものを作ったと考えている理由は、拡張によって返さSum(x, (i, 0, N))は、したがって、何の置換後、それのために作られていない、シンプルなSumオブジェクトままsummation(x, (i, 0, N))は、x*(N + 1)summation機能の効果)と評価されていることですsolve機能の内部拡張。ところで

>>> from sympy import * 
>>> 
>>> i, N, x, y = symbols("i, N, x, y") 
>>> eq   = summation(x + y(i), (i, 0, N)) 
>>> 
>>> expand(eq) 
Sum(x, (i, 0, N)) + Sum(y(i), (i, 0, N)) 
>>> 
>>> solve(summation(x, (i, 0, N)) + summation(y(i), (i, 0, N)), x) 
[Sum(-y(i), (i, 0, N))/(N + 1)] 
  • 総和が0とN(したがって、N 0は、N + 1回である)を含んでいるので、溶液は、N + 1によって分割されています。
+0

私は、あなたはポイントを打つと思います。 'solve()'関数は現在の開発状態で 'expand()'のステップを作っていないようです。そして、あなたはもちろん、N + 1で正しいです。 –

+0

@ Frank-ReneSchäfer最後の段落「理由は...」を追加しました。私はそれが理由だと信じています。もしそうなら、おそらく意図しないバグでしょう。 – Uriel

関連する問題