2
Outline
History of MATLAB(modified from Prof. James Brucker’s slide)
Elements Operators
3
Fortran and Scientific Computing
Engineering and scientific need numerical computing In the past, main language was FORTRAN
First "high level" programming language Here's a Fortran code to solve a x2 + b x + c = 0:
C Solve a quadratic equation (this is a comment). DESC = B*B - 4*A*C IF ( DESC .LT. 0.0 ) GOTO 10 DESC = SQRT(DESC) X1 = (-B + DESC)/(2.0*A) X2 = (-B - DESC)/(2.0*A) WRITE(6,*) "SOLUTIONS ARE ",X1," AND ", X2 RETURN 10 WRITE(6,*) "EQUATION HAS COMPLEX ROOTS" RETURN
4
Problems using FORTRAN
loss of precision and inaccurate results:X = 0.1Y = 1.0 - 10*X Y "should" equal 0, but probably does not!
underflow and overflow: X = 1.0E20, X*X --> too big!
efficient coding of algorithms not always obvious DO 10 N=1,100000 10 Y(N) = SQRT(2.0)*X(N) <-- inefficient!
programming errors!
5
Solving a Linear System in Fortran
From equation: b = A*x, solve for x It doesn't check for degeneracy or zeros.C Solve B = A*X for X. C N is dimension of vectors and matrixC Does not use row interchange, scaling. SUBROUTINE LINSYS(N, A, X, B, TMP) INTEGER N DOUBLE PRECISION A(N,N), X(N), B(N) DOUBLE PRECISION TMP(N), RATIOC... Forward elimination DO 13 J=1,N-1 DO 12 I=J+1,N RATIO = -A(I,J)/A(J,J) A(I,*) = A(I,*) +RATIO*ROW(J,*) DO 11 K=J+1,N 11 A(I,K) = A(I,K) + RATIO*A(J,K) A(I,J) = 0.0 X(I) = X(I) + RATIO*X(J) 12 CONTINUE 11 CONTINUE Continued...
C... Backwards substitution X(N) = X(N)/A(N,N) DO 21 I=N-1,1,-1 TMP = X(I) DO 20 J=I+1,N 20 TMP = TMP - A(I,J)*X(J) X(I) = TMP/A(I,I) 21 CONTINUE RETURN END
This is just a small example.
A full program may be 1000's of lines long.
6
Need for Numerical Libraries
The U.S. government notices that many engineers write the same algorithms.
Need a good quality algorithms for common tasks.
Make it as "libraries" of subroutines Libraries are available at: www.netlib.org
7
Examples of Numerical Libraries
BLAS (Basic Linear Algebra Subroutines): Vector operation (adding vectors, dot product)
LINPACK: linear algebra subroutines Vector-matrix operations (factoring, inverting a matrix) replaced by LAPACK.
EISPACK: compute eigenvalues and eigenvectors of matrices.
Example: solve A*x = b using LINPACKC.... factor the A matrix CALL SGEFA(A, N, N, IPVT, INFO)C.... copy B vector into X vector CALL SCOPY(N, B, 1, X, 1)C.... solve the system of equations CALL SGESL(A, N, N, IPVT, X, 0)
8
Still Not Easy Enough!
Cleve Moler (mathematician, C.S. Professor, Co-author of LINPACK) thought this is still too much work: write FORTRAN, compile, debug, compile, run...
He wrote MATLAB ("Matrix Laboratory"). interactive easy input, output operations on a whole vector or matrix at once
Example: solve b = A*x in Matlab...x = A \ b
9
Immediate Popularity!
MATLAB quickly became quite popular and used for both teaching and research. It was also free.
An engineer, Jack Little, saw Matlab during a lecture by Cleve Moler at Stanford University.
He saw the commercial potential and (with permission) rewrote Matlab in C added "M-files" (stored programs) many new features and libraries founded The Mathworks to market it.
10
Software principles...
Matlab illustrates some useful design concepts for software.
FORTRAN Compiler
Linear Algebra Libraries
Matlab
Matlab "Toolkits"Matlab "M-Files"
Standard base platform
Modular, reusable software components
Extensible using "Toolkits" or user-contributed programs called M-files.
Interactive user interface; hides boring details
11
Matlab Today
Millions of users! A standard tool in both professional and academic use "Toolboxes" providing functions for many
applications: control systems identification neural networks bio-informatics statistics and time-series analysis
Can do symbolic mathematics, too. Simulink: GUI based simulation tool
12
Pascal Programming
Program Calculate;{ This program calculates how much you need to pay }const
Unit_Price = 20;var
cost, total : integer;begin
write (‘How many pieces do you want ? ’);readln(total); { read total number that you want }
cost := total * Unit_Price;writeln (‘It costs ’,
cost, ‘ Baht’);end.
13
MATLAB Programming
% Basic Matrix Operations% Show how easy MATLAB isa = [1 2 3 4 6 4 3 4 5];b = a + 2;plot(b);grid on;xlabel('Sample #');ylabel('Pounds');
14
Outline
History of MATLAB(modified from Prof. James Brucker’s slide)
Elements Operators
15
Elements
Letter (A…Z, a…z) Digit (0…9) Special character (+ - * / _ = ! <> []{}) Number (1, 1.1, -1.1212, 23e+2) String (‘Hello’, ‘Today is Monday’, etc.) Matrix and Vector Operator
16
Matrix
1 2 3 4 2 3 4 9 12 0 2 7
row 1row 2row 3
col 1 col 2 col 3col 4
4 x 3 Matrix
Scalar
17
Vector
1 9 0 3
Vector A4 X 1
13 -2 8
Vector B1 X 3
18
Symbols
Symbol Description
. Decimal point
.. Parent directory
... Continuation
( ) Parentheses and subscripting
[ ] Brackets
{ } Braces and subscripting
: Colon
, Separator
; Semicolon
% Comment
19
Operators
Arithmetic operators Relational operators Logical operators
20
Arithmetic OperatorsOperator Description Example
+ Plus S + T
+ Unary plus +3
- Minus S – T
- Unary minus -C
* Matrix Multiply S * T
.* Array Multiply (member) S .* T
/ Left Matrix Divide (S* INV(T))
S / T
./ Left Array Divide S ./ T
\ Right Matrix Divide
(INV(S *) T) S \ T
.\ Right Array Divide S .\ T
^ Matrix Power S ^ 2
.^ Array Power S .^ 3
21
Relational Operators
Operator Description Example
== Equal S == T
~= Not Equal S ~= T
< Less than S < T
> Greater than S > T
<= Less than or equal S <= T
>= Greater than or equal S >= T
22
Logical Operators
Operator Description Example
&& Logical AND S && T
|| Logical OR S || T
& Element-wise logical AND S & T
| Element-wise logical OR S | T
~ Logical NOT ~S
23
Arithmetic Expression
45.00 (width + length) (12*(top – bottom)) 4 – 2 = ? 2+15/3*2 = ? (2+15)/(3*2) (2 + (15/3)) * 2 2 + ((15/3) * 2)
24
Precedence rules for arithmetic operators
1. ( ) parentheses2. Unary + and –3. *, /4. + –5. If equal precedence, left to rightExamples
-a+k/-w = (-a) + (k / (-w))
C*23/6+23*2 = ((C*23)/6) + (23*2)
25
Assignment statement
A = 12 C = A + B Ans = width + length Result = 2+15/3*2