15
CS 100 Lecture 23 1 CS100J Lecture 23 CS100J Lecture 23 Previous Lecture Previous Lecture MatLab and its implementation, continued. MatLab and its implementation, continued. This Lecture This Lecture MatLab demonstration MatLab demonstration

CS100J Lecture 23

  • Upload
    palti

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: CS100J Lecture 23

CS 100 Lecture 23 1

CS100J Lecture 23CS100J Lecture 23

Previous LecturePrevious Lecture

– MatLab and its implementation, continued.MatLab and its implementation, continued.

This LectureThis Lecture

– MatLab demonstrationMatLab demonstration

Page 2: CS100J Lecture 23

CS 100 Lecture 23 2

MatLabMatLab

The notation The notation j:kj:k gives a row matrix consisting of gives a row matrix consisting of the integers fromthe integers from j j through k. through k.

>> 1:8>> 1:8

ans =ans =

1 2 3 4 5 6 7 81 2 3 4 5 6 7 8

The notation The notation j:b:kj:b:k gives a row matrix consisting gives a row matrix consisting of the integers fromof the integers from j j through k in steps of b. through k in steps of b.

>> 1:2:10>> 1:2:10

ans =ans =

1 3 5 7 91 3 5 7 9

To get a vector of n linearly spaced points To get a vector of n linearly spaced points between lo and hi, use between lo and hi, use linspace(lo,hi,n)linspace(lo,hi,n)

>> linspace(1,3,5)>> linspace(1,3,5)

ans =ans =

1.0 1.5 2.0 2.5 3.01.0 1.5 2.0 2.5 3.0

To transpose a matrix m, write m’To transpose a matrix m, write m’>> (1:3)’>> (1:3)’

ans = ans =

11

22

33

Page 3: CS100J Lecture 23

CS 100 Lecture 23 3

MatLab VariablesMatLab Variables

MatLab has variables and assignment:MatLab has variables and assignment:>> evens = 2.*(1:8)>> evens = 2.*(1:8)

evens =evens =

2 4 6 8 10 12 14 162 4 6 8 10 12 14 16

To suppress output, terminate line with a To suppress output, terminate line with a semicolon (not to be confused with the vertical semicolon (not to be confused with the vertical concatenation operator)concatenation operator)

>> odds = evens - 1;>> odds = evens - 1;

>>>>

To see the value of variable To see the value of variable vv, just enter , just enter expression expression vv::

>> odds>> odds

odds =odds =

1 3 5 7 9 11 13 151 3 5 7 9 11 13 15

Page 4: CS100J Lecture 23

CS 100 Lecture 23 4

MatLab IdiomMatLab Idiom

MatLab has for-loops, conditional statements, MatLab has for-loops, conditional statements, subscripting, etc., like Java. But the preferred subscripting, etc., like Java. But the preferred programming idiom uses uniform operations on programming idiom uses uniform operations on matrices and avoids explicit loops, if possible.matrices and avoids explicit loops, if possible.

Essentially every operation and built in function Essentially every operation and built in function takes a matrix as an argument.takes a matrix as an argument.

Page 5: CS100J Lecture 23

CS 100 Lecture 23 5

sumsum, , prodprod, , cumsumcumsum, , cumprodcumprod

Function Function sumsum adds row elements, and the adds row elements, and the function function prodprod multiplies row elements: multiplies row elements:

>> sum(1:1000)>> sum(1:1000)

ans =ans =

500500500500

>> prod(1:5)>> prod(1:5)

ans =ans =

120120

Function Function cumsumcumsum computes a row of the partial computes a row of the partial sums and cumprod computes a row of the partial sums and cumprod computes a row of the partial products: products:

>> cumprod(1:7)>> cumprod(1:7)

ans = ans =

1 2 6 24 120 720 50401 2 6 24 120 720 5040

>> cumsum(odds)>> cumsum(odds)

ans =ans =

1 4 9 16 25 36 49 641 4 9 16 25 36 49 64

Page 6: CS100J Lecture 23

CS 100 Lecture 23 6

Compute Pi by Euler FormulaCompute Pi by Euler Formula

