версия Newton неправильно реализует функции тригонометрии c, и результаты не соответствуют требованиям - PullRequest
0 голосов
/ 19 июня 2020

пытается реализовать с помощью функции тригонометрии c в следующем фрагменте метода Ньютона, он дает результаты, но не те, которые мне нужны ... наверняка будет ошибка

def func(x):
    return radians(math.sin(x)+log(x)+1)

def derivFunc(x):
    return radians((1/x) + math.cos(x))
#sin(x)+log(x)+1 --is the function i want to apply method on

# Function to find the root
def newtonRaphson(x):
    h = func(x) / derivFunc(x)
    while abs(h) >= 0.0001:
        h = func(x) / derivFunc(x)
        # x(i+1) = x(i) - f(x) / f'(x)
        x = x - h
    print("The value of the root is : ",
          "%.4f" % x)

x0 = 0.03  
newtonRaphson(x0)

1 Ответ

0 голосов
/ 19 июня 2020

Проблема заключается в radians, который умножает часть выражения на pi/180.0. Удалите все его упоминания, и все будет в порядке.

РЕДАКТИРОВАТЬ

Следующее ниже работает абсолютно нормально:

import math
def func(x):
    return math.sin(x)+math.log10(x)+1

def derivFunc(x):
    return (1/x) + math.cos(x)
#sin(x)+log(x)+1 --is the function i want to apply method on

# Function to find the root
def newtonRaphson(x):
    h = func(x) / derivFunc(x)
    while abs(h) >= 0.0001:
        h = func(x) / derivFunc(x)
        # x(i+1) = x(i) - f(x) / f'(x)
        x = x - h
    print("The value of the root is : ",
          "%.4f" % x)

 x0 = 0.03  
 newtonRaphson(x0)
...