Lab 5 Source Code

Either cut-and-paste this into your lab, or

newton.c

#include <stdio.h>
#include <math.h>

int main(void) {
    double x, old_x, f, f_deriv;
    int i = 1;

    printf("Enter guess for root: ");
    scanf("%lf", &x);

    do {
        /* Save old value to compare for convergence */
        old_x = x;

        /* f(x) = 3x^3 - 5x^2 + 2x + 3 */
        f = 3*x*x*x - 5*x*x + 2*x + 3;

        /* f'(x) = 9x^2 - 10x + 2 */
        f_deriv = 9*x*x - 10*x + 2;

        /* Compute and print new estimate */
        x = old_x - f / f_deriv;

        printf("Estimate %d: %f\n", i, x);

        ++i; // Keep a count for printing purposes */
    } while (fabs(x - old_x) > 0.00001);

    return(0);
}