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
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
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
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
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.
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
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)
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.
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)) )
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))
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
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;
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/. .
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
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
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