1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Maple loop troubles

  1. Dec 16, 2009 #1
    1. The problem statement, all variables and given/known data
    I'm trying to make a Newton's method procedure in Maple, but I can't figure out what's wrong.

    2. Relevant equations

    Code (Text):

    newton := proc (func, iterations, guess)
    f := unapply(func, x);
    fprimej := diff(f(x), x);
    fprime := unapply(fprimej, x);
    for i from 1 to iterations do:
         value := evalf(guess-f(guess)/fprime(guess));
         printf("Iteration %d: %a\n", i, value);
         guess := value;
    end do;
    end proc;
     

    3. The attempt at a solution

    Something is going wrong when I assign "guess" to "value" because it works fine if I hard code a "guess" value in. What's the correct (and error free) way of assigning "guess" to "value?" Thank you.
     
  2. jcsd
  3. Dec 17, 2009 #2

    Päällikkö

    User Avatar
    Homework Helper

    I've got very little experience in coding Maple, so this is probably a bit of a hack. Apparently you can't properly define new variables in the function input, i.e. the "guess" you give the function seems not to be a proper variable. I changed it to guesso and added guess := guesso; as the first line. It worked.

    Code (Text):

    newton := proc (func, iterations, guesso)
    guess := guesso;
    f := unapply(func, x);
    fprimej := diff(f(x), x);
    fprime := unapply(fprimej, x);
    for i from 1 to iterations do:
         value := evalf(guess-f(guess)/fprime(guess));
         printf("Iteration %d: %a\n", i, value);
         guess := value;
    end do;
    end proc;
     
     
  4. Dec 17, 2009 #3
    Thank you, that works perfectly.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook