2

このプログラムを実行すると、最後に解決策が得られませんが、解決策があるはずです (私は信じています)。私が間違っていることは何ですか?e2 方程式から Q を取り除くと、正しく動作するように見えます。

#!/usr/bin/python
from sympy import *

a,b,w,r = symbols('a b w r',real=True,positive=True)
L,K,Q = symbols('L K Q',real=True,positive=True)

e1=K
e2=(K*Q/2)**(a)

print solve(e1-e2,K)

次のようにすると機能します。

  • Q=1 に設定するか、
  • e2 を e2=(K* a) (Q/2)**(a) に変更します

ただし、私の方程式はこれよりも複雑であるため、元の方法で機能することを望んでいます。

4

1 に答える 1

1

これは の単なる欠陥ですsolvesolveは主にヒューリスティックに基づいているため、特定の形式で与えられた方程式を解く方法を理解できないことがあります。ここでの回避策はexpand_power_base、SymPy が解決できるため、式を呼び出すことK - K**a*(Q/2)**aです。

In [8]: print(solve(expand_power_base(e1-e2),K))
[(2/Q)**(a/(a - 1))]

[]また、 fromの結果は決して解決策がないことを意味するわけではなく、解決策が見つからなかったということだけを意味することsolve 指摘しておく価値がありsolveます。http://docs.sympy.org/latest/tutorial/solvers.htmlの最初のメモを参照してください。

于 2013-10-04T21:47:18.017 に答える