将方程的解分配给新变量
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
我想求解一个变量的二次方程,然后将正值赋给“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