Метод Ньютона в Python - PullRequest
       134

Метод Ньютона в Python

4 голосов
/ 22 ноября 2011

Я пишу программу на 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) Ну, сначала мне было интересно, так как значения n и x не всегда могут быть точно такими же, как при округлении с использованием округленияfunction.

2) Посмотрев на это, я чувствую, что мой цикл while не решает то, что он должен решать, он должен решать то, что является x, к которому можно подключить его xв функции и вывод будет x.Могу ли я сделать это, добавив значения в массив и посмотрев, где они являются кратными экземплярами одного числа?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Прежде всего, значение x не изменяется в вашем цикле while.

Во-вторых, критерий завершения должен заключаться в том, что «текущая» оценка по сравнению с «предыдущей» должна быть «достаточно близкой», то есть .. вы должны использовать что-то вроде:

while abs(current - previous) > tolerance:
2 голосов
/ 22 ноября 2011

Q1: я согласен.

Q2: x = n около вершины петли. Вы хотите двигаться дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...