Python 解三次方程组
我有一个项目,这个过程的一个步骤是求解R(k,d,a), 其中k表示第k步 我的朋友建议我做这件事,但我不知道怎么做Python 解三次方程组,python,algorithm,sympy,Python,Algorithm,Sympy,我有一个项目,这个过程的一个步骤是求解R(k,d,a), 其中k表示第k步 我的朋友建议我做这件事,但我不知道怎么做 from sympy import * k= symbols('k') d= symbols('d') a= symbols('a') R= function('R')(k,d,a) print R` 事实上,我不知道如何定义一个与类方法相一致的函数。。。 这个表达就是失败 def R(k,d,a): k:#第n个进程 d:参数,以便初始化 应给出R(0,d,a) i
from sympy import *
k= symbols('k')
d= symbols('d')
a= symbols('a')
R= function('R')(k,d,a)
print R`
事实上,我不知道如何定义一个与类方法相一致的函数。。。
这个表达就是失败
def R(k,d,a):
k:#第n个进程
d:参数,以便初始化
应给出R(0,d,a)
if k==0:
return 100*d
r=d*(1-(1-(d/R(k-1,d,a))**2)**0.5)**0.5
B=-3/2*d
D=(R(k-1,d,a))**3*(3*a*d/R(k-1,d,a)-2)+r**2*(r-3/2*d)
这里我用R(k-1,d,a)来定义R(k,d,a),它合适吗
x^3+Bx^2+Cx+D=0,其中c=0
这里x代表R(k,d,a)
这里我要一个y的列表,并用实数问y
稍后返回最大的一个
但我不知道如何实现它
最后,对于每个k,我需要另一个函数来给出一个值,R(k,d,a)将是其中的一个参数。我想我可以自己用for循环来完成,这对我来说并不难
最难的是如何得到R(k,d,a)
我不需要复杂的根。但是如果我想要,我怎么才能得到它们呢?
谢谢收看! 你所拥有的看起来基本上没问题。然而,有三项建议:
S(100)*d
李>
B=-S(3)/2*d
而不是你所拥有的(并在d
的表达式中使用该B
,在其末尾写(r+B)
max
将无法对根进行排序,因此最好手动选择真实的根:y=[i为i(x**3+x**2*B+D,x),如果i.u为实]
我不知道如何使用Symphy,但我创建了一个名为的三次方程求解函数。我不知道为什么我在“R=function('R')(k,d,a)”处出现错误。它说TypeError:“module”对象是不可调用的,即使我写R=function('R')。
x=symbols('x')
y=solve (x**3+x**2*B+D,x)
return max(y)