1 / 42

Getting started with Matlab

Learn the basics of Matlab and its numerical methods for linear algebra, including solving equations, calculating determinants, LU decomposition, QR decomposition, and singular value decomposition.

selby
Download Presentation

Getting started with Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 Ax=b 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 • >> trace(A) • ans = • 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 • >> rank (B) • ans = • 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]; • >> rref(B) • ans = • 1 0 0 • 0 1 0 • 0 0 1 • 0 0 0 • 0 0 0

  7. inv(A) • >> A=rand(3,3) • A = • 0.1389 0.6038 0.0153 • 0.2028 0.2722 0.7468 • 0.1987 0.1988 0.4451 • >> inv(A) • ans = • -0.8783 -8.5418 14.3617 • 1.8694 1.8898 -3.2348 • -0.4429 2.9695 -2.7204 • >> A*inv(A) • ans = ???

  8. det(A) • >> A=rand(3,3) • A = • 0.9318 0.8462 0.6721 • 0.4660 0.5252 0.8381 • 0.4186 0.2026 0.0196 • >> det(A) • ans = • 0.0562

  9. >> A=rand(3,3) A = 0.9318 0.8462 0.6721 0.4660 0.5252 0.8381 0.4186 0.2026 0.0196 >> b=rand(3,1) b = 0.1509 0.6979 0.3784 >> x = A\b x = 3.4539 -5.4966 2.3564 >> A*x ans = 0.1509 0.6979 0.3784 Ax=b; x=A\b

  10. >> tic >> toc elapsed_time = 2.1630 >> tic >> x=toc x = 2.5240 tic, toc, elapsed_time

  11. time.m • A=rand(1000,1000); • tic • inv(A); • time_to_inverse_A=toc

  12. output functions • disp(‘strings to be shown on screen’); • fprintf(‘As C language %8.2f\n’, ver1); • >> ver1=1.3333 • >> fprintf('As C language %8.2f\n', ver1); • As C language 1.33

  13. v=[3, 4] norm(v,1) ans = 7 norm(v) ans = 5 norm(v,3) ans = 4.4979 norm(v,inf) ans = 4 ||V||1=(|v1|+|V2|+…|Vn|) ||V||2=(|v1|2+|V2|2+…|Vn|2 ) -2 ||V||3=(|v1|3+|V2|3+…|Vn|3 ) -3 ||V||inf=(|v1|∞+|V2| ∞ +…|Vn|∞) - ∞ norm(V,n)

  14. If Ax=b has solution • Then • Ax =0 only when x=0 • det(A) ≠0 • reff(A) = I • rank(A)=n

  15. >> A=rand(3) A = 0.9991 0.8848 0.4642 0.3593 0.4178 0.2477 0.3566 0.0836 0.1263 >> [L1,U]=lu(A) L1 = 1.0000 0 0 0.3596 -0.4291 1.0000 0.3569 1.0000 0 U = 0.9991 0.8848 0.4642 0 -0.2322-0.0394 0 0 0.0638 >> [L,U,P]=lu(A) L = 1.0000 0 0 0.3569 1.0000 0 0.3596 -0.4291 1.0000 U = 0.9991 0.8848 0.4642 0 -0.2322 -0.0394 0 0 0.0638 P = 1 0 0 0 0 1 0 1 0 LU decomposition

  16. >> A=[2 3 4; 3 6 7; 4 7 10]; >> P=chol(A) P = 1.4142 2.1213 2.8284 0 1.2247 0.8165 0 0 1.1547 >> P'*P-A ans = 1.0e-015 * 0.4441 0 0 0 0 0 0 0 0 A is positive definite symmetric A=PTP 11.1.2 Cholesky decomposition

  17. A = 0.8138 0.7576 0.2240 0.1635 0.0536 0.8469 0.0567 0.5092 0.0466 >> [Q,R]=qr(A) Q = -0.9781 -0.0246 -0.2065 -0.1965 -0.2161 0.9564 -0.0682 0.9761 0.2065 R = -0.8319 -0.7862 -0.3887 0 0.4667 -0.1430 0 0 0.7734 Q Orthogonal matrix R Upper triangle matrix QR decomposition

  18. >> A = [1 2 3 4 5; 5 9 2 3 4; 2 2 3 4 2] >> [U,S,V]=svd(A) U = -0.4581 0.6831 -0.5688 -0.7993 -0.5966 -0.0727 -0.3890 0.4213 0.8193 S = 14.0087 0 0 0 0 0 5.1976 0 0 0 0 0 1.9346 0 0 V = -0.3735 -0.2803 0.3650 -0.4827 -0.6447 -0.6344 -0.6080 -0.0793 0.2604 0.3920 -0.2955 0.4079 0.3133 -0.5529 0.5852 -0.4130 0.5056 0.4052 0.6063 -0.2051 -0.4473 0.3601 -0.7734 -0.1609 -0.2149 >> U*S*V' ans = 1.0000 2.0000 3.0000 4.0000 5.0000 5.0000 9.0000 2.0000 3.0000 4.0000 2.0000 2.0000 3.0000 4.0000 2.0000 A=USVT A .. m x n U .. m x m S .. m x n (singular value) V .. n x n Singular Value Decomposition

  19. Reduce 3 columns • V = • -0.3735 -0.2803 0 0 0 • -0.6344 -0.6080 0 0 0 • -0.2955 0.4079 0 0 0 • -0.4130 0.5056 0 0 0 • -0.4473 0.3601 0 0 0 • >> U*S*V' • ans = • 1.4016 1.9127 3.3447 4.4458 4.1490 • 5.0514 8.9888 2.0441 3.0570 3.8912 • 1.4215 2.1258 2.5035 3.3579 3.2258

  20. A = 0 0 0 0 0 0 1 0 0 1 >> Aplus=pinv(A) Aplus = 0 0 0 1 0 0 0 0 0 1 >> Aplus*A ans = 1 0 0 1 >> A*Aplus ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 Since A is not n by n, there is no inverse A-1. Ax=b can be solved by pseudo-inverse A+. x = A+ * b Pseudo-inverse

  21. >> A=eye(3).*20 A = 20 0 0 0 20 0 0 0 20 >> [cond(A) rcond(A)] ans = 1 1 cond(A) =1 A is perfectly conditioned stable cond(A) > large number A is ill-conditioned too sensitive rcond is a rapid version of cond rcond~1/cond cond(A), rcond(A)

  22. Condition of a Hilbert matrix • >> hilb(4) • ans = • 1.0000 0.5000 0.3333 0.2500 • 0.5000 0.3333 0.2500 0.2000 • 0.3333 0.2500 0.2000 0.1667 • 0.2500 0.2000 0.1667 0.1429 • >> cond(hilb(4)) • ans = • 1.5514e+004

  23. Matlab Programming

  24. if, else, and elseif • if A > B • 'greater' • elseif A < B • 'less' • elseif A == B • 'equal' • else • error('Unexpected situation') • end

  25. 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

  26. for for n = 3:32 r(n) = rank(magic(n)); end r r Display the result

  27. 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 end x (bisection method) The result is a root of the polynomial x^3 - 2x - 5 x = 2.09455148154233

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

  29. 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

  30. try - catch try statement ... statement catch statement ... statement end

  31. 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

  32. GUIDE

  33. GUIDE

  34. Blank GUI

  35. M-file editor

  36. Tools ->Run

  37. GUI with Axes and Menu

  38. Run

  39. M-file editor

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

More Related