试图让工作函数 evaluate_poly(poly,x_n) 和 compute_deriv2(poly,x_n) 在函数 compute_root(poly,x_n,epsilon) 内工作
代码运行,没有抛出任何错误,但没有返回任何内容。这是代码
# 6.00 Problem Set 2
#
# Successive Approximation
#
def evaluate_poly(poly, x_n):
"""
Computes the polynomial function for a given value x. Returns that value.
Example:
>>> poly = (0.0, 0.0, 5.0, 9.3, 7.0) # f(x) = 7x^4 + 9.3x^3 + 5x^2
>>> x = -13
>>> print evaluate_poly(poly, x) # f(-13) = 7(-13)^4 + 9.3(-13)^3 + 5(-13)^2
180339.9
poly: tuple of numbers, length > 0
x: number
returns: float
"""
valHolder=0
for i in range((0),(len(poly))):
valHolder=valHolder+(poly[i])*(x_n** i)
return float(valHolder)
def compute_deriv(poly):
"""
Computes and returns the derivative of a polynomial function. If the
derivative is 0, returns (0.0,).
Example:
>>> poly = (-13.39, 0.0, 17.5, 3.0, 1.0) # x^4 + 3x^3 + 17.5x^2 - 13.39
>>> print compute_deriv(poly) # 4x^3 + 9x^2 + 35^x
(0.0, 35.0, 9.0, 4.0)
poly: tuple of numbers, length > 0
returns: tuple of numbers
"""
newList=list(poly)
for i in range((0),(len(poly))):
##if i > 0.0:
a=newList[i]
b=i
if b == 0:
continue
else:
derivedNumber=a*b
newList.append(derivedNumber)
finishedTuple=tuple(newList)
return finishedTuple[len(poly):]
print "FINISHED TUPLE IS= ",finishedTuple
def compute_deriv2(poly,x_n):
"""
Similar to first compute_deriv, this time takes a value for x
"""
newList=list(poly)
for i in range((0),(len(poly))):
##if i > 0.0:
a=newList[i]
b=i
if b == 0:
continue
else:
derivedNumber=a*b
newList.append(derivedNumber)
finishedTuple=tuple(newList[len(poly):])
derivedValue=0
for g in range((0),len(finishedTuple)):
c=finishedTuple[g]
d=g
derivedValue+=c*(x_n**d)
return derivedValue
def compute_root(poly, x_n, epsilon):
"""
Uses Newton's method to find and return a root of a polynomial function.
Returns a tuple containing the root and the number of iterations required
to get to the root.
Example:
>>> poly = (-13.39, 0.0, 17.5, 3.0, 1.0) #x^4 + 3x^3 + 17.5x^2 - 13.39
>>> x_0 = 0.1
>>> epsilon = .0001
>>> print compute_root(poly, x_0, epsilon)
(0.80679075379635201, 8.0)
poly: tuple of numbers, length > 1.
Represents a polynomial function containing at least one real root.
The derivative of this polynomial function at x_0 is not 0.
x_0: float
epsilon: float > 0
returns: tuple (float, int)
"""
evaluate_poly(poly,x_n)
compute_deriv2(poly,x_n)
newList=list(poly)
这是我使用的输入。
>>>>compute_root((-13.39,0.0,17.5,3.0,1.0),0.1,0.0001)
当我自己调用它们时,所有单独的函数都可以工作,除了 compute_root 。知道我应该如何关闭它以使其工作吗?我是否必须在 compute_root 函数中再次定义它们?