File: newton.mac

package info (click to toggle)
maxima 5.21.1-2squeeze
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 94,928 kB
  • ctags: 43,849
  • sloc: lisp: 298,974; fortran: 14,666; perl: 14,325; tcl: 10,494; sh: 4,052; makefile: 2,975; ansic: 471; awk: 24; sed: 7
file content (10 lines) | stat: -rw-r--r-- 432 bytes parent folder | download | duplicates (14)
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)));