0

trigonometric function by Newton method is giving wrong results

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)
ashiq pervez
  • 45
  • 1
  • 2
  • 15

1 Answers1

0

The problem is the radians, which multiplies a part of an expression by pi/180.0. Remove all of its mentions, and it should be fine.

EDIT

The below works absolutely fine now:

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)
ashiq pervez
  • 45
  • 1
  • 2
  • 15
Igor Rivin
  • 4,632
  • 2
  • 23
  • 35