Leonard Euler (1707-1783) derived the following Leonard Euler (1707-1783) derived the following infinite sum expansion:infinite sum expansion:

22 / 6 = / 6 = 1/j 1/j 2 2 (for j from 1 to (for j from 1 to ))

>> pi = sqrt( 6 .* cumsum(1 ./ (1:10) .^ 2));>> pi = sqrt( 6 .* cumsum(1 ./ (1:10) .^ 2));

>> plot(pi)>> plot(pi)

To define a function, select To define a function, select New/m-file New/m-file and type and type definitiondefinition::

functionfunction e = euler(n) e = euler(n)

% Return a vector of approximations to pi.% Return a vector of approximations to pi.

e = sqrt( 6 .* cumsum(1 ./ (1:n) .^ 2));e = sqrt( 6 .* cumsum(1 ./ (1:n) .^ 2));

Select SaveAs and save to a file with the same Select SaveAs and save to a file with the same name as the function.name as the function.

To invoke:To invoke:>> pi = euler(100);>> pi = euler(100);

>> plot(pi)>> plot(pi)

Page 7: CS100J Lecture 23

CS 100 Lecture 23 7

Help SystemHelp System

Use on-line help systemUse on-line help system >> help function>> help function

... description of how to define functions ...... description of how to define functions ...

>> help euler>> help euler

Return a vector of approximations to pi.Return a vector of approximations to pi.

Page 8: CS100J Lecture 23

CS 100 Lecture 23 8

Compute Pi by Wallis FormulaCompute Pi by Wallis Formula

John Wallis (1616-1703) derived the following John Wallis (1616-1703) derived the following infinite sum expansion:infinite sum expansion:

(2 * 2) * (4 * 4) * (6 * 6) * . . .(2 * 2) * (4 * 4) * (6 * 6) * . . .

/ 2 = --------------------------------------/ 2 = --------------------------------------

(1 * 3) * (3 * 5) * (5 * 7) * . . .(1 * 3) * (3 * 5) * (5 * 7) * . . .

Terms in NumeratorTerms in Numerator evens .^ 2evens .^ 2

Terms in DenominatorTerms in Denominator 1 3 5 7 9 . . . odds1 3 5 7 9 . . . odds

3 5 7 9 11 . . . odds + 23 5 7 9 11 . . . odds + 2

------------------------------------------------

1*3 3*5 5*7 7*9 9*11 . . .1*3 3*5 5*7 7*9 9*11 . . .

i.e.,i.e., odds .* (odds + 2) odds .* (odds + 2)

QuotientQuotient prod( (evens .^ 2) ./ (odds .* (odds+2)) )prod( (evens .^ 2) ./ (odds .* (odds+2)) )

Successive approximations to PiSuccessive approximations to Pi pi = 2 .* cumprod( (evens.^2) ./ (odds .* (odds+2)) )pi = 2 .* cumprod( (evens.^2) ./ (odds .* (odds+2)) )

Page 9: CS100J Lecture 23

CS 100 Lecture 23 9

Wallis FunctionWallis Function

Function DefinitionFunction Definition

functionfunction w = wallis(n) w = wallis(n)

% compute successive approximations to pi.% compute successive approximations to pi.

evens = 2 .* (1:n);evens = 2 .* (1:n);

odds = evens - 1;odds = evens - 1;

odds2 = odds .* (odds + 2);odds2 = odds .* (odds + 2);

w = 2 .* cumprod( (evens .^ 2) ./ odds2 );w = 2 .* cumprod( (evens .^ 2) ./ odds2 );

Contrasting Wallis and Euler approximationsContrasting Wallis and Euler approximations

>> >> plot(1:100, euler(100), 1:100, wallis(100))plot(1:100, euler(100), 1:100, wallis(100))

Page 10: CS100J Lecture 23

CS 100 Lecture 23 10

Compute Pi by Throwing DartsCompute Pi by Throwing Darts

Throw random darts at a circle of radius 1 Throw random darts at a circle of radius 1 inscribed in a 2-by-2 square.inscribed in a 2-by-2 square.

