Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to...
-
Upload
wendy-watts -
Category
Documents
-
view
227 -
download
0
Transcript of Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to...
![Page 1: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/1.jpg)
Recap of Functions
![Page 2: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/2.jpg)
Functions in Java
fx
y
z
f (x, y, z)
Input OutputAlgorithm
•Allows you to clearly separate the tasks in a program.
•Enables reuse of code
![Page 3: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/3.jpg)
3
Anatomy of a Java Function
Java functions. Easy to write your own.
f(x) = xinput
2.0 1.414213…output
![Page 4: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/4.jpg)
4
Call by Value
Functions provide a new way to control the flow of execution.
Call by Reference - Arrays
![Page 5: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/5.jpg)
5
Scope
Scope (of a name). The code that can refer to that name.Ex. A variable's scope is code following the declaration in the block.
Best practice: declare variables to limit their scope.
public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; }
public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) { double x = sqrt(a[i]); StdOut.println(x); } }}
two differentvariables with
the same name i
scope of cscope of epsilon
scope of t
![Page 6: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/6.jpg)
Implementing Mathematical FunctionsGaussian Distribution
![Page 7: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/7.jpg)
7
Gaussian Distribution
Standard Gaussian distribution. "Bell curve." Basis of most statistical analysis in social and physical
sciences.
Ex. 2000 SAT scores follow a Gaussian distribution withmean = 1019, stddev = 209.
810601 1019 1228 1437
![Page 8: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/8.jpg)
8
Java Function for (x)
Mathematical functions. Use built-in functions when possible;build your own when not available.
Overloading. Functions with different signatures are different. Multiple arguments. Functions can take any number of arguments.Calling other functions. Functions can call other functions.library or user-defined
public class Gaussian {
public static double phi(double x) { return Math.exp(-x*x / 2) / Math.sqrt(2 * Math.PI); }
public static double phi(double x, double mu, double sigma) { return phi((x - mu) / sigma) / sigma; }}
![Page 9: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/9.jpg)
9
Gaussian Cumulative Distribution Function
Goal. Compute Gaussian cdf (z).Challenge. No "closed form" expression and not in Java library.
Bottom line. 1,000 years of mathematical formulas at your fingertips.
(z)
z
Taylor series
![Page 10: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/10.jpg)
10
Java function for (z)
public class Gaussian {
public static double phi(double x) // as before
public static double Phi(double z) { if (z < -8.0) return 0.0; if (z > 8.0) return 1.0; double sum = 0.0, term = z; for (int i = 3; sum + term != sum; i += 2) { sum = sum + term; term = term * z * z / i; } return 0.5 + sum * phi(z); }
public static double Phi(double z, double mu, double sigma) { return Phi((z - mu) / sigma); } }
accurate with absolute errorless than 8 * 10-16
![Page 11: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/11.jpg)
11
Building Functions
Functions enable you to build a new layer of abstraction. Takes you beyond pre-packaged libraries. You build the tools you need by writing your own functions
Process. Step 1: identify a useful feature. Step 2: implement it. Step 3: use it in your program.
Step 3': re-use it in any of your programs.
![Page 12: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/12.jpg)
2.2 Libraries and Clients
Introduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2008 · 4/21/23 4/21/23
![Page 13: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/13.jpg)
13
Libraries
Library. A module whose methods are primarily intended for useby many other programs.
Client. Program that calls a library.
API. Contract between client andimplementation.
Implementation. Program thatimplements the methods in an API.
Link to
JAVAMath API
![Page 14: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/14.jpg)
Dr. Java DemoCreating a Library to Print Arrays
Introduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2008 · 4/21/23 4/21/23
![Page 15: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/15.jpg)
Key Points to Remember
• Create a class file with all your functions• Use the standard Save -> Compile sequence• This class file does NOT have a main() function
• Use the name of the class to invoke methods in that library• Can do this from any Java program
15
![Page 16: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/16.jpg)
Random NumbersPart of stdlib.jar
Jon von Neumann (left), ENIAC (right)
The generation of random numbers is far too important to leave to chance. Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin. ”
“
![Page 17: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/17.jpg)
17
Standard Random
Standard random. Our library to generate pseudo-random numbers.
![Page 18: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/18.jpg)
StatisticsPart of stdlib.jar
![Page 19: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/19.jpg)
19
Standard Statistics
Ex. Library to compute statistics on an array of real numbers.
mean sample variance
![Page 20: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/20.jpg)
Modular Programming
![Page 21: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/21.jpg)
21
Modular ProgrammingCoin Flipping
Modular programming. Divide program into self-contained pieces. Test each piece individually. Combine pieces to make program.
Ex. Flip N coins. How many heads?Distribution of these coin flips is the binomial distribution, which is
approximated by the normal distribution where the PDF has mean N/2 and stddev sqrt(N)/2.
Read arguments from user. Flip N fair coins and count number of heads. Repeat simulation, counting number of times each outcome
occurs. Plot histogram of empirical results. Compare with theoretical predictions.
![Page 22: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/22.jpg)
22
public class Bernoulli { public static int binomial(int N) { int heads = 0; for (int j = 0; j < N; j++) if (StdRandom.bernoulli(0.5)) heads++; return heads; }
public static void main(String[] args) { int N = Integer.parseInt(args[0]); int T = Integer.parseInt(args[1]);
int[] freq = new int[N+1]; for (int i = 0; i < T; i++) freq[binomial(N)]++;
double[] normalized = new double[N+1]; for (int i = 0; i <= N; i++) normalized[i] = (double) freq[i] / T; StdStats.plotBars(normalized);
double mean = N / 2.0, stddev = Math.sqrt(N) / 2.0; double[] phi = new double[N+1]; for (int i = 0; i <= N; i++) phi[i] = Gaussian.phi(i, mean, stddev); StdStats.plotLines(phi); }}
Bernoulli Trials
theoretical prediction
plot histogramof number of heads
perform T trialsof N coin flips each
flip N fair coins;return # heads
![Page 23: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/23.jpg)
EXTRA SLIDES
![Page 24: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/24.jpg)
24
public class StdRandom {
// between a and b public static double uniform(double a, double b) { return a + Math.random() * (b-a); }
// between 0 and N-1 public static int uniform(int N) { return (int) (Math.random() * N); }
// true with probability p public static boolean bernoulli(double p) { return Math.random() < p; }
// gaussian with mean = 0, stddev = 1 public static double gaussian() // recall Assignment 0
// gaussian with given mean and stddev public static double gaussian(double mean, double stddev) { return mean + (stddev * gaussian()); }
...}
Standard Random
![Page 25: Recap of Functions. Functions in Java f x y z f (x, y, z) Input Output Algorithm Allows you to clearly separate the tasks in a program. Enables reuse.](https://reader036.fdocuments.net/reader036/viewer/2022070411/56649f3a5503460f94c5808c/html5/thumbnails/25.jpg)
25
public class StdStats {
public static double max(double[] a) { double max = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i++) if (a[i] > max) max = a[i]; return max; }
public static double mean(double[] a) { double sum = 0.0; for (int i = 0; i < a.length; i++) sum = sum + a[i]; return sum / a.length; }
public static double stddev(double[] a) // see text
}
Standard Statistics
Ex. Library to compute statistics on an array of real numbers.