Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
1 INTRODUCCION AL MATLAB…………………………………………………………………………… 04
1.1 OPERACIONES BASICAS EN MATLAB…..………………………………………..……….….… 04
1.1.1 Ingreso de datos a una matriz..………….….…………………………………..…… 04
1.1.2 Operaciones con matrices………….…………………………………………..….…... 05
1.1.2.1 Operadores aritméticos…………………………………………………………..….… 05
1.1.2.2 Expresiones…………………………….…………………………………………………… 05
1.1.2.3 Manejo de números complejos……………..……………………………..…..… 06
1.1.2.4 Adición y substracción……………….…………………………………………….….. 06
1.1.2.5 Multiplicación………………………………………..……………………………………. 06
1.1.2.6 División………………………………………………….………………………………….… 06
1.1.2.7 Potencia……………………………………….……………………………………………… 06
1.1.2.8 Operaciones entre elementos el operador “.”………………….………..… 06
1.1.2.9 Operadores de comparación……………………………………………..………… 06
1.1.2.10 Operadores Lógicos……………………………………………………….………..… 07
1.1.2.11 Operaciones diversas con matrices………………………….……….……… 07
1.2 FUNCIONES………………………………………………………………………………....……..……… 07
1.3 CEROS Y MÍNIMOS DE UNA FUNCIÓN…......................................................... 08
1.4 GRAFICOS…………………………………………………………………………………………………... 08
1.5 INSTRUCCIONES DE CONTROL EN MATLAB………………………………………...………. 09
1.5.1 La Sentencia if…………………………………………………………………….…….…… 09
1.5.2 La sentencia switch………………………………….………………………..……….…. 10
1.5.3 Sentencia FOR…………………………………..………………………………............. 11
1.5.4 Sentencia WHILE…………………………………………………..………………………. 13
1.6 Caso de estudio. INTERPOLACION POLINOMICA…………………………………….………. 14
1.7. Caso de Estudio. METODO DE LA BISECCION……………………………………………….. 15
2 POLINOMIOS…………………………………………………………..……………………………………… 17
2.1 Representación de polinomios…….…………………………………………………………… 17
2.2 Evaluación de polinomios………………………………………………………………………… 17
2.3 Producto de Polinomios……………………………………………..…………………………… 18
2.4 Fracciones parciales y derivadas……………………………………………………….……… 18
3 MATLAB SIMBOLICO………………………………………………………………………..….…………… 19
3.1 Definición de Objetos Simbólicos………………………………………………………………… 19
3.2 Derivadas y primitivas………………………………………………………………………………… 19
3.3 Operaciones con expresiones Simbólicas……………………………………………………. 20
3.4 Función subs………………………………………………………………………………………………. 21
Practica…………………………………………………….………………………………………………… 23
4 ALGEBRA LINEAL Y MATRICES…………………………………………………………………………… 24
4.1 Matrices……………………………………..…………………………………………………………… 24
4.2 Sistema de Ecuaciones Lineales……………………………………….…………………………. 24
4.3 Método de Eliminación gaussiana……………………………………………………………… 24
4.4 Descomposición triangular…………………………………………………………………………… 26
4.5 Método Gauss-Jordan………………………………………………………………………………… 27
4.6 Método Iterativo de jacobi…………………………….…………………………………………… 29
5 SOLUCION DE ECUACIONES DIFERENCIALES…..…………………….………………… 30
5.1 Definición……………………………………………………………………….…………………………… 30
5.2 ODE de Primer Orden……..………………………………………………………………………… 30
5.3 Valor Inicial El problema del valor inicial para las ODE de primer orden… 30
5.4 Método de paso simple………………………………….…………………………………………… 31
5.5 Método de la Serie de Taylor………..……………………….………………………….…… 31
5.6 Método de Euler..………………………………………………………….…………………………… 33
5.7 Euler aplicado a un péndulo simple…….………….…………………………………………… 34
2
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
3
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
1: INTRODUCCIÓN AL MATLAB
Introducción.- El matlab (MATrix LABoratory) es un lenguaje de alto nivel, escrito en gran parte en
lenguaje “C” , orientado para el cálculo técnico, su potencia radica en una gran cantidad de rutinas
de cálculo aplicadas a las diferentes disciplinas de la ingeniería. En su ambiente integrado pude
realizar cálculos, programación y visualización, para esto en el matlab se utilizan tres ventanas:
Ventana de comandos. (Principal). Nos permite ingresar datos o ejecutar comandos o
funciones.
Ventana de gráficos. Displaya los resultados (Forma gráfica) que se indiquen con comandos o
programas.
Ventana del editor. Nos permite escribir nuevos programas (secuencia de comandos) y
funciones.
Su elemento básico es una matriz numérica. Sus usos más comunes son:
Cálculos matemáticos (matriciales).
Modelado y simulación.
Procesamiento de datos.
Desarrollo de interfaces gráficas.
1.1 Operaciones básicas en matlab.-
1.1.1 Ingreso de datos a una matriz.- Las matrices y los vectores son variables que tienen
nombres. Recomendamos que se utilice letras mayúsculas para matrices y letras
minúsculas para vectores y escalares el ingreso lo realizamos así:
>> mat = [ 1 2 3; 4 5 6; 7 8 9 ] E
El matlab responde
mat = 1 2 3
4 5 6 .
7 8 9
La matriz A ya puede ser trabajada, obtendremos la transpuesta haciendo lo siguiente:
>>A’ y la respuesta del sistema será
ans = 1 4 7
. 258
. 369
Esto es porque el resultado no ha sido asignado a ninguna variable, veamos en matlab
>> A= [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
>> B=A'
B =1 4 7
2 5 8
3 6 9
4
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
También podemos operar con estas matrices, hallando primero A*B y después la inversa de A que
sería C y comprobar que C es la inversa de A. Se puede acceder a cualquier elemento de A o de B
con solo indicarlo con los subíndices. El siguiente cuadro nos visualizara todo lo anteriormente
dicho.
>> A = [1 4 -3; 2 1 5; -2 5 3]
A =1 4 -3
2 1 5
-2 5 3
>> C=inv(A)
C=
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
>> C*A
ans =
1.0000 0.0000 -0.0000
0 1.0000 0.0000
0 -0.0000 1.0000
Con la última operación comprobamos la inversa. Para definir un vector fila es más simple
>> f1 = [0 1 4] ; % El ; evita la respuesta
>> f2 = [9 16 25] ;
>> f3 = [ 36 49 64] ;
>> mat2 = [f1 ; f2 ; f3]
mat2 =
0 1 4
9 16 25
36 49 64
5
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>> x = 0.5;
>>expx = 1 + x +(x^2)/2+ (x^3)/6+ ...
(x^4)/24 + (x^5)/120
1.1.2.3 Manejo de números complejos.- En este caso se considera √-1 a i o j
>> c1 = 2 – 4*j
>> c2 = 3 + 3*i
>> t = abs(c1 +c2);
>> s = [1 2 3 ; 4 5 6] + i*[ 3 2 1 ; 6 5 4]
1.1.2.4 Adición y substracción
>> M1 = [ 1 1 1 ; 1 1 1; 1 1 1]
>> M2 = [ 1 2 3 ; 4 5 6 ; 7 8 9]
>> M3 = M1 + M2
>>M4 = M1 – M2
Por un escalar
>> M5 = M2 + 1
El matlab responde
M5 = 2 3 4
. 5 6 7
. 8 9 10
1.1.2.5 Multiplicación
>>multi = M1 * M2 % Si columnas de M1 igual a filas de M2
1.1.2.6 División
X = A\B % Solución de A*X = B
X = B\A % Solución de X*A = B
1.1.2.7 Potencia
>> p2 = mat ^2
>> p3 = mat^3
1.1.2.8 Operaciones entre elementos. El operador “.”
Si tenemos que
>> x1 = [ 1 2 3 ]
>> x2 = [ 4 5 6 ]
>> r1 = x1 . * x2
>> r1 = 4 10 18 % Efectúo el termino correspondiente de x1 por el de x2
>>r2 = x1. /x2
>>r2 = 0.25 0.40 0.50
>>r3 = x1.^x2
>>r3 = 1 32 729
1.1.2.9 Operadores de comparación
< menor <= menor o igual
> mayor >= mayor o igual
6
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
= = igual ~= diferente
considerando 1 -> Verdadero y 0 -> Falso
1.1.2.10 Operadores lógicos
Tenemos que and & or |
>> 1 == 1 & 4 == -3 (ans = 0)
>> 1 == 1 | 4 ==-3 (ans = 1)
1.1.2.11 Operaciones diversas con matrices.- La forma general para asignar rangos a una
variable será
variable = inferior : variación : superior
por ejemplo:
>> x = 4: 2: 22
x = 4 6 8 10 12 14 16 18 20 22
>>beta = 0 : pi/4 : pi
>> beta = 0.000 0.7854 1.5708 2.3566 3.1416
>> índice = 8: -1: 1
índice = 8 7 6 5 4 3 2 1
Se puede generar un vector linealmente espaciado
>> w = linspace(100,1000, 10)
w = 100 200 300 400 500 600 700 800 900 1000
Se puede generar también matrices de la siguiente forma
>> uno = ones(5)
>> cero = zeros(4)
>> RR = rand(3)
>> I=eye(4)
1.2 Funciones.- Para crear una función seguir los siguientes pasos
En menú archivo opción new
Guardar como f1.m
Escribir en el editor
function y = f1(x)
y = x.^2 -x -2
En la ventana de comandos
>> x= -3:0.1: 3
>> plot( x, f1(x))
o>> x= -3:0.1: 3
>> y1 = f1(x)
>>plot( x, y1)
1.3 Ceros y Mínimos de una función.- Algunos comandos adicionales que nos permiten hallar
ceros y mínimos de una función son.
fmin Halla mínimo para funciones de una variable por ejemplo podemos considerar
>>xmin = fmin(‘f1’,-1,1)
7
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
8
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
EJECUCION
>> sep01
Las matrices A y B son iguales
Las matrices A y C son diferentes
>>Sentencia if con bifurcación múltiple
Si queremos ejecutar un bloque entre varios bloques, podemos utilizar la forma siguiente de la
sentencia if.
If condicion1
Bloque1
elseif condicion2
Bloque2
elseif condicion3
9
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Bloque3
else
Bloque por defecto %Se ejecuta cuando no se cumple ninguna condición
end
PROGRAMA
nota = input ('Ingrese una nota --> ');
if nota >= 16
fprintf('Aprobado con excelencia\n')
elseif nota >=10
fprintf('Aprobado\n')
elseif nota >= 6
fprintf('Desaprobado\n')
else
fprintf('Reprobado\n')
end
>> sep02
Ingrese una nota --> 14
Aprobado
>> sep02
Ingrese una nota --> 8
Desaprobado
>> sep02
Ingrese una nota --> 5
Reprobado
>> sep02
Ingrese una nota --> 19
Aprobado con excelencia
1.5.2.Sentencia SWITCH Nos permite derivar el control hacia uno de varios puntos
Sintaxis de la sentencia switch
Switch expresion
case case_expresion1 ,
bloque 1
case case_expresion2 ,
bloque2
case case_expresion3 ,
bloque3
…………………………..
Otherwise,
Bloque
End
10
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Veamos un ejemplo
PROGRAMA
digito = input('Ingrese un digito');
switch digito
case 1,
fprintf('Uno\n');
case 2,
fprintf('Dos\n');
case 3,
fprintf('Tres\n');
case 4,
fprintf('Cuatro\n');
case 5,
fprintf('Cinco\n');
case 6,
fprintf('Seis\n');
case 7,
fprintf('Siete\n');
case 8,
fprintf('Ocho\n');
case 9,
fprintf('Nueve\n');
otherwise,
fprintf('No es un digito');
end
>> sep03
Ingrese un digito6
Seis
>> sep03
Ingrese un digito25
No es un digito>>
1.5.3.Sentencia FOR
Repite un conjunto de sentencias un número predeterminado de veces
Su sintaxis es: for i= 1:n
Sentencias
end
Ejemplo:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Entrega una vector con la señal limpia
% Lee archivo cas.wav
11
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
%Archivo tiempo01
%yc1 vector original componentes
%y1cas vector sin silencios componentes
%y1casn vector sin silencios y normalizado componentes
clc;
echo off;
%************PROCEDIMIENTO DE LECTURA*******************
[yc1, Fs, Bits] = wavread ('a:cas1.wav');
lon = size(yc1);
fprintf('\nLongitud del vector: %d\n',lon(1));pause;
%**********CALCULA MAYOR MENOR Y MAYOR ABSOLUTO********
[mayor,jj]=max(yc1);
[menor,jj]=min(yc1);
if abs(mayor) > abs(menor)
mayabs = abs(mayor);
else
mayabs = abs (menor);
end;
%**************HALLA ARCHIVOS SIN SILENCIOS******************
des = (mayabs/100)*20;
a= size(yc1);
for i=1:lon(1);
if abs(yc1(i)) > des
lima = i;
break
end;
end;
limb=lima+3000
k= 0:(limb-lima);
y1cas = yc1(lima :limb);
b = size(y1cas);
fprintf('\nLongitud del vector: %d\n',b(1));
y1casn = y1cas;
%***********NORMALIZA DIGITOS DOS****************
for i=1:(limb - lima)+1;
y1casn(i)=y1casn(i)/mayabs;
end;
%***********GRAFICA DE LOS VECTORES ****************
subplot(3,1,1);
t=1:lon(1);
plot(t,yc1);
12
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
grid;
ylabel('yc1');
title('Digito dos de castañeda');
axis([0 a(1) menor mayor]);
subplot(3,1,2);t=k;
plot(t,y1cas);grid;
axis([0 (limb-lima) menor mayor]);
ylabel('y1cas');
subplot(3,1,3);plot(t,y1casn);grid;
axis([0 (limb-lima) -1 1]);
ylabel('y1casn');
xlabel('Numero de muestras');
fprintf('\n\n Presione una tecla para terminar...');
pause;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1.5.4.Sentencia WHILE
WHILE Repite un grupo de sentencias un número indefinido de veces.
La forma general de una sentencia while es:
while condición
Sentencias
end
Las sentencias son ejecutadas mientras la condición es verdadera. La condición es usualmente el
resultado de una comparación que utiliza los siguientes operadores. ==, <, >, <=, >=, or ~=.
La sentencia BREAK puede ser usada para terminar el lazo prematuramente.
Ejemplo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while(abs(b-a)/2 > error)
m = (a+b)/2;
dif=b-a;
fxm=feval(fx,m);
fprintf('%2d%8.5f%8.5f%8.5f%8.5f \n',k,a,b,m,dif);
k=k+1;
iffxa*fxm<=0
b=m;
fxb=fxm;
else
a=m;
fxa=fxm;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1.6. Caso de Estudio.- (Interpolación Polinómica) Forma de Lagrange; considerando un par de
puntos (x0,f(x0)) y (x1,f(x1)) entonces para un x entre x0 yx1 tendremos un polinomio de
13
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
x x1 x x0
interpolación P( x) f ( x0 ) f ( x1 ) Entonces el polinomio de grado <= n que
x0 x1 x1 x0
interpola a f(x) en x0, x1, x2, x3,………. xn. es :
n
x xi
P( x) f ( x k ) Lk ( x) Cuando tenemos (n+1) puntos y entonces Lk ( x)
n
k 0
i 0 ,i k x k xi
Ejemplo 2:
function p=lagrange(x,y,x0)
%*******datos******
%x, es el vector x
%y, es el vectorf(x)
%n, es el orden de la matriz
%*******resultados****
%L, es el polinomio de la lagrange
%p, es el valor interpolado
n= length(x);
L= zeros(n,1);
fprintf(' k x y L\n');
for k= 1:n
prod1 = 1;
prod2=1;
for i=1:n
if(i~=k)
prod1=prod1*(x0-x(i));
prod2=prod2*(x(k)-x(i));
end
end
L(k)=prod1/prod2;
end
p= 0;
for k=1:n
p = p+L(k)*y(k);
fprintf('%5d%10.6f%10.6f%10.6f \n',k,x(k),y(k),L(k));
end
Ejemplo de ejecución:
>> x= 1:10
>> y =[ 3 5 7 6 5 6 7 5 8 14 ]
>> t= lagrange(x,y, 7.5)
k x y L
1 1.000000 3.000000 0.000839
2 2.000000 5.000000 -0.008926
3 3.000000 7.000000 0.043640
4 4.000000 6.000000 -0.130920
5 5.000000 5.000000 0.274933
6 6.000000 6.000000 -0.458221
7 7.000000 7.000000 0.916443
8 8.000000 5.000000 0.392761
9 9.000000 8.000000 -0.032730
10 10.00000 14.00000 0.002182
t = 6.2508
1.7. Caso de Estudio.- (Calculo de una raíz usando el método de la bisección)
function raiz = biseccion(fx,a,b )
14
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
% fx es la función
% a y b son los valores extremos del intervalo
%raíz es el valor de la solución
error=0.0005;
k=0;
fxa = feval(fx,a);
fxb = feval(fx,b);
iffxa*fxb<= 0
while(abs(b-a)/2 > error)
m = (a+b)/2;
dif=b-a;
fxm=feval(fx,m);
fprintf('%2d%8.5f%8.5f%8.5f%8.5f \n',k,a,b,m,dif);
k=k+1;
iffxa*fxm<=0
b=m;
fxb=fxm;
else
a=m;
fxa=fxm;
end
end
raiz = m;
else
fprintf('CAMBIAR LIMITES');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%% FUNCION QUE VAMOS A UTILIZAR%%%%%%%%%%%%%%%%
function y= ff(x)
y = x^2-x-2;
>>biseccion('ff',0,3)
0 0.00000 3.00000 1.50000 3.00000
1 1.50000 3.00000 2.25000 1.50000
2 1.50000 2.25000 1.87500 0.75000
3 1.87500 2.25000 2.06250 0.37500
4 1.87500 2.06250 1.96875 0.18750
5 1.96875 2.06250 2.01563 0.09375
6 1.96875 2.01563 1.99219 0.04688
7 1.99219 2.01563 2.00391 0.02344
8 1.99219 2.00391 1.99805 0.01172
15
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>>biseccion('ff',-2,0)
0-2.00000 0.00000-1.00000 2.00000
1-2.00000-1.00000-1.50000 1.00000
2-1.50000-1.00000-1.25000 0.50000
3-1.25000-1.00000-1.12500 0.25000
4-1.12500-1.00000-1.06250 0.12500
5-1.06250-1.00000-1.03125 0.06250
6-1.03125-1.00000-1.01563 0.03125
7-1.01563-1.00000-1.00781 0.01563
8-1.00781-1.00000-1.00391 0.00781
9-1.00391-1.00000-1.00195 0.00391
10-1.00195-1.00000-1.00098 0.00195
ans = -1.0010
16
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
2. POLINOMIOS
2.1. REPRESENTACION DE POLINOMIOS.- Los polinomios son representados en matlab como
vectores fila conteniendo los coeficientes 1ordenados por potencias descendentes, veamos un
ejemplo: x 10 x 35 x 50 x 24
4 3 2
>>roots(p1)
ans =
4.0000
3.0000
2.0000
1.0000
Hemos ingresado el polinomio y calculado sus raíces con el comando roots, notar que el polinomio se
>>polyval(p1,0)
ans = 24
>>polyval(p1,1)
ans = 0
>>polyval(p1,5)
ans = 24
>>polyval(p1,6)
ans = 120
X también puede ser un vector, por ejemplo que varié de 0 a 6 con incrementos de 0.5.
>> x=0:0.5:6
x = Columns 1 through 7
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
Columns 8 through 13
3.5000 4.0000 4.5000 5.0000 5.5000 6.0000
>>polyval(p1,x)
ans = Columns 1 through 7
24.0000 6.5625 0 -0.9375 0 0.5625 0
Columns 8 through 13
-0.9375 0 6.5625 24.0000 59.0625 120.0000
>>
17
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>> p2= [1 -3 4]
p2 =
1 -3 4
>>conv(p1,p2)
ans = 1 -13 69 -195 314 -272 96
La división se realiza con deconv(pol1,pol2), o sea la división polinomio1 entre polinomio 2, esto lo
comprobaremos
>> p3=conv(p1,p2)
p3 =
1 -13 69 -195 314 -272 96
>>deconv(p3,p1)
ans =
1 -3 4
>>polyder(p1)
ans =
4 -30 70 -50
18
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
3. MATLAB- SIMBOLICO.- El matlab también tiene un módulo Symbolic Math Toolbox, que permite
manejar perfectamente el cálculo matemático simbólico, manipular con facilidad y rapidez las
formulas y expresiones algebraicas y realizar la mayoría de operaciones con las mismas. Es
posible expandir, factorizar y simplificar polinomios y expresiones racionales y trigonométricas;
encontrar soluciones algebraicas de ecuaciones polinómicas y sistema de ecuaciones; evaluar
derivadas e integrales simbólicas y encontrar soluciones de ecuaciones diferénciales; manipular
series de potencias, límites y otras operaciones.
3.1. DEFINICIÓN DE OBJETOS SIMBOLICOS
Para Realizar cálculos simbólicos, MATLAB requiere que todas las variables(o expresiones
algebraicas) sean declaradas como simbólicas previamente con el comando syms( o con sym).
Por ejemplo si queremos simplificar la expresión 6ab+3.a2 +2ab, realizamos lo siguiente:
>>syms a b
>>simplify(6*a*b+3*a^2+2*a*b)
ans =
8*a*b+3*a^2
>>syms x
19
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>> f = 2*x^2-3*x-5
f=
2*x^2-3*x-5
>> g = x^2-x+7;
>>pretty(f+g)
3x 2 4 x 2
>>pretty(f-g)
x 2 2 x 12
>>pretty(f*g)
(2 x 2 3x 5)( x 2 x 7)
También
>>h= f *g
h=
(2*x^2-3*x-5)*( x^2-x+7)
>>pretty(expand(f*g))
2 x 4 5x 3 12x 2 16x 35
>>pretty(f/g)
2 x 2 3x 5
x2 x 7
>>pretty(f^3)
(2 x 2 3x 5) 3
>>pretty(expand(f^3))
Realice lo siguiente
>>p=3*x*exp(4*x)
>>diff (p, x)
>>diff(sin(x),x)
>>diff (diff (p, x),x)
>>diff(p,x,2)
A continuación resolvemos la ecuación x4+1=0 y presentamos el resultado en escritura matemática
habitual.
>>S=solve(‘x^4+1=0)
20
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
S=
[1/2*2^(1/2)+1/2*i*2^(1/2)]
[-1/2*2^(1/2)-1/2*i*2^(1/2)]
[1/2*2^(1/2)-1/2*i*2^(1/2)]
[-1/2*2^(1/2)+1/2*i*2^(1/2)]
>>numeric(S)
ans=
0.7071+0.7071i
-0.7071-0.7071i
0.7071-0.7071i
-0.7071+0.7071i
En el ejemplo siguiente definimos una matriz simbólica y calculamos su determinante
>>syms a x
>> A = [cos(a* x),sin(a* x);-sin((a* x),cos(a* x)]
A=
[cos(a* x) sin(a* x)]
[-sin((a* x) cos(a* x)]
>>det(A)
ans =
cos(a*x)^2+sin(a*x) ^2
>>pretty(inv(A))
......................................
21
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
8
>>syms b
>> B = subs(f,b+2)
B=
(b+2)^3
En el ejemplo siguiente consideramos la función de dos variables f(a, b) = a+ b, y sustituimos
primeramente a por 4, y posteriormente a por 3 y b por 5.
>>syms a b
>>subs(a+b,a,4)
ans=
4+b
>>subs(a+b,{a,b},{3,5})
ans =
8
22
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
PRACTICA
1. REALIZA LAS DERIVADAS DE LAS SIGUIENTES FUNCIONES
1
a. log(sen(2x)) , log( 1 1 x 2
1 x2
2. Aplica la orden pretty al resultado para verla de una forma más clara.
3. CALCULA LA SEGUNDA DERIVADA, RESPECTO DE SU VARIABLE DE LAS FUNCIONES
ANTERIORES
1
a.
1 x2
2 f
5. PARA LA FUNCION f ( x, y ) sen( x)e , calcula
y
/ x 0, y 1
xy
1
6. Calcule x 2 1 dx
7. Calcule la integral aln( 1 bx)dx, siendo a y b parametros
1
8. Calcule la integral definida
0
a ln( 1 bx)dx
23
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
1 0 0 2 1 3 1 0 0
Diagonal 0 2 0 Triangular sup erior 0 1 4 Triangular inf erior 1 2 0
0 0 3 0 0 2 2 1 2
La solución será:
24
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
bn
xn
ann
bn1 an1,n xn
xn1
an1,n1
bn2 an2,n1 xn1 an2,n xn
xn 2
an 2 ,n 2
n
bk a
j k 1
kj xj
En general : xk , k n 1, n 2,.....,1
akk
function x=backsubs(A,b)
% backsubs
% Datos
% A = es la matriz
% b = vector de la mano derecha
% n = el orden de la matriz
% Resultados
% x = vector solucion
n = length(b);
x = zeros(n,1);
x(n) = b(n)/ A(n,n);
for k= n-1:-1:1
x(k) = b(k);
for j = k+1:n
x(k)=x(k)-A(k,j)*x(j);
end
x(k) = x(k)/A(k,k);
end
25
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
function A=intercambio(A,i)
[n n1]= size(A);
k=i+1;
while(k<=n)&(A(k,i)==0)
k=k+1;
end
if k<=n
temp=A(i, : );
A(i, : )= A(k, : );
A(k, : )= temp;
Finalmente
end la función que realiza el método de eliminación de Gauss
lo utilizaremos para resolver el siguiente sistema de ecuaciones:
2 x1 x 2 x3 2
4 x1 2 x 2 x3 3
x1 x 2 x3 2
La matriz ampliada será:
2 1 1 2
4 2 1 3
1 1 1 2
26
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
function x=eliminacion(AA,b)
%datos
% AA = es la matriz
% A = es la matriz aumentada
% b = es el vector derecho
% Resultados
% x = vector solucion
[n n1 ] = size(AA);
x = zeros(n,1);
A = [AA b'];
n1 = n+1;
for i=1:n
if A(i,i) ==0
A= intercambio(A,i);
end
for k= i+1:n
pivote = A(k,i)/A(i,i);
for j= i:n1
A(k,j)= A(k,j)-pivote*A(i,j);
end
end
4.5. MÉTODO DE GAUSS-JORDAN Para invertir una matriz, el método de Gauss-Jordan es el
end
más eficiente; esto quiere decir, que para el sistema Ax = b; usando la matriz aumentada el método
de Gauss-Jordan reduce el número de operaciones, obtiene prácticamente la respuesta
x=directamente.
backsubs(A, A(:,n1));
x1 b1
x2 b2
x3 b3
27
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
function x=GaussJordan(AA,b)
%Datos
%AA = es la matriz
% A = es la matriz aumentada
% b = es el vector excitación
% n = orden de la matriz
% Resultados
% x = vector solucion
[ n n]= size(AA);
x = zeros(n,1);
A = [AA b'];
n1=n+1
for i=1:n
if A(i,i)==0
A=intercambio(A,i);
end
piv=A(i,i)
for j= i:n1
A(i,j)= A(i,j)/piv;
end
for k=1:n
if (k>i)||(k<i)
pivote=A(k,i);
for j=i:n1
A(k,j) = A(k,j)-pivote*A(i,j);
end
end
end
end
for i=1:n
x(i)=A(i,n1);
end
Ejecución:
>> AA=[2 1 1;4 2 1;1 1 1]
>> b=[2 3 2]
>>GaussJordan(AA,b)
n1 = 4
ans = 0
1
1
28
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
4.6. METODO ITERATIVO DE JACOBI Los métodos iterativos se basan en lo siguiente: sea f(x) =
x – g(x)=0 .La solución al vector x viene dada por la sucesión x0,x1,x2…..y evaluada por punto
fijo, como
x ( m1) g ( x ( m) ), m 0,1,2......
function x=jacobi(A,b)
%DatosA = es la matriz, b = es el vector del lado derecho, n = el orden de la matriz
%RESULTADOSx = vector solución
[n n]=size(A);x = zeros(n,1);y = zeros(n,1);
error = 0.0005;NTOL = 50; flag = 1;k = 0;
fprintf('%5d',k);
for m =1:n
fprintf('%10.5f',x(m));
end
%prueba de diagonalizacion
i=1;
while ( i<=n) & (flag == 1)
suma = 0;
for j=1:n
if (i>j)||(i<j)
suma = suma + abs(A(i,j));
end
end
if abs(A(i,i))<= suma
fprintf('\n error de diagonalizacion');
flag = 0;
end
i=i+1;
if flag ==0
break
end
end
while 1
flag = 1;
for i=1:n
suma = 0;
for j=1:n
if (i>j)||(i<j)
suma = suma+A(i,j)*x(j)/A(i,i);
end
end
y(i)=b(i)/A(i,i)-suma;
end
k=k+1;
fprintf('\n %5d',k);
for i= 1:n
if abs(y(i)-x(i))>error
flag=0;
end
x(i) = y(i);
fprintf('%10.5f',x(i));
end
if(NTOL==k)|(flag==1)
break
end
end
29
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
y y sen x
y e x
d2y dy
2 4 0
dx 2 dx
Son ecuaciones diferenciales por que envuelven derivadas de la variable independiente x.
Una ecuación diferencial que envuelve derivadas con respecto a una simple variable independiente es
llamada ECUACION DIFERENCIAL ORDINARIA o ODE(En ingles Ordinal Diferential Equation);
1
y en cambio, cuando envuelve derivadas con respecto a dos o más variables es llamada
y
2V 2V
2 2 V
ecuación diferencial parcial
x 2
y
5.2. ODE de Primer Orden Una ecuación de primer orden tiene la forma:
dy
f ( x, y ) o M ( x, y )dx N ( x, y )dy 0
dx
M N
Por ejemplo: (2xy+3x2)dx + x2dy = 0 Una ODE es exacta cuando se cumple que:
y x
En el método de separación de variables se tiene la forma F(x) dx+G(y)dy=0. Por ejemplo:
dy 3x xy 2 x(3 y 2 )
dx y x 2 y y (1 x 2 )
3 y2
ydy
xdx ln C
2
De donde y la solución general
3 y 2
1 x2 1 x
5.3. Valor Inicial El problema del valor inicial para las ODE de primer orden: Una ecuación de
dy
primer orden tiene la forma: f ( x, y ) plantea una curva de solución y=y(x) en la región R,
dx
que pasa por el punto inicial (x0,y0) en R, tal que y(x0 ) = y0. cuando la ODE es separable, lineal o
exacta, entonces el problema del valor inicial tiene solución única. Que puede ser determinada
por integración indirecta.
3 y2 3 y2
ln C ln
2
C
2
1 x 1 x
30
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
5.4. Método de paso simple Sea la gráfica, donde se destaca que el valor Yk+1 es estimado como
y k 1 y k h
xk xk+1
De acuerdo a esta ecuación, el valor de la pendiente es usado para extrapolar a partir del valor yk
en una distancia h (llamada tamaño del paso). La aplicación de la formula es punto a punto o a un
paso; es decir
Nuevo valor = Valor antiguo + paso *pendiente
5.5. Método de la serie de Taylor.- El método de la serie de Taylor tiene una aplicabilidad general
y estándar; permitiendo ser comparado con otros métodos:
Sea una ecuación diferencial de la forma:
y f ( x, y) con y ( x0 ) y 0
y (1) (k )h y ( 2 ) (k )h 2 y ( 3) ( k ) h 3 y ( n ) (k )h n
y k 1 yk .....
1 2! 3! n!
donde y ( m ) P ( m1) f ( x, y ( x)) y P f
x y
x0 a, x n b, h (b a)
n
Utilizando el matlab
function d=derivTaylor(x,y)
% DerivTaylor
% Calculo de las cuatro primeras derivadas
% d es el vector de derivadas
d(1)=(x-y)/2;
d(2)=(2-x+y)/4;
d(3)=(-2+x-y)/8;
d(4)=(2-x+y)/16;
Programa de cálculo
31
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
functionODETaylor (a,b,y0,n)
% ODE por Taylor 4
% Usando la serie de Taylor
% Datos
%a =límite inferior
%b =límite superior
%h =longitud del segmento
% y0 =f(a);
%x =es el vector x
%n =número de segmentos
% Resultados
%y =es el vector f(x)
h=(b-a)/n;
n=n+1;
y=zeros(n,1);
x=zeros(n,1);
d=zeros(4,1);
x(1) =a;
y(1)=y0;
fprintf(' x y \n');
fprintf ('=======================\n');
fprintf('%10.6f %10.6f\n',x(1),y(1));
for i=1:n-1
x(i+1)=a+h*i;
d=derivTaylor(x(i),y(i));
y(i+1)=y(i)+h*(d(1)+h*(d(2)/2+h*(d(3)/6+h*d(4)/24)));
fprintf('%10.6f %10.6f \n',x(i+1),y(i+1));
end
fprintf('=======================\n');
32
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
5.6. Método de Euler.- Sea yk la aproximación a los valores y(xk) para puntos xk x0 +kh, k=
1,2,3………..luego:
y0 = y(x0)
..
yk+1 = yk + hf(xk,yk)
xk+1 = xk + h
functioneuler(f,a,b,n,y0)
% Euler ODE
% Método de Euler
%Datos
% f =el nombre de la función como string
% a =limite inferior
% b =limite superior
% h =longitud del segmento
% y0 =f(a);
% x =es el vector x
% n =numero de segmentos
% Resultados
% y =es el vector f(x)
h=(b-a)/n;
n=n+1;
y=zeros(n,1);
x=zeros(n,1);
x(1)=a;
y(1)=y0;
fprintf(' x y \n');
fprintf('=======================\n');
fprintf('%10.6f %10.6f\n',x(1),y(1));
for i=1:n-1
x(i+1)=a+h*i;
y(i+1)=y(i)+h*feval(f,x(i),y(i));
fprintf('%10.6f %10.6f\n',x(i+1),y(i+1));
end
fprintf('=======================\n');
% grafico
plot(x,y)
grid on
title('plot de dy/dx=f()')
xlabel('x')
ylabel('y')
33
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>>euler('fe',0,2,4,0.5)
x y
=======================
0.000000 0.500000
0.500000 0.250000
1.000000 0.156250
1.500000 0.156250
2.000000 0.253906
=======================
>>
d 2x wdw g
ecuación : m mg sen y la ODE : sen
dt 2 d L
functionderiv = dwdfi(fi,w)
%Movimiento de un péndulo simple
global L;
g=32.2014;
%wLdw/dfi = -gsin(fi)
deriv=(-g/L)*sin(fi)/w;
34
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
functionEulerDemo()
% Euler ODE Demo
% Caso del pendulo simple
% Datos
%a =límite inferior (79)
%b =límite superior
%h =longitud del segmento
% y0 =f(a);
%x =es el vector x
%n =número de segmentos
% Resultados
%y =es el vector f(x)
global L;
n=28;
L=2.5;
a=79*pi/180;
b=65*pi/180;
y0=0.66488546;
h=(b-a)/n;
n=n+1;
y=zeros(n,1);
x=zeros(n,1);
x(1)=a;
y(1)=y0;
fprintf(' x y \n');
fprintf('=======================\n');
fprintf('%10.6f %10.6f\n',x(1)*180/pi,y(1));
for i=1:n-1
x(i+1)=a+h*i;
y(i+1)=y(i)+h*feval('dwdfi',x(i),y(i));
fprintf('%10.6f %10.6f\n',x(i+1)*180/pi,y(i+1));
end
fprintf('=======================\n');
% grafico
plot(x,y)
gridon
title('plot de un pendulo simple')
xlabel('fi(angulo)')
ylabel('w(rad/seg)')
35
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
RESULTADOS
Tenemos dos resultados
a) Los cálculos
b) El grafico.
Los cálculos
>>EulerDemo()
x y
=======================
79.000000 0.664885
78.500000 0.830837
78.000000 0.963411
77.500000 1.077535
77.000000 1.179378
76.500000 1.272243
76.000000 1.358153
75.500000 1.438457
75.000000 1.514110
74.500000 1.585818
74.000000 1.654121
73.500000 1.719443
73.000000 1.782123
72.500000 1.842440
72.000000 1.900625
71.500000 1.956871
71.000000 2.011343
70.500000 2.064184
70.000000 2.115515
69.500000 2.165444
69.000000 2.214065
68.500000 2.261461
68.000000 2.307707
67.500000 2.352868
67.000000 2.397005
66.500000 2.440170
66.000000 2.482414
65.500000 2.523779
65.000000 2.564307
=======================
>>
36
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
El grafico
y y0
h
f ( x0 , y ( x0 )) f ( x1 , y1 ( x1 ))es una aproximación
2
Pero tenemos
y y0
h
f ( x0 , y0 ) f ( x1 , y0 hf ( x0 , y0 ))
2
El proceso de Euler es usado como predicción, y la regla del trapezoide como de corrección.
Resumiendo el método de Heun es:
p k 1 y k hf ( x k , y k )
x k 1 x k h
y k 1 y k
h
f ( xk , y k ) f ( xk 1 , pk 1 )
2
37
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
functionHeun(f,a,b,n,y0)
% Heun ODE
% Datos
% f = el nombre de la función como string
% a = limite inferior
% b = limite superior
% h = longitud del segmento
% y0 = f(a)
% x = es el vector x
% n = numero de segmentos
% Resultados
% y = es el vector f(x)
h=(b-a)/n;
n=n+1;
y=zeros(n,1);
x=zeros(n,1);
p=zeros(n,1);
x(1)=a;
y(1)=y0;
p(1)=0;
Ejecución:
fprintf(' x p y \n');
fprintf('==============================================\n');
fprintf('%10.6f %10.6f \n',x(1),y(1));
for i=1:n-1
p(i+1)=y(i)+h*feval(f,x(i),y(i));
x(i+1)=a+h*i;
y(i+1)=y(i)+0.5*h*(feval(f,x(i),y(i))+feval(f,x(i+1),p(i+1)));
fprintf('%10.6f%10.6f%10.6f\n',x(i+1),p(i+1),y(i+1));
end
>> f=inline('y*(x*x-1)','x','y')
f=
Inline function:
f(x,y) = y*(x*x-1)
>>Heun(f,0,2,4,1)
x p y
==============================================
0.000000 1.000000
0.500000 0.500000 0.656250
1.000000 0.410156 0.533203
1.500000 0.533203 0.699829
2.000000 1.137222 1.771442
>>
38
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
5.9. Método de Runge-Kutta.- Son los métodos más utilizados, son muy simples pues calculan
yn+1 con yn
yn 1 yn hk2
Runge. Para RK a 2 etapas tenemos,
k1 f ( xn , yn )
h h
k2 f ( xn , yn k1 )
2 2
function [x, y]= RK2(f,a,b,n,y0)
% RUNGE KUTTA 2
% Datos
% f = el nombre de la función como string
% a = limite inferior
% b = limite superior
% h = longitud del segmento
% y0 = f(a)
% x = es el vector x
% n = numero de segmentos
% Resultados
% y = es el vector f(x)
h=(b-a)/n;
n=n+1;
y=zeros(n,1);
x=zeros(n,1);
x(1)=a;
y(1)=y0;
fprintf(' x y \n');
fprintf('==============================================\n');
fprintf('%10.6f%10.6f \n',x(1),y(1));
for i=1:n-1
k1=feval(f,x(i),y(i));
k2=feval(f,x(i)+h/2,y(i)+h*k1/2);
x(i+1)=a+h*i;
y(i+1)=y(i)+h*k2;
fprintf('%10.6f%10.6f\n',x(i+1),y(i+1));
end
39
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>> f=inline('y*(x*x-1)')
f = Inline function:
f(x,y) = y*(x*x-1)
>> a=0;b=2;n=2;y0=1;
>>RK2(f,a,b,n,y0);
x y
==============================================
0.000000 1.000000
1.000000 0.625000
2.000000 1.406250
>>
y k 1 y k
h
k1 2k 2 2k 3 k 4 ,
6
donde :
k1 f ( x k , y k )
h h
k 2 f ( x k , y k k1 )
2 2
h h
k 3 f ( xk , y k k 2 )
2 2
k 4 f ( x k h, y k hk 3 )
function [x, y]= RK4(f,a,b,n,y0)
% RUNGE KUTTA 4
% Datos
% f = el nombre de la función como string
% a = límite inferior
% b = límite superior
% h = longitud del segmento
% y0 = f(a)
% x = es el vector x
% n = número de segmentos
% Resultados
% y = es el vector f(x)
h=(b-a)/n;n=n+1;y=zeros(n,1);x=zeros(n,1);
x(1)=a; y(1)=y0;
fprintf(' x y \n');
fprintf('==============================================\n');
fprintf('%10.6f%10.6f \n',x(1),y(1));
for i=1:n-1
k1=feval(f,x(i),y(i));
k2=feval(f,x(i)+h/2,y(i)+h*k1/2);
k3=feval(f,x(i)+h/2,y(i)+h*k2/2);
k4=feval(f,x(i)+h,y(i)+h*k3);
x(i+1)=a+h*i;
40
y(i+1)=y(i)+h*(k1+2*k2+2*k3+k4)/6;
fprintf('%10.6f%10.6f\n',x(i+1),y(i+1));
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
>> f=inline('4*exp(0.8*x)-0.5*y')
f=
Inline function:
f(x,y) = 4*exp(0.8*x)-0.5*y
>> a=0;b=2;n=4;y0=2;
>>RK4(f,a,b,n,y0);
x y
==============================================
0.000000 2.000000
0.500000 3.751699
1.000000 6.195042
1.500000 9.707772
2.000000 14.845106
>>
41
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
6. PROCESAMIENTO DE SEÑALES En este capítulo veremos varias de las funciones que están
relacionadas con el procesamiento de señales. Primero veremos en el dominio del tiempo y
después en el dominio de la frecuencia:
6.1. Análisis en el dominio del tiempo
6.1.1. Funciones que actúan sobre vectores: Las funciones que veremos a continuación
solamente actúan sobre vectores:
[xmax, ind] = max(x) donde: x es el vector que contiene n elementos y xmax será el
máximo e ind la posición que ocupa xmax.
[xmin, ind] = min(x) donde: x es el vector que contiene n elementos y xmin será el mínimo
e ind la posición que ocupa xmin.
suma =sum(x) donde: x es un vector y sum nos devuelve la suma de los elementos de
ese vector.
42
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
43
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
44
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
mayabs3= abs(mayor3);
else
mayabs3 = abs(menor3);
end;
[mayor4,jj]= max(yc4);
[menor4,jj]= min(yc4);
if abs(mayor4) > abs(menor4)
mayabs4= abs(mayor4);
else
mayabs4 = abs(menor4);
end;
[mayor5,jj]= max(yc5);
[menor5,jj]= min(yc5);
if abs(mayor5) > abs(menor5)
mayabs5= abs(mayor5);
else
mayabs5 = abs(menor5);
end;
%**************HALLA ARCHIVOS SIN SILENCIOS******************
des = (mayabs1/100)*20;
for i=1:lon1(1);
if abs(yc1(i)) > des
lima1 = i;
break
end;
end;
limb1=lima1+3000;
k1= 0:(limb1-lima1);
y1cas = yc1(lima1 :limb1);
y1casn = y1cas;
%******************************************************************
des = (mayabs2/100)*20;
for i=1:lon2(1);
if abs(yc2(i)) > des
lima2 = i;
break
end;
end;
limb2=lima2+3000 ;
k2= 0:(limb2-lima2);
y2cas = yc2(lima2 :limb2);
45
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
y2casn = y2cas;
% ******************************************************************
des = (mayabs3/100)*20;
for i=1:lon3(1);
if abs(yc3(i)) > des
lima3 = i;
break
end;
end;
limb3=lima3+3000;
k3= 0:(limb3-lima3);
y3cas = yc3(lima3 :limb3);
y3casn = y3cas;
% **************************************************************
des = (mayabs4/100)*20;
for i=1:lon4(1);
if abs(yc4(i)) > des
lima4 = i;
break
end;
end;
limb4= lima4+3000;
k4= 0:(limb4-lima4);
y4cas = yc4(lima4 :limb4);
y4casn = y4cas;
% **************************************************************
des = (mayabs5/100)*20;
for i=1:lon5(1);
if abs(yc5(i)) > des
lima5 = i;
break
end;
end;
limb5= lima5+3000;
k5= 0:(limb5-lima5);
y5cas = yc5(lima5 :limb5);
y5casn = y5cas;
%***********NORMALIZA DIGITOS DOS****************
for i=1:(limb1 - lima1)+1;
y1casn(i)=y1casn(i)/mayabs1;
end;
46
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
47
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
% ***vector5***
subplot(5,1,5);
t=k5;
plot(t,y5casn);grid;
axis([0 (limb5-lima5) -1 1]);
ylabel('y5casn');
xlabel('Numero de muestras');
fprintf('\n\n Presione una tecla para terminar...');
pause;
Programa 3.- Procesamiento en el dominio del tiempo
%PROGRAMA QUE MUESTRA UN DIGITO CON VENTANAS DE ANCHO VARIABLE
%PROGRAMA TIEMPO03
%UTILIZA ARCHIVO NORMALIZADO: Y1CASN
clc;
tv =1000;
tv =input('ingrese ancho de la ventana ==> ');
figure(1);
tam = size(y1casn);
tamano = tam(1);
cont = 0;
for v= 1 : 2*tv :tamano;
cont = cont + 1;
v1 = v; %VALOR INFERIOR DE LA VENTANA
v2 = v + tv; %VALOR SUPERIOR DE LA VENTANA
if v2 >tamano
fprintf('\n Fin de la señal\n');
pause;
break;
end;
cont = cont +1;
subplot(2,1,1); plot([v1:v2],y1casn(v1:v2));
grid; title('Observando la señal por ventanas');
axis([v1 v2 -1 1]);
ylabel('Ventana ');
v1 = v2; %VALOR INFERIOR DE LA VENTANA
v2 = v2+ tv ; %VALOR SUPERIOR DE LA VENTANA
if v2 >tamano
fprintf('\n Fin de la senal\n');
pause;
break;
end;
48
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
subplot(2,1,2); plot([v1:v2],y1casn(v1:v2));
grid;
axis([v1 v2 -1 1]);
ylabel('Ventana sgte');
fprintf('\n Presione una tecla para continuar \n');
pause;
end;
Programa 4.- Procesamiento en el dominio del tiempo
%PROGRAMA TIEMPO05-CALCULA PARAMETRO MEDIA.
%UTILIZA ARCHIVO NORMALIZADO: Y1CASN
%CONSIDERA TAMAÑO DE VENTANA E INCREMENTO DE VENTANA
clc;
fprintf('Inicio de programa \n');
vtam = input('ingrese tamaño de la ventana ==> ');
vinc = input('ingrese incremento de la ventana ==> ');
%figure(1);
tam = size(y1casn);
tamano = tam(1);
j1=1;
j2=vtam;
for i= 1 :100;
if(j2 >tamano)
fprintf('\n FIN DEL PROGRAMA \n');
fprintf('\n Presione enter para mostrar tabla...\n');
pause;
break;
end;
media = 0;
for j=j1 : j2;
media = media + y1casn(j);
end;
medias(i) = media/vtam;
j1 = j1 + vinc;
j2 = j2 + vinc;
end;
m=i-1;
clc;
fprintf('\n \t\t\t MEDIAS \n');
fprintf('\t\t\t =======\n\n');
fprintf(' \t\t\t[Indice] \t[Mag]\n');
for i=1:m;
49
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
6.2. Análisis en el dominio de la frecuencia.- Una señal analógica es una señal continua que
representa información, en nuestro caso una señal de voz. A fin de procesar esta señal en la
computadora, la señal analógica puede muestrearse varias veces por segundo, generando así una
señal digital que es una sucesión de valores tomados de la señal analógica original.
50
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
51
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
figure(1);fs =Fs;
subplot(2,1,1);plot([1:tamano],y1casn);grid;
title('Dígito dos de Castañeda');ylabel('y1casn');zoom on;
%****Mostramos la transformada de Fourier*****
Fy1casn=fft(y1casn,512); w=(0:255)/512*fs;
subplot(2,1,2);plot(w, abs(Fy1casn(1:256)));grid;
ylabel('Fourier de y1casn');zoom on;
%********TERMINA PROCESO***********
fprintf('transformada generada, Presione tecla para terminar......');
Fig.6.1 (a) Digito dos de castañeda señal en el tiempo (b) Transformada deFourier,señal en el dominio
de la frecuencia.
52
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
%****Mostramos espectrograma****************
subplot(2,1,2);
specgram(y1casn,256, Fs,256, 250);
%********Termina proceso***********
fprintf('Espectrograma mostrado, Presione tecla para terminar......');
Programa 6.2.3.- Filtra el dígito dos para frecuencias de 100 a 1800 Hz.
% Programa filtra digito Programa frec03
% vector y1casn
clc; vc= y1casn'; % vc es voz de Castañeda
%*********FILTRAMOS LA SEÑAL****************
figure(1);
[b,a]=butter(4,[100 1800]*2/Fs);
[H, w]= freqz(b,a,512);
subplot(2,1,1);
plot(w*Fs/(2*pi),abs(H));
title('Filtro Butterworth 100 -1800 Hz');grid;zoom on;
vcf= filter(b,a,vc);
53
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Fig.6.3 (a) Grafico del filtro butterworth de 101 a 11800 Hz. (b) Transformada deFourier de la señal
(azul) y la señal filtrada (verde).
Programa 6.2.4.- Filtra el dígito dos con filtro tipo elíptico
% Aplicación de filtro elíptico a vector de voz
% Archivo frec04.m, Vector: y1casn
clc; vc= y1casn';
figure(1);
[b,a]= ellip(4,0.005,40,[100 1800]*2/Fs);
[H,w]=freqz(b,a,512);
subplot(2,1,1); plot(w*Fs/(2*pi), abs(H));
title('FiltroElípticopasabanda'); grid; zoom on;
vcf= filter(b,a,vc); VC= fft(vc,512); VCF= fft(vcf,512);
w=(0:255)/256*(Fs/2);subplot(2,1,2);
plot(w, abs([VC(1:256)' VCF(1:256)']));
54
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Fig. 6.4 (a) Filtro elíptico de 100 a 1800 (b) Voz sin filtro(azul), con filtro (verde).
55
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Fig.6.5 (a) Filtro chebyshev de 100 a 1800 (b) Voz sin filtro(azul), con filtro (verde).
56
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
57
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Inicio de programa
MAXIMOS DE LA SENAL
===================
[Índice] [Frecuencia] [Magnitud]
1 129.20 21.89
2 215.33 21.58
3 387.60 24.71
4 559.86 6.99
5 775.20 6.22
6 1119.73 5.38
58
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Inicio de programa
Promedio = 160.04
=======FIN============
59
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
K p y (t)
M u(t)
x(t)
Tenemos tres fuerzas que actúan sobre una masa m: una fuerza de entrada que depende del tiempo
u(t), un resorte con constante de resorte k y un amortiguador viscoso con constante de amortiguación
b. la posición de la masa en función del tiempo está representada por x(t). Conectamos a la masa un
potenciómetro de medición p que proporciona un voltaje de salida y(t) proporcional a x(t) .
La ecuación de movimiento de la masa está dada por la ecuación diferencial de segundo orden:
y (t) = px(t)
60
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
(ms2 bs k ) x(s) u(s) donde s es una variable compleja (+jw), llamada variable de
Laplace. Si llamamos H(s) a la función de transferencia que relaciona el movimiento de salida del
sistema x(s) con la fuerza de entrada u(s):
x( s ) 1 y( s)
H ( s) y la función del potenciómetro es p
u ( s) ms bs k
2
x( s)
Usemos un diagrama de bloque, considerando el valor de los parámetros m=1, b= 4, k= 3, y p= 10,
tendremos:
Planta Medición
U(s) X(s) Y(s)
10
Y finalmente
Sistema
U(s) Y(s)
10
s 2 4s 3
3s 2 18s 24
obtener la forma cero – polo – ganancia, por ejemplo si tenemos H ( s) lo
s 3 9s 2 23s 15
3( s 2)( s 4)
expresamos como H ( s) en esta forma estamos mostrando los polos y los
( s 1)( s 3)( s 5)
ceros del sistema respectivamente. Y finalmente podemos escribir la última expresión como una
r1 r r
expansión en fracciones parciales H ( s) 2 ...... n k (s) .
s p1 s p2 s pn
r1 r r
H ( s) 2 3 k
Que en nuestro caso seria: s 1 s 3 s 5
61
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
x1 x2
k b u
x2 x1 x2 3x1 4 x2 u
m m m
Y la ecuación de medición como:
y=g(x, u)=10x, utilizando la notación matricial este modelo puede escribirse como un modelo de
espacio de estados
x Ax Bu
y Cx Du
Que para este ejemplo representa
x1 0 1 x1 0
x 3 4 x 1u
2 2
x
y 10 0 1 0u
x2
62
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
B( s ) r (1) r (2) r ( n)
.... k ( s)
A( s) s p(1) s p(2) s p ( n)
Comparando las Ecuaciones se observa que p(1) = -p1, p(2) = -p2, … p(n) = -pn ; r(1) = a1, r(2) = a2, ….,
r(n) = an .K(s) es un término directo.
Ejemplo: Considere la siguiente función de transferencia:
B( s) 2s 3 5s 2 3s 6
A( s) s 3 6s 2 11s 6
Para esta función,
num = 2 5 3 6
den = 1 6 11 6
La orden
r , p, k = residue (num, den)
Proporciona el resultado siguiente:
r, p, k = residue (num, den)
r =- 6.0000
- 4.0000
3.0000
p =- 3.0000
- 2.0000
- 1.0000
k= 2
63
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Observe que los residuos se devuelven en el vector columna r, las posiciones de los polos en el vector
columna p y el término directo en el vector fila (k). Esta es la representación en MATLAB del siguiente
desarrollo en fracciones simples de B(s)/A(s):
B( s) 2s 3 5s 2 3s 6
A( s) s 3 6s 2 11s 6
6 4 3
= 2
s 3 s 2 s 1
La función residue también se puede utilizar para obtener los polinomios (numerador y denominador) a
partir de su desarrollo en fracciones simples. Esto es, el comando,
2s 3 5s 2 3s 6
s 3 6s 2 11s 6
r(j) r ( j 1) r ( j m 1)
....
s - p(j) s p( j ) 2
s p( j)m
Consúltense los detalles en el Ejemplo
B( s) s 2 2s 3 r j m 1
.....
A( s ) ( s 1) 3
s p( j )m
Consúltense los detalles en el ejemplo 2.7.
Ejemplo: Obtenga el desarrollo B(s) /A(s) siguiente en fracciones simples utilizando MATLAB.
64
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
B( s) s 2 2s 3 s 2 2s 3
A( s ) ( s 1) 3 s p( j )m
Para esta función, se tiene
num = 0 1 2 3
den = 1 3 3 1
La orden
r , p, k = residue (num, den)
Proporciona el resultado que se muestra en la página siguiente. Es la representación en MATLAB del
desarrollo en fracciones simples de B(s)/A(s):
B( s) 1 0 2
A( s ) s 1 ( s 1) 2 ( s 1) 3
num = 0 1 2 3;
den = 1 3 3 1;
r, p, k = residue (num, den)
r= 1.0000
0.0000
2.0000
p =-1.0000
-1.0000
-1.0000
k=[ ]
4s 2 16s 12
num /den =
s 4 12s 3 44s 2 48s
Para obtener los ceros (z), polos (p) y ganancia (K), e introduce el siguiente programa de MATLAB en
el computador:
num = 0 0 4 16 12;
den = 1 12 44 48 0;
z, p, K = tf2zp (num, den)
s = -3
-1
p= 0
-6.0000
-4.0000
-2.0000
K= 4
65
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
4s 2 16s 12
s 4 12s 3 44s 2 48s
x Ax Bu
y Cx Du
b0 s n b1 s n 1 ............. bn 1 bn
En la función de transferencia: H ( s)
a0 s m a1 s m1 .......... a m1 s a m
[num, den] = ss2tf(A,B,C,D) calcula la función de transferencia de :
num( s)
H ( s) C ( sI A) 1 B D
den( s)
x Ax Bu
Del sistema
y Cx Du
El vector den contiene los coeficientes de le denominador en potencias descendientes de s. Los
coeficientes del numerador son retornados en num.
Ejemplo: Las ecuaciones de espacios de estados para nuestro sistema:
x1 0 1 x1 0
x 3 4 x 1u
2 2
x
y 10 0 1 0u
x2
Usamos el programa:
%convertir modelo de espacio de estados en función de transferencia
A= [0, 1;-3,-4];
B= [0, 1]';
C= [10, 0];
D=0;
[num, den]= ss2tf (A, B, C, D)
66
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
RESULTADO:
cap601
num =
0 0 10
den =
1 4 3
Que significa:
y( s) 10
H (S ) 2
u ( s) s 4s 3
La función ss2zp convierte las ecuaciones de espacio de estados de tiempo continuo.
x Ax Bu
y Cx Du
( s z1 )( s z 2 ).........( s z n )
En la función de transferencia de cero-polo-ganancia: H ( s) k
( s p1 )( s p2 ).......( s pm )
x1 0 1 x1 0
x 3 4 x 1u
2 2
x
y 10 0 1 0u
x2
Usamos el programa:
%convertir modelo de espacio de estados al cero-polo-ganancia
A= [0, 1;-3,-4];
B= [0, 1]';
C= [10, 0];
D=0;
[z, p, k]= ss2zp (A, B, C, D)
RESULTADO:
>> cap602
z = Emptymatrix: 0-by-1
p=
-1
-3
k= 10
Que significa:
y( s) 10
H (S )
u ( s) ( s 1)( s 3)
67
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
( s z1 )( s z 2 ).........( s z n )
En la función de transferencia de cero-polo-ganancia: H ( s) k
( s p1 )( s p2 ).......( s pm )
y( s) 10
H (S ) 2
u ( s) s 4s 3
Se convierte en una función de transferencia cero-polo-ganancia usando el programa:
RESULTADO:
>> cap603
z = Emptymatrix: 0-by-1
p=
-1
-3
k= 10
Que significa:
y( s) 10
H (S )
u ( s) ( s 1)( s 3)
68
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
7.3. FUNCIONES DE DISEÑO Y ANALISIS El análisis y diseño de sistemas lineales empieza con el
modelado de sistemas reales, Como esta parte ya la vimos ahora nos dedicaremos a ver algunas
rutinas y funciones que nos pueden ayudar a diseñar y analizar sistemas lineales. Estas funciones
nos servirán en el dominio del tiempo y de la frecuencia. Estas funciones son :
1. step………………….. respuesta de tiempo de escalón unitario.
2. bode…………………..graficas de frecuencia-respuesta de magnitud y fase.
3. nyquist……………….grafica de frecuencia – respuesta de nyquist.
4. rlocus………………..grafico del lugar geométrica de las raíces
7.3.1. Respuesta en el tiempo al escalón unitario
Los sistemas los vamos a analizar en el tiempo y en la frecuencia, inicialmente los analizaremos en el
tiempo veremos sistemas de primer orden y de segundo orden:
Sistemas de primer orden.- En un sistema de primer orden la relación entrada salida será
C (s) 1
representa por:
R ( s ) Ts 1
Si este sistema de primer orden es excitado por un escalón unitario la respuesta será
1 1
C ( s) en fracciones parciales será
Ts 1 s
t
1
C ( s)
1
y tomando la transformada inversa de Laplace tenemos c(t ) 1 e T
s s 1
T
Ejemplo 1
Si consideramos un circuito RC como el mostrado
R
I(t)
Vi(t) C Vo(t)
Vo ( s) 1
de donde
Vi ( s) 1 RCs
t
por lo tanto c(t ) 1 e RC
y el diagrama de bloques sería
Vi(s) 1 Vo(s)
1 RCs
69
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
La grafica será
V entrada
V salida
5.1. Sistemas de segundo orden.- Considerando la función de transferencia simple de lazo cerrado
n 2
TN 2
s 2 2n s n
2
Dónde:
relacion de amortiguamiento y n es frecuencia natural
de donde
c(t ) 1 e nt (cos d t send t )
1 2
Dónde:
s1 ( 2 1) n y s2 ( 2 1) n
Respuesta transitoria
70
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
2n
G( s)
s 2n s 2n
2
E(s)
2n
s 2 2 n s n2
Para el caso subamortiguado, la respuesta a un escalón unitario tiene oscilaciones amortiguadas, aquí
se definen algunas especificaciones de funcionamiento que son utilizadas como criterios de diseño:
* Porcentaje de sobreimpulso (overshoot)Mp
* Tiempo de asentamiento o establecimiento (settling time)ts
* Tiempo de subida o de crecimiento (rise time)tr
* Tiempo de pico máximo (peak time)tp
* Tiempo de retardo (delay time) td
MP 0.05
1 o bien
0.02
td
0.5
0
tr
tp
ts
71
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
1 d
tr tan 1 ( ) tan 1 d
d n d n
2.- Tiempo pico (tp) Cuando la derivada de C(t)/dt = 0 se halla la solución para tp = /d
( )
1 2
Mp = c(tp) –1 Resolviendo Mp e
4.- Tiempo de asentamiento ts
Con el criterio del 2% será ts = 4/n y del 5% es ts = 3/n
Ejemplo 1: Si un sistema de segundo orden tiene las siguientes características = 0.6 y n = 5
rad/seg. Hallar los valores de merito
Solución:
Mp e
(
d )
e
3 *3.14
4 0.095 o sea9.5%
3.- Sobreelongación máxima
4.- Tiempo de asentamiento ts
Con el2% será ts = 4/ = 4/3 = 1.33 seg. o con el 5% ts = 3/3 = 1 seg.
72
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
73
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
ye=step(num,den,t);
plot(t,ye);
title('respuesta a un escalon unitario caso punto critico de oscilacion');
xlabel('tiempo(seg)');
grid;
4) Sistema inestable
t=[0:0.2:20]';
wn=1;
d=-0.1;
num=[wn^2];
den=[1,2*d*wn,wn^2];
ye=step(num,den,t);
plot(t,ye);
title('respuesta a un escalón unitario caso Sistema Inestable');
xlabel('tiempo(seg.)');grid;
74
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
vectord=[0.1:0.1:0.9];
Y=[];
num=[wn^2];
for i= 1:length(vectord)
d=vectord(i);
den=[1,2*d*wn,wn^2];
y=step(num,den,t);
Y=[Y,y];
end
plot(t,Y);
title('respuesta a un escalon unitario caso Sistema Subamoertiguado');
xlabel('tiempo(seg)');
grid;
t=[0:0.2:20]';
wn=1;
d=0.2;
num=[wn^2];
den=[1,2*d*wn,wn^2];
ev1=1+(exp(-d*wn*t)/sqrt(1-d^2));
ev2=1-(exp(-d*wn*t)/sqrt(1-d^2));
ye=step(num,den,t);
plot(t,ye,t,ev1,t,ev2);
title('SISTEMA DE SEGUNDO ORDEN');
xlabel('tiempo(seg)');
ylabel('Salida');
grid;
75
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Los parámetros característicos del sistema serán:
1 2
1. Tiempo de subida : tr con arctg ( )
wd
2. Tiempo de pico: t p
d n 1 2
1 2
3. Sobreelongación (Sobreoscilación) M p e
76
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
wn=1;
d=0.2;
num=[wn^2];
den=[1,2*d*wn,wn^2];
ye=step(num, den, t);
%calculando el tiempo de subida
%teórico
fi=atan(sqrt(1-d^2)/d);
tra=(pi-fi)/(wn*sqrt(1-d^2));
%con la respuesta de matlab
for i=1:length(t)
if((ye(i)<=yp)&(ye(i+1)>=yp))
tr=t(i);
break;
end
end
%Calculando tiempo de pico
%teórico
tpa=pi/(wn*sqrt(1-d^2));
%Con la respuesta de matlab
for i=1:length(ye)
if (ye(i)==max(ye))
tp=t(i);
break;
end
end
%Calculando Sobrepaso Mp
%teórico
mpa=exp(-(d*pi)/(sqrt(1-d^2)));
%Con la respuesta
mp=max(ye)-yp;
display'Tiempo de subida';[tratr]
display'Tiempo de pico'; [tpatp]
display'Sobrepaso'; [mpamp]
Respuesta
>> anat07
Tiempo de subida
ans = 1.8087 1.8000
Tiempo de pico
ans = 3.2064 3.2000
Sobrepaso
ans = 0.5266 0.5266
77
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
7.3.2. Graficas de Bode: Esta grafica nos permite visualizar la amplitud y el ángulo de fase de una
función de transferencia contra la frecuencia. Para tener una visión mayor se grafica esta
amplitud y ángulo de fase versus el log10 de la frecuencia. La función BODE su sintaxis es:
[mag, fase]=bode(num,den,w)….. Halla la magnitud y fase de la función de transferencia
definida por num y den, w es un argumento opcional de frecuencia especificada por el usuario.
Ejemplo:
%Genera grafica de Bode
num=10;
den=[1,1,3];
bode(num,den);
Ejemplo 3.- Utilizando las ecuaciones de espacio de estados para el ejemplo anterior
x1 0 1 x1 0
x 3 1 x 1u
2 2
x
y 10 0 1 0
x2
78
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Ejjemplo 4:
Generando bode con instrucciones adicionales:
%Graficas de bode y grafica de Nichols
w=logspace(-1,2,100);
A=[0,1;-3,-1];
B=[0,1]';
C=[10,0];
D=0;
[magnitud,fase]= bode(A,B,C,D,1,w);
subplot(2,1,1),semilogx(w,20*log10(magnitud)),...
title('Grafica de Bode'),...
ylabel('Ganancia, dB'),grid,...
subplot(2,1,2),semilogx(w,fase),...
xlabel('Frecuencia, rps'),ylabel('Fase,Grados'),...
grid,pause
subplot(1,1,1),plot(fase,20*log10(magnitud)),...
title('Grafica de Nichols'),axis([-180,180,-20,20]),...
xlabel('fase, grados'),ylabel('Ganancia,dB'),grid
79
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
80
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
7.3.3.Lugar Geométrico de las Raíces: Esta grafica nos permite visualizar el lugar geométrico
de las raíces y verificar la estabilidad o no del sistema.
Caso 1:
K
GH ( s)
Sea
( s 2)( s 4) Hallar el L.G.R:
Programa
num=1;
den=[1 6 8];
rlocus(num,den);
axis([-10 0 -10 10]);
sgrid;
Gráfico:
81
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Caso 2:
Sea
K ( s 1)
GH
s( s 4)( s 10 )
Hallar el L.G.R:
Programa
num=[1 1];
den=[1 14 40 0];
rlocus(num,den);
axis([-20 0 -100 100]);
sgrid;
Gráfico
82
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Caso 3:
K ( s 1) 2
GH
Sea
s 2 (s 10) Hallar el L.G.R:
Programa
num=[1 2 1];
den=[1 10 0 0];
rlocus(num,den);
axis([-15 0 -15 15]);
sgrid;
Gráfico
Caso4:
K ( s 1)
Sea GH ( s) Hallar el L.G.R:
s ( s 2)( s 20 )
2
Programa
num=[1 1];
den=[1 22 40 0 0];
rlocus(num,den);
Gráfico
axis([-16 16 -16 16]);
sgrid;
83
MATLAB PARA INGENIERIA – RICARDO CASTAÑEDA 2013
Gráfico
84