Newton's Method
My recent implementation of Newton's method. Was bored. Figured I'd review.
The following code is for finding some of the roots of the sin() function. It's a very basic example.
The code:
#include
#include
#include
double f (double);
double fp (double);
double next_x (double);
int main(int argc, char **argv)
{
int iteration = 0;
if ( argc == 1 )
{
fprintf(stderr, "Usage: %s
exit(1);
}
double x = atoi( argv[1] );
do
{
x = next_x(x);
printf("%f 0\n", x);
} while ( iteration++ <= 10 );
return(0);
} /* end main() */
double next_x (double x) { return(x-(f(x)/fp(x))) }
double f (double x) { return( sin(x) ) }
double fp (double x) { return( cos(x) ) }
Makefile:
CC=/usr/bin/gcc LIBS=-lm all: ${CC} -Wall ${LIBS} -o roots roots.c clean: rm -f roots roots.out
Command line:
for num in -5 -4.5v-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5; do ./roots ${num} | tail -1; done > roots.out
Gnuplot:
plot [-20:20] [-1.5:1.5] sin(x), 'roots.out' using 1:2