4

我正在用 python 编写一个程序,它将使用牛顿法求解零。我完成了它的粗略版本,然后意识到了一些不同的事情,并且想知道我是否需要实施/改变它。(对该主题的了解可能会有所帮助)

def main():

   dir(sympy)

   print ("NEWTONS METHOD")
   print ("Write your expression in terms of 'x' ") 

   e = sympy.sympify(raw_input("input expression here: "))  
   f = sympy.Symbol('x')


   func1 = e
   func1d = sympy.diff(e,f) 


   print ("the dirivative of your function = "), func1d

   x = input("number to substitude for x: ")


   func1sub = func1.subs({'x':x})
   func1dsub = func1d.subs({'x':x})
   n = x - float(func1sub/func1dsub)



   while n != x:
      func1sub = func1.subs({'x':x})
      func1dsub = func1d.subs({'x':x})
      n = x - float(func1sub/func1dsub)
      print n



main()

1)首先我想知道,因为nand的值x可能并不总是完全相同,所以我必须使用 round 函数进行舍入。

2)看了这个之后,我觉得我的while循环没有解决它应该解决的问题,它应该解决x你可以将它插入x函数中的问题,输出将是x。我可以通过将值附加到数组然后查看它们是一个数字的多个实例的位置来做到这一点吗?

4

2 回答 2

2

Q1:我同意。

Q2:x = n靠近循环顶部。你想继续前进。

于 2011-11-22T05:51:14.743 回答
2

首先,循环x中的值没有改变。while

其次,终止标准应该是“当前”估计与“以前”估计应该“足够接近”,也就是说..你应该使用类似的东西:

while abs(current - previous) > tolerance:
于 2011-11-22T05:56:38.653 回答