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) 您应该访问ask.sagemath.org,这是 Sage 用户、专家和开发人员的类似 Stack Overflow 的论坛! </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 回答