The fraction hitting the circle should be the ratio The fraction hitting the circle should be the ratio of the area of the circle to the area of the of the area of the circle to the area of the square:square:

f = f = / 4 / 4

This is called a Monte Carlo methodThis is called a Monte Carlo method

x

y

1

1

Page 11: CS100J Lecture 23

CS 100 Lecture 23 11

DartsDarts

The expression rand(h,w) computes an h-by-w The expression rand(h,w) computes an h-by-w matrix of random numbers between 0 and 1.matrix of random numbers between 0 and 1.

>> x = rand(1,10);>> x = rand(1,10);

>> y = rand(1,10);>> y = rand(1,10);

Let Let d2d2 be the distance squared from the center be the distance squared from the center of the circle.of the circle.

>> d2 = (x .^ 2) + (y .^ 2);>> d2 = (x .^ 2) + (y .^ 2);

Let Let inin be a row of 0’s and 1’s signifying whether 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 the dart is in (1) or not in (0) the circle. Note 1 is used for used for truetrue and 0 for and 0 for falsefalse..

>> in = d2 <= 1;>> in = d2 <= 1;

Let Let hits(i)hits(i) be the number of darts in circle in i be the number of darts in circle in i triestries

>> hits = cumsum(in);>> hits = cumsum(in);

Let Let f(i)f(i) be franction of darts in circle in i tries be franction of darts in circle in i tries>> f = hits ./ (1:10);>> f = hits ./ (1:10);

LetLet pi pi be successive approximations to pi be successive approximations to pi>> pi = 4 .* f;>> pi = 4 .* f;

Page 12: CS100J Lecture 23

CS 100 Lecture 23 12

Compute Pi by Throwing NeedlesCompute Pi by Throwing Needles

In 1777, Comte de Buffon published this method In 1777, Comte de Buffon published this method for computing for computing ::

N needles of length 1 are thrown at random N needles of length 1 are thrown at random positions and random angles on a plate positions and random angles on a plate ruled by parallel lines distance 1 apart. The ruled by parallel lines distance 1 apart. The probability that a needle intersects one of probability that a needle intersects one of the ruled lines is 2/the ruled lines is 2/. Thus, as N approaches . Thus, as N approaches infinity, the fraction of needles intersecting infinity, the fraction of needles intersecting a ruled line approaches 2/a ruled line approaches 2/. .

Page 13: CS100J Lecture 23

CS 100 Lecture 23 13

SubscriptingSubscripting

Subscripts start at 1, not zero.Subscripts start at 1, not zero.>> a = [1 2 3; 4 5 6; 7 8 9]>> a = [1 2 3; 4 5 6; 7 8 9]

ans = ans =

1 2 31 2 3

4 5 64 5 6

7 8 97 8 9

>> a(2,2)>> a(2,2)

ans = ans =

55

A range of indices can be specified:A range of indices can be specified:>> a(1:2, 2:3)>> a(1:2, 2:3)

ans = ans =

2 32 3

5 65 6

A colon indicates all subscripts in range:A colon indicates all subscripts in range:>> a(:, 2:3)>> a(:, 2:3)

ans = ans =

2 32 3

5 65 6

8 98 9

Page 14: CS100J Lecture 23

CS 100 Lecture 23 14

Control Structures: ConditionalsControl Structures: Conditionals

ifif expressionexpression

list-of-statementslist-of-statements

endend

ifif expressionexpression

list-of-statementslist-of-statements

elseelse

list-of-statementslist-of-statements

endend

ifif expressionexpression

list-of-statementslist-of-statements

elseifelseif expressionexpression

list-of-statements list-of-statements

. . .. . .

elseifelseif expressionexpression

list-of-statementslist-of-statements

elseelse

list-of-statementslist-of-statements

endend

Page 15: CS100J Lecture 23

CS 100 Lecture 23 15

Control Structures: LoopsControl Structures: Loops

whilewhile expressionexpression

list-of-statementslist-of-statements

endend

forfor variablevariable = = lolo::hihi

list-of-statementslist-of-statements

endend

forfor variablevariable = = lolo::byby::hihi

list-of-statementslist-of-statements

endend