File: newton.mac

package info (click to toggle)
maxima 5.49.0-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 128,980 kB
  • sloc: lisp: 437,854; fortran: 14,665; tcl: 10,143; sh: 4,598; makefile: 2,204; ansic: 447; java: 374; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (10 lines) | stat: -rw-r--r-- 432 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10

newton(expr,guess):=block([y,prec:10^(fpprec/-2.0b0),var,dif, listconstvars : false],
       var:listofvars(expr)[1],
       dif:diff(expr,var),
       guess:bfloat(guess),
       do (y:sublis([var=guess],dif),y:expand(y),if abs(y) < prec then error("derivative at",guess,"is zero"),
	   guess:guess-sublis([var=(guess)],expr)/y,guess:rectform(expand(guess)), 
	   if abs(sublis([var=(guess)],expr)) < prec then return(guess)));