9.9. A Real-World Example
Problem
Understanding functional programming concepts is one thing; putting them into practice in a real project is another. You’d like to see a real example of them in action.
Solution
To demonstrate some of the techniques introduced in this chapter, the following example shows one way to implement Newton’s Method, a mathematical method that can be used to solve the roots of equations.
As you can see from the code, the method named newtonsMethod takes functions as its first two
parameters. It also takes two other Double parameters, and returns a Double. The two functions that are passed in
should be the original equation (fx)
and the derivative of that equation (fxPrime).
The method newtonsMethodHelper
also takes two functions as parameters, so you can see how the functions
are passed from newtonsMethod to
newtonsMethodHelper.
Here is the complete source code for this example:
objectNewtonsMethod{defmain(args:Array[String]){driver}/*** A "driver" function to test Newton's method.* Start with (a) the desired f(x) and f'(x) equations,* (b) an initial guess and (c) tolerance values.*/defdriver{// the f(x) and f'(x) functionsvalfx=(x:Double)=>3*x+math.sin(x)-math.pow(math.E,x)valfxPrime=(x:Double)=>3+math.cos(x)-math.pow(Math.E,x)valinitialGuess=0.0valtolerance=0.00005// pass f(x) and f'(x) to the Newton's Method function, along with// the initial guess and tolerancevalanswer=newtonsMethod(fx,fxPrime,
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access