使用Python解决5阶多项式

时间:2013-11-23 15:41:27

标签: python syntax compiler-errors syntax-error

我认为从标题中可以清楚地知道我要完成的任务。所以,让我们继续使用代码:

import math

import numpy as np

import scipy

#from scipy import scipy.optimize.fsolve as sci_solve



x0 = -5

def function(x):

    x**5 + x**4 + x**3 + x**2 + x + 1

#print sci_solve(function, x0)

print scipy.optimize.fsolve(function, x0)

好的,所以当我运行这段代码时,我得到[-5。]。什么时候它只是打印我的初始值,而不是这个等式的根?另外,当我在包含代码#from scipy import scipy.optimize.fsolve作为sci_solve和print sci_solve(function,x0)的行之前运行没有#的代码时,它给了我一个语法错误。

我做错了什么?

正如hcwhsa指出的那样,我忽略了与读者联系我正在使用的python的版本,我非常抱歉。我使用的是2.7版本

2 个答案:

答案 0 :(得分:4)

在此问题之前,我从未真正听说过scipy模块(所以,谢谢你),但是根据http://folk.uio.no/inf3330/scripting/doc/python/SciPy/tutorial/old/node18.html给出的示例代码,您似乎需要放置一个{ {1}}在行return之后给出的多项式之前的语句。

答案 1 :(得分:1)

一种方法:

from scipy import *

x0 = -5
p = poly1d([1, 1, 1, 1, 1, 1])

# evaluate for x = x0
p(x0)

# get roots
roots(p)

这为你提供了所有的根源,包括复杂的根源。如果你只想要真正的根,你可以遍历根(p)(它是一个数组)并检查每个项的imag属性是否为0.0。