Chapter3rev1 Ok

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 35

Parte 1 Capítulo 3

Programando con MATLAB

METODOS NUMERICOS_Mecatronica_NRC_16305_Clave_IE126
1
Chapter Objectives
• Aprender a crear archivos M bien documentados en la
ventana de edición e invocarlos desde la ventana de
comandos.
• Comprender en qué se diferencian los archivos de función y
de script.
• Comprender cómo incorporar comentarios de ayuda en
funciones.
• Saber cómo configurar archivos M para que soliciten
información a los usuarios de forma interactiva y muestren
resultados en la ventana de comandos.
• Comprender el papel de las subfunciones y cómo se accede
a ellas.
• Saber cómo crear y recuperar archivos de datos.
2
Objectives (cont)
• Aprender a escribir archivos M claros y bien documentados
mediante el empleo de construcciones de programación
estructuradas para implementar la lógica y la repetición.
• Reconociendo la diferencia entre if ... elseif y switch
construcciones.
• Reconociendo la diferencia entre las estructuras for ... end y
while.
• Comprender qué se entiende por vectorización y por qué es
beneficiosa.
• Saber cómo animar gráficos de MATLAB.
• Comprender cómo se pueden emplear funciones anónimas
para pasar funciones de función a archivos M de funciones.

3
M-files

4
Function Files

5
6
7
function c = adder(a,b) >> d = adder(x,y)
x = 88 the result will be
a x =88
c=a+b a=1
c=5
>> x = 1; y = 4; c = 8 d =5
c=
8
>> c, x, a
Undefined function or variable
'a'.
Error in ScopeScript (line 6)
c, x, a

8
3.1.4 Global Variables

9
10
11
3.2 INPUT-OUTPUT

12
The fprintf Function.

13
3.2.1 Creating and Accessing
Files

14
3.3 STRUCTURED PROGRAMMING
3.3.1 Decisions

15
Relational Operators
• From Table 3.2: Summary of relational
operators in MATLAB:
Example Operator Relationship
x == 0 == Equal
unit ~= ‘m’ ~= Not equal
a<0 < Less than
s>t > Greater than
3.9 <= a/3 <= Less than or equal to
r >= 0 >= Greater than or equal to

16
Logical Operators
 ~x (Not): true if x is false (or zero); false
otherwise
 x & y (And): true if both x and y are true (or
non-zero)
 x | y (Or): true if either x or y are true (or non-
zero)
Examplo a = −1, b = 2, x = 1, y = 'b',

17
The if...else Structure

18
The switch Structure

19
Variable Argument List %t=12;m=68.1;cd=0.25
%v = freefall(t, m, cd)

20
for Loops
• One common way to use a for…end structure
is:

for index = start:step:finish


statements
end

where the index variable takes on successive


values in the vector created using the :
operator.
21
Vectorization

22
The while Structure The while...break Structure.

23
Animation
• Dos formas de animar gráficos en MATLAB:

• Uso de bucle con funciones de trazado simples

• Este enfoque simplemente repite el gráfico una y otra vez.

• Importante utilizar el comando de eje para que las escalas de


los gráficos sean fijas.

• Usando una función especial: getframe y movie

• Esto le permite capturar una secuencia de gráficos (obtener


fotograma) y luego reproducirlos (película).
24
Example
• Las coordenadas (x, y) de un proyectil se pueden
generar en función del tiempo, t, con las siguientes
ecuaciones paramétricas
• x = v0 cos(0 t)
• y = v0 sin(0 t)  0.5 gt2

Donde v0 = initial velocity (m/s)


0 = initial angle (radians)
g = gravitational constant (= 9.81 m/s2)
25
26
Script
• The following code illustrates both approaches:
clc,clf,clear
g=9.81; theta0=45*pi/180; v0=5;
t(1)=0;x=0;y=0;
plot(x,y,'o','MarkerFaceColor','b','MarkerSize',8)
axis([0 3 0 0.8])
M(1)=getframe;
dt=1/128;
for j = 2:1000
t(j)=t(j-1)+dt;
x=v0*cos(theta0)*t(j);
y=v0*sin(theta0)*t(j)-0.5*g*t(j)^2;
plot(x,y,'o','MarkerFaceColor','b','MarkerSize',8)
axis([0 3 0 0.8])
M(j)=getframe;
if y<=0, break, end
end
pause
27
movie(M,1)
Result

28
3.4 NESTING AND INDENTATION

29
3.5 PASSING FUNCTIONS TO M-FILES
3.5.1 Anonymous Functions

30
31
Primer Caso

Segundo Caso

32
Segundo Caso otro ejemplo

33
3.5.3 Passing Parameters

>> m = 68.1;cd = 0.25;


>> vel = @(t) sqrt(9.81*m/cd)*tanh(sqrt(9.81*cd/m)*t);
>> funcavg_2(vel,0,12,60)
ans =
36.0127
%%%%%Otra manera
function favg = funcavg_3(f,a,b,n,varargin)
x = linspace(a,b,n);
y = f(x,varargin{:});
favg = mean(y);
>>funcavg_3(vel,0,12,60,68.1,0.25)

>>funcavg_3(vel,0,12,60,100,0.28)
34
>>vel = @(t,m,cd) sqrt(9.81*m/cd)*tanh(sqrt(9.81*cd/m)*t);
>>funcavg_3(vel,0,12,60,68.1,0.25)

>>funcavg_3(@(t) vel(t,68.1,0.25),0,12,60)

35

También podría gustarte