Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解三次方程组_Python_Algorithm_Sympy - Fatal编程技术网

Python 解三次方程组

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

我有一个项目,这个过程的一个步骤是求解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)

    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)

我不需要复杂的根。但是如果我想要,我怎么才能得到它们呢?
谢谢收看!

你所拥有的看起来基本上没问题。然而,有三项建议:

  • 确保你的函数总是返回一个SymPy值,例如,不要返回100*d,因为d可能是一个int;返回
    S(100)*d
  • 无论您在哪里使用分区,都要确保它不会受到Python分支(1/2->0)的影响。e、 g.写
    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)