Maple Loop Troubles: Fixing Newton's Method Procedure

  • Thread starter Thread starter cdotter
  • Start date Start date
  • Tags Tags
    Loop Maple
AI Thread Summary
The discussion focuses on troubleshooting a Newton's method procedure in Maple. The original issue arose when the variable "guess" was not properly assigned, causing errors during execution. The solution involved renaming the input variable to "guesso" and explicitly assigning it to "guess" at the start of the procedure. This adjustment allowed the code to function correctly, enabling the user to iterate through the method without issues. The final implementation successfully resolved the initial problem.
cdotter
Messages
305
Reaction score
0

Homework Statement


I'm trying to make a Newton's method procedure in Maple, but I can't figure out what's wrong.

Homework Equations



Code:
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;

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.
 
Physics news on Phys.org
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:
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;
 
Päällikkö said:
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:
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;

Thank you, that works perfectly.
 

Similar threads

Back
Top