User Tools

Site Tools


gibson:teaching:spring-2016:math445:lecture:forloop

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gibson:teaching:spring-2016:math445:lecture:forloop [2016/02/16 11:02]
gibson [functions]
gibson:teaching:spring-2016:math445:lecture:forloop [2016/02/17 07:38] (current)
gibson
Line 24: Line 24:
   * ''​%d''​ decimal (integer), e.g. 5   * ''​%d''​ decimal (integer), e.g. 5
   * ''​%f''​ floating-point,​ e.g. 2.75   * ''​%f''​ floating-point,​ e.g. 2.75
 +  * ''​%e''​ floating-point in scientific (exponential) notation, e.g. 2.75e+00 for 2.75
   * ''​%s''​ string (a sequence of characters),​ e.g. ''​ '​banana'''​.   * ''​%s''​ string (a sequence of characters),​ e.g. ''​ '​banana'''​.
   * ''​%c''​ character, e.g. ''​ '​q'​ ''​   * ''​%c''​ character, e.g. ''​ '​q'​ ''​
 +
 +The decimal and floating-point slots can be specialized to print numbers in particular ways, for example,
 +
 +<code matlab>
 +>> fprintf('​The value of pi is %8.3f\n',​ pi)
 +The value of pi is    3.142
 +</​code> ​
 +
 +This prints $\pi$ with 3 digits after the decimal in a fixed-width field of 8 characters.
 +
 +You can put as many slots in a format string as you like. Just provide as many variables as slots, and make sure the types of the slots match the variables.
 +
 ===== for loops: repeating sequences of commands===== ===== for loops: repeating sequences of commands=====
  
Line 74: Line 87:
 </​code>​ </​code>​
  
-===== example ​function: my sum =====+===== example ​functions ​=====
  
 +==== sum the components of a vector ====
 +This ''​mysum''​ function computes the sum of the components in the input vector $x$. There are a 
 +number of extraneous print statements which show how the calculation works, step-by-step.
 <file matlab mysum.m> <file matlab mysum.m>
 function s = mysum(x); function s = mysum(x);
Line 83: Line 99:
   n = length(x); ​  % get length of vector x   n = length(x); ​  % get length of vector x
    
-  fprintf('​Will need to do %d additions.\n',​ n);+  fprintf('​Will need to do %d additions.\n\n', n);
   ​   ​
   for i=1:n   for i=1:n
-    fprintf('​The current ​value of s is %f.\n',​ s);+    fprintf('​The current ​partial sum is s = %f.\n\n', s);
     pause     pause
-    fprintf('​Add %f to s.\n', x(i));+    fprintf('​Add %f.\n',​ x(i));
     s = s + x(i);     s = s + x(i);
   end   end
   ​   ​
-  fprintf('​The ​current value of s is %f.\n',​ s);+  fprintf('​The ​total sum is s = %f.\n',​ s);
   pause   pause
 end end
 </​file>​ </​file>​
  
-===== example ​function: ​myfactorial ​=====+You can execute this function with on the input vector ''​[4 2 9 1]]''​ like this 
 +<​code>​ 
 +>> mysum([4 2 9 1]) 
 +Will need to do 4 additions. 
 + 
 +The current partial sum is s 0.000000. 
 + 
 +Add 4.000000. 
 +The current partial sum is s 4.000000. 
 + 
 +Add 2.000000. 
 +The current partial sum is s 6.000000. 
 + 
 +Add 9.000000. 
 +The current partial sum is s 15.000000. 
 + 
 +Add 1.000000. 
 +The total sum is s 16.000000. 
 +ans = 
 +    16 
 +>>  
 +</​code>​ 
 + 
 +The function ​is a lot easier to read if you take out the print statements 
 + 
 +<file matlab mysum.m>​ 
 +function s = mysum(x); 
 +% compute the sum of the components of vector x 
 + 
 +  s = 0;           % variable to hold partial sum 
 +  n = length(x); ​  % get length of vector x 
 + 
 +  for i=1:n        % for each number i from 1 to n 
 +    s s + x(i);  %    add x(i) to the partial sum 
 +  end 
 +  
 +end 
 +</​file>​ 
 +==== compute the factorial ==== 
 + 
 +This function computes $n!$, the factorial of $n$, according to the formula 
 + 
 +\begin{eqnarray*} 
 +n! = \prod_{i=1}^n i = 1\cdot 2 \cdot 3 \cdot \ldots \cdot (n-2) \cdot (n-1) \cdot n 
 +\end{eqnarray*}
  
 <file matlab myfactorial.m>​ <file matlab myfactorial.m>​
Line 104: Line 164:
  
   p = 1;   % variable to store partial products   p = 1;   % variable to store partial products
- 
-  fprintf('​Will need to do %d products.\n',​ n); 
   ​   ​
   % each step through the loop does one more multiplication   % each step through the loop does one more multiplication
   % in the sequence of products 1, 1*2, 1*2*3, etc.   % in the sequence of products 1, 1*2, 1*2*3, etc.
   for i=1:n   for i=1:n
-    fprintf('​The current value of p is %f.\n',​ p); 
-    pause 
-    fprintf('​Multiply p by %f.\n',​ i); 
     p = p * i;     p = p * i;
   end   end
-   +
-  fprintf('​The current value of p is %f.\n',​ p); +
-  pause+
 end end
 </​file>​ </​file>​
gibson/teaching/spring-2016/math445/lecture/forloop.1455649350.txt.gz · Last modified: 2016/02/16 11:02 by gibson