(1) 你应该访问 ask.sagemath.org,这是类似于 Stack Overflow 的 Sage 用户、专家和开发者论坛!</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)