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:
object
NewtonsMethod
{
def
main
(
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.
*/
def
driver
{
// the f(x) and f'(x) functions
val
fx
=
(
x
:
Double
)
=>
3
*
x
+
math
.
sin
(
x
)
-
math
.
pow
(
math
.
E
,
x
)
val
fxPrime
=
(
x
:
Double
)
=>
3
+
math
.
cos
(
x
)
-
math
.
pow
(
Math
.
E
,
x
)
val
initialGuess
=
0.0
val
tolerance
=
0.00005
// pass f(x) and f'(x) to the Newton's Method function, along with
// the initial guess and tolerance
val
answer
=
newtonsMethod
(
fx
,
fxPrime
,
Get Scala Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.