将方程的解分配给新变量

Assigning the solution of an equation to a new variable

我想求解一个变量的二次方程,然后将正值赋给“C”,但是当我尝试时,我得到 C 是 'NoneType'。理想情况下,我应该以

C=4*sqrt(30) + 25

当我运行代码:

A=5*sqrt(5)
B=2*sqrt(5)
D=var('D')
sol=solve(A^2+B^2+D^2==A*B*D,D)[1]
C=print(sol)
print(type(C))

我得到:

D == 4*sqrt(30) + 25
<class 'NoneType'>

我正在使用 https://sagecell.sagemath.org/ 到 运行 代码。

关于 print 的注意事项:命令 print(sol) 有副作用 打印出解决方案,但它没有 return 任何东西, 在 Python 中相当于 returning None。代替 C = print(sol) 你可以 C = sol 然后 print(C).

这里有一个希望更好的方法。

定义常量和变量:

sage: A = 5*sqrt(5)
sage: B = 2*sqrt(5)
sage: D = var('D')

求解,使用solution_dict=True到return解作为字典:

sage: sol = solve(A^2 + B^2 + D^2 == A*B*D, D, solution_dict=True)
sage: sol
[{D: -4*sqrt(30) + 25}, {D: 4*sqrt(30) + 25}]

观察到sol是一个解的列表,每个解都是一个字典。

使用其中一种解决方案:

sage: C = sol[0][D]
sage: C
-4*sqrt(30) + 25

或另一个:

sage: C = sol[1][D]
sage: C
4*sqrt(30) + 25