Thursday, March 11, 2010

TIBasic: an alternative to the "solve(" command

The "solve(" command is a pretty efficient way to find the root of an unknown equation. Unfortunately, it only works if you have a good guess; otherwise, you'll be plagued by "Bad guess" errors which may cause your program to crash.

To guarantee that your user doesn't encounter such an error, create a routine that uses Newton's method to perform the same function as the "solve(" command, except with safeguards for bad guesses.

Here's a routine that, given an equation (in terms of X) stored to Y1, and a guess stored to "G", will solve for "X" when the equation in Y1 = 0. Essentially, it does the same thing as "solve(Y1,X,G"

:DelVar R
:G
:Repeat Ans=X and R
:Ans→X
:R+1→R
:nDeriv(Y1,X,X
:If Ans
:X-Y1/Ans
:If R>50
:X
:End
:Ans→X
:If not(Y1
:X


download

No comments:

Post a Comment