Download presentation
Presentation is loading. Please wait.
1
Getting started with Matlab Numerical Methods Appendix B http://www.mathworks.com/access/helpdesk/ help/techdoc/learn_matlab/learn_matlab.html
2
Linear Algebra with Matlab Introduction of Basic Matlab functions
3
Solve Solve Ax=b Ax=b Matlab Matlab x= A\b
4
trace(A) >> A=[1 3 6;2 1 9; 3 6 1] >> A=[1 3 6;2 1 9; 3 6 1] A = A = 1 3 6 1 3 6 2 1 9 2 1 9 3 6 1 3 6 1 >> trace(A) >> trace(A) ans = ans = 3 3
5
rank() >> B=[1 2 3; 3 4 7; 4 -3 1;-2 5 3; 1 -7 6] >> B=[1 2 3; 3 4 7; 4 -3 1;-2 5 3; 1 -7 6] B = B = 1 2 3 1 2 3 3 4 7 3 4 7 4 -3 1 4 -3 1 -2 5 3 -2 5 3 1 -7 6 1 -7 6 >> rank (B) >> rank (B) ans = ans = 3 3 Number of independent rows
6
Reduced row echelon form;rref(B) >> B=[1 2 3; 3 4 7; 4 -3 1;-2 5 3; 1 -7 6]; >> B=[1 2 3; 3 4 7; 4 -3 1;-2 5 3; 1 -7 6]; >> rref(B) >> rref(B) ans = ans = 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0
7
inv(A) >> A=rand(3,3) >> A=rand(3,3) A = A = 0.1389 0.6038 0.0153 0.1389 0.6038 0.0153 0.2028 0.2722 0.7468 0.2028 0.2722 0.7468 0.1987 0.1988 0.4451 0.1987 0.1988 0.4451 >> inv(A) >> inv(A) ans = ans = -0.8783 -8.5418 14.3617 -0.8783 -8.5418 14.3617 1.8694 1.8898 -3.2348 1.8694 1.8898 -3.2348 -0.4429 2.9695 -2.7204 -0.4429 2.9695 -2.7204 >> A*inv(A) >> A*inv(A) ans = ??? ans = ???
8
det(A) >> A=rand(3,3) >> A=rand(3,3) A = A = 0.9318 0.8462 0.6721 0.9318 0.8462 0.6721 0.4660 0.5252 0.8381 0.4660 0.5252 0.8381 0.4186 0.2026 0.0196 0.4186 0.2026 0.0196 >> det(A) >> det(A) ans = ans = 0.0562 0.0562
9
Ax=b; x=A\b >> A=rand(3,3) >> A=rand(3,3) A = A = 0.9318 0.8462 0.6721 0.9318 0.8462 0.6721 0.4660 0.5252 0.8381 0.4660 0.5252 0.8381 0.4186 0.2026 0.0196 0.4186 0.2026 0.0196 >> b=rand(3,1) >> b=rand(3,1) b = b = 0.1509 0.1509 0.6979 0.6979 0.3784 0.3784 >> x = A\b >> x = A\b x = x = 3.4539 3.4539 -5.4966 -5.4966 2.3564 2.3564 >> A*x >> A*x ans = ans = 0.1509 0.1509 0.6979 0.6979 0.3784 0.3784
10
tic, toc, elapsed_time >> tic >> tic >> toc >> toc elapsed_time = elapsed_time = 2.1630 2.1630 >> tic >> tic >> x=toc >> x=toc x = x = 2.5240 2.5240
11
time.m A=rand(1000,1000); A=rand(1000,1000); tic tic inv(A); inv(A); time_to_inverse_A=toc time_to_inverse_A=toc
12
output functions disp( ‘ strings to be shown on screen ’ ); disp( ‘ strings to be shown on screen ’ ); fprintf( ‘ As C language %8.2f\n ’, ver1); fprintf( ‘ As C language %8.2f\n ’, ver1); >> ver1=1.3333 >> ver1=1.3333 >> fprintf('As C language %8.2f\n', ver1); >> fprintf('As C language %8.2f\n', ver1); As C language 1.33 As C language 1.33
13
norm(V,n) v=[3, 4] v=[3, 4] norm(v,1) norm(v,1) ans = ans = 7 7 norm(v) norm(v) ans = ans = 5 5 norm(v,3) norm(v,3) ans = ans = 4.4979 4.4979 norm(v,inf) norm(v,inf) ans = ans = 4 4 ||V|| 1 =(|v1|+|V2|+…|Vn | ) ||V|| 1 =(|v1|+|V2|+…|Vn | ) ||V|| 2 =(|v1| 2 +|V2| 2 +…|V n| 2 ) -2 ||V|| 2 =(|v1| 2 +|V2| 2 +…|V n| 2 ) -2 ||V|| 3 =(|v1| 3 +|V2| 3 +…|V n| 3 ) -3 ||V|| 3 =(|v1| 3 +|V2| 3 +…|V n| 3 ) -3 ||V|| inf =(|v1| ∞ +|V2| ∞ +…|Vn| ∞ ) - ∞ ||V|| inf =(|v1| ∞ +|V2| ∞ +…|Vn| ∞ ) - ∞
15
If Ax=b has solution Then Then Ax =0 only when x=0 Ax =0 only when x=0 det(A) ≠0 det(A) ≠0 reff(A) = I reff(A) = I rank(A)=n rank(A)=n
16
LU decomposition >> A=rand(3) >> A=rand(3) A = A = 0.9991 0.8848 0.4642 0.9991 0.8848 0.4642 0.3593 0.4178 0.2477 0.3593 0.4178 0.2477 0.3566 0.0836 0.1263 0.3566 0.0836 0.1263 >> [L1,U]=lu(A) >> [L1,U]=lu(A) L1 = L1 = 1.0000 0 0 1.0000 0 0 0.3596 -0.4291 1.0000 0.3596 -0.4291 1.0000 0.3569 1.0000 0 0.3569 1.0000 0 U = U = 0.9991 0.8848 0.4642 0.9991 0.8848 0.4642 0 -0.2322 -0.0394 0 -0.2322 -0.0394 0 0 0.0638 0 0 0.0638 >> [L,U,P]=lu(A) >> [L,U,P]=lu(A) L = L = 1.0000 0 0 1.0000 0 0 0.3569 1.0000 0 0.3569 1.0000 0 0.3596 -0.4291 1.0000 0.3596 -0.4291 1.0000 U = U = 0.9991 0.8848 0.4642 0.9991 0.8848 0.4642 0 -0.2322 -0.0394 0 -0.2322 -0.0394 0 0 0.0638 0 0 0.0638 P = P = 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0
17
11.1.2 Cholesky decomposition >> A=[2 3 4; 3 6 7; 4 7 10]; >> A=[2 3 4; 3 6 7; 4 7 10]; >> P=chol(A) >> P=chol(A) P = P = 1.4142 2.1213 2.8284 1.4142 2.1213 2.8284 0 1.2247 0.8165 0 1.2247 0.8165 0 0 1.1547 0 0 1.1547 >> P'*P-A >> P'*P-A ans = ans = 1.0e-015 * 1.0e-015 * 0.4441 0 0 0.4441 0 0 0 0 0 0 0 0 A is positive definite symmetric A is positive definite symmetric A=P T P A=P T P
18
QR decomposition A = A = 0.8138 0.7576 0.2240 0.8138 0.7576 0.2240 0.1635 0.0536 0.8469 0.1635 0.0536 0.8469 0.0567 0.5092 0.0466 0.0567 0.5092 0.0466 >> [Q,R]=qr(A) >> [Q,R]=qr(A) Q = Q = -0.9781 -0.0246 -0.2065 -0.9781 -0.0246 -0.2065 -0.1965 -0.2161 0.9564 -0.1965 -0.2161 0.9564 -0.0682 0.9761 0.2065 -0.0682 0.9761 0.2065 R = R = -0.8319 -0.7862 -0.3887 -0.8319 -0.7862 -0.3887 0 0.4667 -0.1430 0 0.4667 -0.1430 0 0 0.7734 0 0 0.7734 Q Orthogonal matrix R Upper triangle matrix
19
Singular Value Decomposition >> A = [1 2 3 4 5; 5 9 2 3 4; 2 2 3 4 2] >> A = [1 2 3 4 5; 5 9 2 3 4; 2 2 3 4 2] >> [U,S,V]=svd(A) >> [U,S,V]=svd(A) U = U = -0.4581 0.6831 -0.5688 -0.4581 0.6831 -0.5688 -0.7993 -0.5966 -0.0727 -0.7993 -0.5966 -0.0727 -0.3890 0.4213 0.8193 -0.3890 0.4213 0.8193 S = S = 14.0087 0 0 0 0 14.0087 0 0 0 0 0 5.1976 0 0 0 0 5.1976 0 0 0 0 0 1.9346 0 0 0 0 1.9346 0 0 V = V = -0.3735 -0.2803 0.3650 -0.4827 -0.6447 -0.3735 -0.2803 0.3650 -0.4827 -0.6447 -0.6344 -0.6080 -0.0793 0.2604 0.3920 -0.6344 -0.6080 -0.0793 0.2604 0.3920 -0.2955 0.4079 0.3133 -0.5529 0.5852 -0.2955 0.4079 0.3133 -0.5529 0.5852 -0.4130 0.5056 0.4052 0.6063 -0.2051 -0.4130 0.5056 0.4052 0.6063 -0.2051 -0.4473 0.3601 -0.7734 -0.1609 -0.2149 -0.4473 0.3601 -0.7734 -0.1609 -0.2149 >> U*S*V' >> U*S*V' ans = ans = 1.0000 2.0000 3.0000 4.0000 5.0000 1.0000 2.0000 3.0000 4.0000 5.0000 5.0000 9.0000 2.0000 3.0000 4.0000 5.0000 9.0000 2.0000 3.0000 4.0000 2.0000 2.0000 3.0000 4.0000 2.0000 2.0000 2.0000 3.0000 4.0000 2.0000 A=USV T A=USV T A.. m x n U.. m x m S.. m x n (singular value) V.. n x n
20
Reduce 3 columns V = V = -0.3735 -0.2803 0 0 0 -0.3735 -0.2803 0 0 0 -0.6344 -0.6080 0 0 0 -0.6344 -0.6080 0 0 0 -0.2955 0.4079 0 0 0 -0.2955 0.4079 0 0 0 -0.4130 0.5056 0 0 0 -0.4130 0.5056 0 0 0 -0.4473 0.3601 0 0 0 -0.4473 0.3601 0 0 0 >> U*S*V' >> U*S*V' ans = ans = 1.4016 1.9127 3.3447 4.4458 4.1490 1.4016 1.9127 3.3447 4.4458 4.1490 5.0514 8.9888 2.0441 3.0570 3.8912 5.0514 8.9888 2.0441 3.0570 3.8912 1.4215 2.1258 2.5035 3.3579 3.2258 1.4215 2.1258 2.5035 3.3579 3.2258
21
Pseudo-inverse A = A = 0 0 0 0 1 0 1 0 0 1 0 1 >> Aplus=pinv(A) >> Aplus=pinv(A) Aplus = Aplus = 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 >> Aplus*A >> Aplus*A ans = ans = 1 0 1 0 0 1 0 1 >> A*Aplus >> A*Aplus ans = ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 Since A is not n by n, there is no inverse A -1. Since A is not n by n, there is no inverse A -1. Ax=b can be solved by pseudo-inverse A +. Ax=b can be solved by pseudo-inverse A +. x = A + * b x = A + * b
22
cond(A), rcond(A) >> A=eye(3).*20 >> A=eye(3).*20 A = A = 20 0 0 20 0 0 0 20 0 0 20 0 0 0 20 0 0 20 >> [cond(A) rcond(A)] >> [cond(A) rcond(A)] ans = ans = 1 1 1 1 cond(A) =1 cond(A) =1 A is perfectly conditioned stable cond(A) > large number cond(A) > large number A is ill-conditioned too sensitive rcond is a rapid version of cond rcond is a rapid version of cond rcond~1/cond
23
Condition of a Hilbert matrix >> hilb(4) >> hilb(4) ans = ans = 1.0000 0.5000 0.3333 0.2500 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 >> cond(hilb(4)) >> cond(hilb(4)) ans = ans = 1.5514e+004 1.5514e+004
24
Matlab Programming
25
if, else, and elseif if A > B 'greater' 'greater' elseif A < B 'less' elseif A == B 'equal'else error('Unexpected situation') end
26
switch and case switch (rem(n,4)==0) + (rem(n,2)==0) case 0 M = odd_magic(n) case 1 M = single_even_magic(n) case 2 M = double_even_magic(n) otherwise error('This is impossible') end
27
for for n = 3:32 r(n) = rank(magic(n)); end r Display the result
28
While a = 0; fa = -Inf; b = 3; fb = Inf; while b-a > eps*b x = (a+b)/2; fx = x^3-2*x-5; if sign(fx) == sign(fa) a = x; fa = fx; else b = x; fb = fx; end x The result is a root of the polynomial x^3 - 2x - 5 x = 2.09455148154233 (bisection method)
29
continue fid = fopen('magic.m','r'); count = 0; while ~feof(fid) line = fgetl(fid); if isempty(line) | strncmp(line,'%',1) continue end count = count + 1; end disp(sprintf('%d lines',count));
30
break a = 0; fa = -Inf; b = 3; fb = Inf; while b-a > eps*b x = (a+b)/2; fx = x^3-2*x-5; if fx == 0 break elseif sign(fx) == sign(fa) a = x; fa = fx; else b = x; fb = fx; end end x
31
try - catch try statement... statement catch statement... statement end
32
return function d = det(A) %DET det(A) is the determinant of A. if isempty(A) d = 1; return else... end return terminates the current sequence of commands and returns control to the invoking function
33
GUIDE
34
GUIDE
35
Blank GUI
36
M-file editor
37
Tools ->Run
38
GUI with Axes and Menu
40
Run
41
M-file editor
42
Try it yourself, and think about how to use it.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.