1 / 15

CS100J Lecture 23

CS100J Lecture 23. Previous Lecture MatLab and its implementation, continued. This Lecture MatLab demonstration. MatLab. The notation j:k gives a row matrix consisting of the integers from j through k. >> 1:8 ans = 1 2 3 4 5 6 7 8

palti
Download Presentation

CS100J Lecture 23

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS100J Lecture 23 • Previous Lecture • MatLab and its implementation, continued. • This Lecture • MatLab demonstration Lecture 23

  2. MatLab • The notation j:k gives a row matrix consisting of the integers from j through k. >> 1:8 ans = 1 2 3 4 5 6 7 8 • The notation j:b:k gives a row matrix consisting of the integers from j through k in steps of b. >> 1:2:10 ans = 1 3 5 7 9 • To get a vector of n linearly spaced points between lo and hi, use linspace(lo,hi,n) >> linspace(1,3,5) ans = 1.0 1.5 2.0 2.5 3.0 • To transpose a matrix m, write m’ >> (1:3)’ ans = 1 2 3 Lecture 23

  3. MatLab Variables • MatLab has variables and assignment: >> evens = 2.*(1:8) evens = 2 4 6 8 10 12 14 16 • To suppress output, terminate line with a semicolon (not to be confused with the vertical concatenation operator) >> odds = evens - 1; >> • To see the value of variable v, just enter expression v: >> odds odds = 1 3 5 7 9 11 13 15 Lecture 23

  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. Lecture 23

  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) ans = 120 • Function cumsum computes a row of the partial sums and cumprod computes a row of the partial products: >> cumprod(1:7) ans = 1 2 6 24 120 720 5040 >> cumsum(odds) ans = 1 4 9 16 25 36 49 64 Lecture 23

  6. Compute Pi by Euler Formula • Leonard Euler (1707-1783) 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); >> plot(pi) Lecture 23

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

  8. Compute Pi by Wallis Formula • John Wallis (1616-1703) 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 1 3 5 7 9 . . . odds 3 5 7 9 11 . . . odds + 2 ------------------------ 1*3 3*5 5*7 7*9 9*11 . . . i.e., odds .* (odds + 2) • Quotient prod( (evens .^ 2) ./ (odds .* (odds+2)) ) • Successive approximations to Pi pi = 2 .* cumprod( (evens.^2) ./ (odds .* (odds+2)) ) Lecture 23

  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)) Lecture 23

  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 Lecture 23

  11. Darts • The expression rand(h,w) computes an h-by-w matrix of 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(i) be the number of darts in circle in i tries >> hits = cumsum(in); • Let f(i) be franction of darts in circle in i tries >> f = hits ./ (1:10); • Let pi be successive approximations to pi >> pi = 4 .* f; Lecture 23

  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 ruled by parallel lines distance 1 apart. The probability that a needle intersects one of the ruled lines is 2/. Thus, as N approaches infinity, the fraction of needles intersecting a ruled line approaches 2/. Lecture 23

  13. Subscripting • Subscripts start at 1, not zero. >> a = [1 2 3; 4 5 6; 7 8 9] ans = 1 2 3 4 5 6 7 8 9 >> a(2,2) ans = 5 • A range of indices can be specified: >> a(1:2, 2:3) ans = 2 3 5 6 • A colon indicates all subscripts in range: >> a(:, 2:3) ans = 2 3 5 6 8 9 Lecture 23

  14. Control Structures: Conditionals ifexpression list-of-statements end ifexpression list-of-statements else list-of-statements end ifexpression list-of-statements elseifexpression list-of-statements . . . elseifexpression list-of-statements else list-of-statements end Lecture 23

  15. Control Structures: Loops whileexpression list-of-statements end forvariable = lo:hi list-of-statements end forvariable = lo:by:hi list-of-statements end Lecture 23

More Related