1 / 121

Solution Strategies 1. PROGRAMMING WITH MATLAB

Solution Strategies 1. PROGRAMMING WITH MATLAB. MATLAB Fundamentals. MATLAB. Matrix Laboratory. Problem-Solving Methodology. State the problem clearly Describe the Input/Output (I/O) Work the problem by hand Algorithm - Numerical Method Develop a MATLAB Solution Debugging and Testing

sheri
Télécharger la présentation

Solution Strategies 1. PROGRAMMING 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. Solution Strategies 1. PROGRAMMING WITH MATLAB

  2. MATLAB Fundamentals

  3. MATLAB Matrix Laboratory

  4. Problem-Solving Methodology • State the problem clearly • Describe the Input/Output (I/O) • Work the problem by hand • Algorithm - Numerical Method • Develop a MATLAB Solution • Debugging and Testing • Documentation

  5. Why MATLAB? • Industry standard software application • Wealth of built-in functions and libraries • Toolboxes (add-on software modules) – optimization, neural network, image and signal processing, control systems design, fuzzy logic, etc. • Has own structured programming language • Ease of application and testing (pre- and post-processing without lots of programming and formatting) • Platform independent

  6. What is MATLAB? • Both a computer programming language and a software • Began as a set of tools to solve linear algebraic equations. Has grown to a complete scientific programming suite • Interpretive programming language: Read script files and perform operations; generally not compiled • Enhanced calculator / spreadsheet – much more flexible • Complete visualization package and post-processing analysis suite

  7. MATLAB • MATLAB is a numerical analysis system • Can write “programs”, but they are not formally compiled • Should still use structured programming • Should still use comments • Comments are indicated by “%” at the beginning of the line

  8. MATLAB Windows • Command Window -- enter commands and data -- print results • Graphics Window -- display plots and graphs • Edit Window -- create and modify m-files

  9. Managing MATLAB Environment • who or whos -- See the current runtime environment • clear -- remove all variables from memory • clc -- clear the command window • clf -- clear the graphics window • save -- save the workspace environment • load -- restore workspace from a disk file • abort -- CTRL-C • help -- help “command” Really good “help” command

  10. MATLAB Syntax • No complicated rules • Perhaps the most important thing to remember is semicolons(;) at the end of a line to suppress output • diary“filename” saves a text record of session • diary off turns it off

  11. MATLAB • MATLAB’s basic component is a Vector or Matrix • Even single value variables (Scalars) • All operations are optimized for vector use • Loops run slower in MATLAB than in Fortran (not a vector operation) • “size”command gives size of the matrix

  12. Scalars, Vectors, Matrices • MATLAB treat variables as “matrices” • Matrix (m  n) - a set of numbers arranged in rows (m) and columns (n) • Scalar: 1  1 matrix • Row Vector: 1  n matrix • Column Vector: m  1 matrix

  13. >> pi ans = 3.1416 >> size(pi) ans = 1 1 >> a=[1 2 3; 4 5 6] a = 1 2 3 4 5 6 >> size(a) ans = 2 3 a=

  14. Complex variables • MATLAB handles complex arithmetic automatically • No need to compute real and imaginary parts separately • The unit imaginary number i = is preassigned » x=5+2*i x = 5.0000 + 2.0000i » y=5*x+3 y = 28.0000 +10.0000i

  15. MATLAB Example » x=3+5-0.2 x = 7.8000 » y=3*x^2+5 y = 187.5200 » z=x*sqrt(y) z = 106.8116 » A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 » b=[3;2;5] b = 3 2 5 » C=A*b C = 22 52 » who Your variables are: A b y C x z » whos Name Size Bytes Class A 2x3 48 double array C 2x1 16 double array b 3x1 24 double array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array » save Saving to: matlab.mat » save matrix1 default filename filename “matrix1”

  16. Data types • All numbers are double precision • Text is stored as arrays of characters • You don’t have to declare the type of data (defined when running) • MATLAB is case-sensitive!!!

  17. Variable Names • Usually, the name is identified with the problem • Variable names may consist of up to 31 characters • Variable names may be alphabetic, digits, and the underscore character ( _ ) • Variable names must start with a letter ABC, A1, C56, CVEN_302 day, year, iteration, max time, velocity, distance, area, density, pressure Time, TIME, time (case sensitive!!)

  18. Initializing Variables • Explicitly list the values • reads from a data file • uses the colon (:) operator • reads from the keyboard A = [1; 3; 5; 10]; B = [1 3 5; -6 4 -1] C = [2 3 5 1; 0 1 … (continuation) 1 -2; 3 5 1 -3] E = [A; 1; A]; F = [C(2,3); A]

  19. Matrix Concatenation

  20. Colon Operator • Creating new matrices from an existing matrix C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4] F = C(:, 2:3) = [2,5; 0,1; 2,-1; 1,4]

  21. Colon Operator • Creating new matrices from an existing matrix C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4] E = C(2:3,:) = [-1 0 1; 3 2 -1]

  22. Colon Operator • Creating new matrices from an existing matrix C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4] G = C(3:4,1:2) = [3,2; 0,1]

  23. Colon Operator • Variable_name = a:step:b time = 0.0:0.5:2.5 time = [0.0, 0.5, 1.0, 1.5, 2.0, 2.5] • Negative increment values = 10:-1:2 values = [10, 9, 8, 7, 6, 5, 4, 3, 2]

  24. linspace Function • linspace(x1, x2) gives 100 evenly spaced values between x1 and x2 x = linspace(x1,x2) • linspace(a,b,n) generate n equally spaced points between a and b x = linspace(a,b,n) » linspace(0,2,11) ans = Columns 1 through 7 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 Columns 8 through 11 1.4000 1.6000 1.8000 2.0000

  25. logspace Function • logspace(a,b,n) generates a logarithmically equally spaced row vector x = logspace(a,b,n) • logspace(a,b) generates 50 logarithmically equally spaced points x = logspace(a,b) » logspace(-4,2,7) ans = 0.0001 0.0010 0.0100 0.1000 1.0000 10.0000 100.0000

  26. Special Matrices

  27. Scalar Arithmetic Operations • In order of priority (Matrix inverse) Example: x = (a + b*c)/d^2 count = count + 1

  28. Order of Precedence of Arithmetic Operations • Parentheses, starting with the innermost pair • Exponentiation, from left to right • Multiplication and division with equal precedence, from left to right • Addition and subtraction with equal precedence, from left to right Examples: factor = 1 + b/v + c/v^2 slope = (y2 - y1)/(x2 - x1) loss = f * length/dia * (1/2 * rho * v^2) func = 1 + 0.5*(3*x^4 + (x + 2/x)^2)

  29. Order of Precedence of Arithmetic Operations • The priority order can be overridden with parentheses » y = -7.3^2 y = -53.2900 » y=(-7.3)^2 y = 53.2900 » a=3; b=5; c=2; » s1 = a-b*c s1 = -7 » s2=(a-b)*c s2 = -4 Exponentiation has higher priority than negation Multiplication has higher priority than subtraction

  30. Array Operations • An array operation is performed element-by-element MATLAB: C = A.*B;

  31. Element-by-Element Operations

  32. Vector and Matrix operations But a*b gives an error (undefined) because dimensions are incorrect. Need to use .*

  33. Vectorized Matrix Operations

  34. Array Operations for m  n Matrices

  35. Matrix Transpose

  36. Built-in Functions • All the standard operators +, , *, /, ^ • Sqrt( ), abs( ), sin( ), cos( ), exp( ), tanh( ), acos( ), log( ), log10( ), etc. • These operators are vectorized

  37. Built-in Functions • Certain functions, such as exponential and square root, have matrix definition also • Use “help expm” and “help sqrtm” for details >> A = [1 3 5; 2 4 6; -3 2 -1] A = 1 3 5 2 4 6 -3 2 -1 >> B = sqrt(A) B = 1.0000 1.7321 2.2361 1.4142 2.0000 2.4495 0 + 1.7321i 1.4142 0 + 1.0000i >> C = sqrtm(A) C = 2.1045 + 0.0000i 0.1536 - 0.0000i 1.8023 + 0.0000i 1.7141 - 0.0000i 1.1473 + 0.0000i 1.7446 + 0.0000i -2.0484 + 0.0000i 1.3874 + 0.0000i 0.5210 - 0.0000i (element by element) (C*C = A)

  38. MATLAB Graphics • One of the best things about MATLAB is interactive graphics • “plot”is the one you will be using most often • Many other 3D plotting functions -- plot3, mesh, surfc, etc. • Use “help plot” for plotting options • To get a new figure, use “figure” • logarithmic plots available using semilogx, semilogy and loglog

  39. Plotting Commands plot(x,y) defaults to a blue line plot(x,y,’ro’) uses red circles plot(x,y,’g*’) uses green asterisks If you want to put two plots on the same graph, use “hold on” plot(a,b,’r:’) (red dotted line) hold on plot(a,c,’ko’) (black circles)

  40. Bungee Jumper • You are asked to plot the velocity of a bungee jumper as a function of time during the free-fall part of the jump

  41. Exact (Analytic) Solution • Newton’s Second Law • Exact Solution

  42. Free-Falling Bungee Jumper >> g = 9.81; m = 75.2; cd = 0.24; >> t = 0:1:20 t = Columns 1 through 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Columns 16 through 21 15 16 17 18 19 20 >> v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t) v = Columns 1 through 9 0 9.7089 18.8400 26.9454 33.7794 39.2956 43.5937 46.8514 49.2692 Columns 10 through 18 51.0358 52.3119 53.2262 53.8772 54.3389 54.6653 54.8956 55.0579 55.1720 Columns 19 through 21 55.2523 55.3087 55.3484 • Use built-in functionssqrt&tanh

  43. >> plot(t,v); grid on >> title('Free Falling Bungee Jumper') >> xlabel('time t (second)'); ylabel('velocity v (m/s)') >> print –djpeg bungee.jpg • Plot the velocity versus time curve How to change line thickness, line color, font size, symbols, marker size, etc.?

  44. Color, Symbols, and Line Types b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star y yellow s square k black d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram Colors Symbols Line Types • Use “help plot” to find available Specifiers

  45. » x=0:0.1:5; » y=2*x.^3-12*x.^2+8*x-6; » H=plot(x,y,'b',x,y,'r*'); » set(H,'LineWidth',3,'MarkerSize',12) » xlabel('x'); ylabel('y'); » title('f(x)=2x^3-12x^2+8x-6'); » print -djpeg075 poly.jpg Adjust line thickness, font size, marker size, etc. element-by-element operations x.^n

  46. » x=0:0.1:10; » y=sin(2.*pi*x)+cos(pi*x); » H1=plot(x,y,'m'); set(H1,'LineWidth',3); hold on; » H2=plot(x,y,'bO'); set(H2,'LineWidth',3,'MarkerSize',10); hold off; » xlabel('x'); ylabel('y'); » title('y = sin(2\pix)+cos(\pix)'); » print -djpeg075 function.jpg

  47. » x=0:0.1:3; y1=exp(-x); y2=sqrt(x); » H=plot(x,y1,'b-',x,y2,'r--'); » set(H,'LineWidth',3) » xlabel('x'); ylabel('y'); title('MATLAB Plots'); » H1=text(1.8,0.2,'exp(-x)'); set(H1,'FontSize',18); » H2=text(1.8,1.3,'sqrt(x)'); set(H2,'FontSize',18);

  48. Plotting Commands plot (x, y) plot(x1, y1, x2, y2) plot (x, y, ‘colorsymbolline style’) » x = linspace(0, 2*pi); » y = sin (2.*x); » z = cos (0.5*x); » plot (x, y) » plot (x, y, x, z) » figure (2) » plot (x, y, 'r o -'); grid on » hold on » plot (x, z, 'b * :') figure or figure (#) : open a figure (red, circle, solid line) (blue, star, dotted line)

  49. Graphics Commands xlabel ( label )ylabel ( label )title ( title of the plot )text (x_location, y_location, text )axis ([ x_min x_max y_min y_max ]) • Axis, Labels, and Title » xlabel (Time) » ylabel (Temperature) » title (Temperature Record : 1900 - 2000) » text (17, 120, Record High ) » text (85, -40, Record Low ) » axis ([0 100 -50 140])» hold off   - text string

  50. Programming with MATLAB

More Related