繁体   English   中英

sympy:求解二次方程的结果顺序

[英]sympy: order of result from solving a quadratic equation

我使用sympy解决了一个二次方程式:

import sympy as sp
q,qm,k,c0,c,vt,vm = sp.symbols('q qm k c0 c vt vm')
c = ( c0 * vt - q * vm) / vt
eq1 = sp.Eq(qm * k * c / (1 + k * c) ,q)
q_solve = sp.solve(eq1,q)

根据一些测试,我发现只有q_solve[0]物理意义。 sympy会始终将(b - sqrt(b**2 - 4*a*c))/2a 2-4- (b - sqrt(b**2 - 4*a*c))/2a放在首位吗? 我猜可能会随着升级而改变?

回答您的问题的简单测试是使用sympy per来象征性地求解二次方程式:

import sympy as sp
a, b, c, x = sp.symbols('a b c x')
solve( a*x**2 + b*x + c, x)

这会给您结果:

[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)]

这使我相信总体而言,顺序首先是+ sqrt()解决方案,然后是- sqrt()解决方案。

对于您的程序, q_solve[0]为您提供:

(c0*k*vt + k*qm*vm + vt - sqrt(c0**2*k**2*vt**2 - 2*c0*k**2*qm*vm*vt + 2*c0*k*vt**2 + k**2*qm**2*vm**2 + 2*k*qm*vm*vt + vt**2))/(2*k*vm)

这仍然是x= (-b + sqrt(b**2-4*a*c))/(2*a)答案,由于符号分布, b项中的负号消失了解决方案中的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM