NewtonsMethod.frink

View or download NewtonsMethod.frink in plain text format


use functionUtils.frink
use derivatives.frink
use integrals.frink
use solvingTransformations.frink
use BooleanTransformations.frink
use powerTransformations.frink

/** This program tries to help you find a Newton's method iteration for a
   particular function . */

NewtonsMethod[f] :=
{
   body = functionBody[f]
   df = transformExpression[makeDerivative[f]]
   vars = functionArgumentsAsSymbols[f]
//   println["f  = " + inputForm[body]]
//   println["df = " + inputForm[df]]
   return transformExpression[vars@0 - body/df]
}

/** This program tries to help you find a Halley's method iteration for a
   particular function . */

HalleysMethod[f] :=
{
   body = functionBody[f]
   df =  transformExpression[makeDerivative[f]]
   df2 = transformExpression[makeDerivative[f, 2]]
   vars = functionArgumentsAsSymbols[f]
//   println["f   = " + inputForm[body]]
//   println["df  = " + inputForm[df]]
//   println["df2 = " + inputForm[df2]]
   return transformExpression[vars@0 - 2 body df / (2 df^2 - df df2)]
}

symbolicMode[true]


/** Newton's method solves for the roots or zeroes of a function f, that is,
    where 
    f[x]=0

    The below creates a two-argument anonymous function that implicitly
    encodes the condition
    x^2 - n = 0

    or, alternately,
    x^2 = n

    or, alternately,
    n = sqrt[x]

    which is what we really want to be solving in this case.
*/

 f = {|x, n| x^2- n}

println["The next term (Newton's Method) is given by iterating: "]
println[inputForm[NewtonsMethod[f]]]

println[]
println["The next term (Halley's method) is given by iterating: "]
println[inputForm[HalleysMethod[f]]]


View or download NewtonsMethod.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17958 days, 5 hours, 7 minutes ago.