Presentation is loading. Please wait.

Presentation is loading. Please wait.

Getting started with Matlab Numerical Methods Appendix B help/techdoc/learn_matlab/learn_matlab.html.

Similar presentations


Presentation on theme: "Getting started with Matlab Numerical Methods Appendix B help/techdoc/learn_matlab/learn_matlab.html."— Presentation transcript:

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| ∞ ) - ∞

14

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

39

40 Run

41 M-file editor

42 Try it yourself, and think about how to use it.


Download ppt "Getting started with Matlab Numerical Methods Appendix B help/techdoc/learn_matlab/learn_matlab.html."

Similar presentations


Ads by Google