7

SAGE の関数 solve() は、方程式を解く変数の記号値を返します。例:

sage: s=solve(eqn,y)
sage: s
[y == -1/2*(sqrt(-596*x^8 - 168*x^7 - 67*x^6 + 240*x^5 + 144*x^4 - 60*x - 4) + 8*x^4 + 11*x^3 + 12*x^2)/(15*x + 1), y == 1/2*(sqrt(-596*x^8 - 168*x^7 - 67*x^6 + 240*x^5 + 144*x^4 - 60*x - 4) - 8*x^4 - 11*x^3 - 12*x^2)/(15*x + 1)]

私の問題は、他の計算で y に対して取得した値を使用する必要があることですが、これらの値を他の変数に割り当てることはできません。誰かがこれで私を助けてくれますか?

4

1 に答える 1

10

(1) Sage ユーザー、専門家、開発者向けのスタック オーバーフローのようなフォーラムである ask.sagemath.orgにアクセスしてください。</plug>

(2) 何かで solve() 呼び出しの値を使用したい場合は、おそらく solution_dict フラグを使用するのが最も簡単です:

sage: x,y = var("x, y")
sage: eqn = x**4+5*x*y+3*x-y==17
sage: solve(eqn,y)
[y == -(x^4 + 3*x - 17)/(5*x - 1)]
sage: solve(eqn,y,solution_dict=True)
[{y: -(x^4 + 3*x - 17)/(5*x - 1)}]

このオプションは、解を方程式のリストではなく、辞書のリストとして提供します。他の辞書と同じように結果にアクセスできます。

sage: sols = solve(eqn,y,solution_dict=True)
sage: sols[0][y]
-(x^4 + 3*x - 17)/(5*x - 1)

必要に応じて、それを別のものに割り当てることができます。

sage: z = sols[0][y]
sage: z
-(x^4 + 3*x - 17)/(5*x - 1)

そして代入:

sage: eqn2 = y*(5*x-1)
sage: eqn2.subs(y=z)
-x^4 - 3*x + 17

など。上記の方が便利ですが、.rhs() 経由で solution_dict なしで同じ結果にアクセスすることもできます。

sage: solve(eqn,y)[0].rhs()
-(x^4 + 3*x - 17)/(5*x - 1)
于 2011-06-07T15:47:10.893 に答える