Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS100A Lecture 21 Previous Lecture This Lecture

Similar presentations


Presentation on theme: "CS100A Lecture 21 Previous Lecture This Lecture"— Presentation transcript:

1 CS100A Lecture 21 Previous Lecture This Lecture
MatLab and its implementation, continued. This Lecture MatLab demonstration CS 100 Lecture 21

2 MatLab The notation j:k gives a row matrix consisting of the integers from j through k. >> 1:8 ans = The notation j:b:k gives a row matrix consisting of the integers from j through k in steps of b. >> 1:2:10 To get a vector of n linearly spaced points between lo and hi, use linspace(lo,hi,n) >> linspace(1,3,5) To transpose a matrix m, write m’ >> (1:3)’ 1 2 3 CS 100 Lecture 21

3 MatLab Variables MatLab has variables and assignment:
>> evens = 2.*(1:8) evens = To suppress output, terminate line with a semicolon (not to be confused with vertical concatenation operator) >> odds = evens - 1; >> To see the value of variable v, just enter expression v: >> odds odds = CS 100 Lecture 21

4 MatLab Idiom MatLab has for-loops, conditional statements, subscripting, etc., like Java. But the preferred programming idiom uses uniform operations on matrices and avoids explicit loops, if possible. Essentially every operation and built in function takes a matrix as an argument. CS 100 Lecture 21

5 sum, prod, cumsum, cumprod
Function sum adds row elements, and the function prod multiplies row elements: >> sum(1:1000) ans = 500500 >> prod(1:5) 120 Function cumsum computes a row of the partial sums and cumprod computes a row of the partial products: >> cumprod(1:7) >> cumsum(odds) CS 100 Lecture 21

6 Compute Pi by Euler Formula
Leonard Euler ( ) derived the following infinite sum expansion: 2 / 6 =  1/j 2 (for j from 1 to ) >> pi = sqrt( 6 .* cumsum(1 ./ (1:10) .^ 2)); >> plot(pi) To define a function, select New/m-file and type definition: function e = euler(n) % Return a vector of approximations to pi. e = sqrt( 6 .* cumsum(1 ./ (1:n) .^ 2)); Select SaveAs and save to a file with the same name as the function. To invoke: >> pi = euler(100); CS 100 Lecture 21

7 Help System Use on-line help system >> help euler
>> help function ... description of how to define functions ... >> help euler Return a vector of approximations to pi. CS 100 Lecture 21

8 Compute Pi by Wallis Formula
John Wallis ( ) derived the following infinite sum expansion: (2 * 2) * (4 * 4) * (6 * 6) * . . .  / 2 = (1 * 3) * (3 * 5) * (5 * 7) * . . . Terms in Numerator evens .^ 2 Terms in Denominator odds odds + 2 1*3 3*5 5*7 7*9 9* i.e., odds .* (odds + 2) Quotient prod( (evens .^ 2) ./ (odds .* (odds+2)) ) Successive approximations to Pi pi = 2 .* cumprod( (evens.^2) ./ (odds .* (odds+2)) ) CS 100 Lecture 21

9 Wallis Function Function Definition
function w = wallis(n) % compute successive approximations to pi. evens = 2 .* (1:n); odds = evens - 1; odds2 = odds .* (odds + 2); w = 2 .* cumprod( (evens .^ 2) .* odds2 ); Contrasting Wallis and Euler approximations >> plot(1:100, euler(100), 1:100, wallis(100)) CS 100 Lecture 21

10 Compute Pi by Throwing Darts
Throw random darts at a circle of radius 1 inscribed in a 2-by-2 square. The fraction hitting the circle should be the ratio of the area of the circle to the area of the square: f =  / 4 This is called a Monte Carlo method y 1 x 1 CS 100 Lecture 21

11 Darts The expression rand(1,n) computes a row of n random numbers between 0 and 1. >> x = rand(1,10); >> y = rand(1,10); Let d2 be the distance squared from the center of the circle. >> d2 = (x .^ 2) + (y .^ 2); Let in be a row of 0’s and 1’s signifying whether the dart is in (1) or not in (0) the circle. Note 1 is used for true and 0 for false. >> in = d2 <= 1; Let hits be the cumulative sum of darts in circle >> hits = cumsum(in); Let f be cumulative fraction of hits >> f = hits ./ (1:n); Let pi be successive approximations to pi >> pi = 4 .* f; CS 100 Lecture 21

12 Compute Pi by Throwing Needles
In 1777, Comte de Buffon published this method for computing : N needles of length 1 are thrown at random positions and random angles on a plate rules by parallel lines distance 1 apart. The probability that a needles intersects one of the ruled lines is 2/. Thus, as N approaches infinity, the fraction of needles intersection a ruled line approaches 2/. CS 100 Lecture 21

13 Subscripting Subscripts start at 1, not zero.
ans = >> a(2,2) 5 A range of indices can be specified: >> a(1:2, 2:3) 2 3 5 6 A colon indicates all subscripts in range: >> a(:, 2:3) 8 9 CS 100 Lecture 21

14 Control Structures: Conditionals
if expression list-of-statements end else elseif expression . . . CS 100 Lecture 21

15 Control Structures: Loops
while expression list-of-statements end for variable = lo:hi for variable = lo:by:hi CS 100 Lecture 21


Download ppt "CS100A Lecture 21 Previous Lecture This Lecture"

Similar presentations


Ads by Google