Manual MATLAB
Manual MATLAB
Manual Básico de
MATLAB
El objetivo principal de éste manual es facilitar a los docentes y alumnos, con
estos apuntes breves y sencillos, fáciles de leer, que sirven de ayuda en el
uso de aplicaciones informáticas habituales de un ingeniero.
Contenido
Introducción ............................................................................................................ 2
Capítulo 1. Principios de MATLAB ............................................................................ 3
Capítulo 2. Operaciones con Matrices ...................................................................... 8
Capítulo 3.Programación con MATLAB ................................................................... 13
Capítulo 4. Funciones en MATLAB .......................................................................... 23
Capítulo 5. Gráficas ................................................................................................ 30
Capítulo 6. Derivación e Integración Numérica en MATLAB ................................... 37
Capítulo 7. Ecuaciones Diferenciales en MATLAB ................................................... 46
Capítulo 8. Polinomios ........................................................................................... 53
Capítulo 9. Ajuste de Curvas .................................................................................. 59
Capítulo 10. Funciones de transferencia ................................................................ 63
79
Introducción
MATLAB es un lenguaje de muy alto nivel diseñado para cómputo técnico. Integra en un mismo
ambiente el fácil manejo de cálculos, visualización y programación. En este ambiente los problemas
y sus soluciones se pueden expresar en notación matemática fácil de entender. Algunos de los usos
más comunes en MATLAB son:
• Cálculos matemáticos
• Desarrollo de algoritmos
• Modelado y simulación
• Análisis de datos
• Obtención de gráficas
• Desarrollo de interfaces gráficas
Algunas de estas herramientas son con enfoque a sistemas de control, procesado de señales,
procesado de imágenes y sonidos, lógica difusa, redes neuronales, simulación, optimización,
finanzas y economía, entre otras. Estas herramientas se conocen como toolboxes y constituyen una
parte importante de MATLAB que permiten resolver una clase particular de problemas.
79
Capítulo 1
Principios de
MATLAB
79
1. 1 Espacio de trabajo en MATLAB
MATLAB puede realizar cálculos simples como si se tratara de una calculadora. Por ejemplo si
deseamos realizar 20+7, simplemente escribimos después de >> esta operación requerida. Esto es:
>> 20 + 7
ans=
27
79
Tabla 1.1 Operaciones básicas
Operación Símbolo Ejemplo
Suma + 4+2=6
Resta - 4-2=2
Multiplicación * 4*2=8
División / 4/2=2
Potenciación ^ 4^2=16
También se pueden evaluar otras funciones como las funciones trigonométricas. Por ejemplo:
>> sin(3)
ans=
0.1411
Aquí el argumento está en radianes. Algunas funciones simples se dan en la tabla 1.2.
pi 3.14159265
j igual que i
Inf infinito
79
1.3 Variables
>> a1= 36
a1=
36
Esta variable tendrá ese valor hasta que el usuario lo cambie por otro.
Los nombres de las variables pueden tener un tamaño de hasta 63 caracteres de largo. Si un
nombre de variable tiene más de 63 caracteres, sólo se conservan los primeros 63.
El número de dígitos con los que MATLAB escribe una cantidad numérica puede variarse. Ese se
puede hacer usando alguno de los formatos mostrados en la tabla 1.3 donde se usa π. Por ejemplo:
>>x=[pi]
x=
355/113
79
Los nombres de las variables no son iguales si se escriben con letras mayúsculas o minúsculas. De
esta manera, la variable A es distinta a la variable a.
>> clear a
>> clear
borra todas las variables que se hayan definido desde que se empezó la sesión actual de MATLAB.
>> clc
79
Capítulo 2
Operaciones con
Matrices
79
Ya se ha comentado que MATLAB es fundamentalmente un programa para cálculo matricial.
Inicialmente se utilizará MATLAB como programa interactivo, en el que se irán definiendo las
matrices, los vectores y las expresiones que los combinan y obteniendo los resultados sobre la
marcha. Si estos resultados son asignados a otras variables podrán ser utilizados posteriormente
en otras expresiones. En este sentido MATLAB sería como una potente calculadora matricial.
Para empezar se sugiere que se utilicen letras mayúsculas para matrices y letras minúsculas para
vectores y escalares (MATLAB no exige esto, pero puede resultar útil).
Para definir una matriz no hace falta declararlas o establecer de antemano su tamaño (de hecho, se
puede definir un tamaño y cambiarlo posteriormente). MATLAB determina el número de filas y de
columnas en función del número de elementos que se proporcionan (o se utilizan). Las matrices se
definen o introducen por filas; los elementos de una misma fila están separados por espacios en
blanco o comas, mientras que las filas están separadas por caracteres punto y coma (;). Por ejemplo,
el siguiente comando define una matriz A de dimensión (3×3):
>> A= [1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
>> A =
123
456
789
A partir de este momento la matriz A está disponible para hacer cualquier tipo de operación con
ella (además de valores numéricos, en la definición de una matriz o vector se pueden utilizar
expresiones y funciones matemáticas). Nótese la tabla 2.1.
79
Ejemplos:
Para calcular A' (traspuesta de A) basta teclear lo siguiente (se añade a continuación la respuesta
del programa):
>> A'
ans =
1 4 7
2 5 8
3 6 9
>> B= A'
B=
1 4 7
2 5 8
3 6 9
Ahora ya están definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se
puede hacer el producto B*A
>> C= B*A
C=
66 78 90
78 93 108
90 108 126
Si se tiene un conjunto de ecuaciones simultáneas usamos la función linsolve que resuelve los
sistemas de ecuaciones en forma matricial. Por ejemplo:
6 x + 5 y = 28
10 x + 7 y = 52
79
Se plantea como:
A=
6 5
10 7
>> b= [28;52]
b=
28
52
ans =
8.0000
-4.0000
79
Visión Cultural
El más grande matemático del siglo diecinueve, Carl Friedrich Gauss es considerado uno de los tres más grandes
matemáticos de todos los tiempos—siendo los otros dos Arquímedes y Newton.
Gauss fue un niño prodigio. A la edad de 3 años, encontró un error en la contabilidad de su padre. Se cuenta una
famosa historia de Carl, a la edad de 10 años, cuando pupilo de la escuela local de Brunswick. El maestro era famoso
por sus asignaciones de tareas para mantener a los niños ocupados. Un buen día les pidió ponerse a sumar los
números del 1 al 100. Casi en forma instantánea Carl colocó su pizarra cara abajo con las palabras “ahí esta”.
Después el maestro descubrió que Carl era el único con la respuesta correcta, 5050. Gauss había notado que los
números podían disponerse en 50 parejas, cada una con la suma de 101. Por lo que 50 x 101 =5050. Más tarde en
su vida, Gauss decía que antes de aprender a hablar, ya sabía sumar.
En 1795 Gauss ingresó a la Universidad de Brunswick titubeante entre las disciplinas de filosofía y matemática,
finalmente eligió las ciencias matemáticas después de dos extraordinarios descubrimientos. Primero inventó el
método de mínimos cuadrados, una década antes de que Legendre publicara el resultado. Segundo, un mes antes
de su cumpleaños decimonoveno, resolvió un problema cuya solución se había buscado por más de dos mil años.
Gauss mostró cómo construir con tan solo compás y regla, polígonos regulares.
Gauss realizó un gran número de descubrimientos en física y en matemáticas. Por ejemplo, en 1801 usó un nuevo
procedimiento para calcular, con muy pocos datos, la órbita del asteroide Ceres. En 1833, inventó el telégrafo
electromagnético. No obstante su brillante trabajo en astronomía y electricidad, su desempeño en matemáticas
es todavía más asombroso. Hizo contribuciones al álgebra y la geometría. Podemos ver esto a través del método
de eliminación llamado Gauss- Jordán. Los estudiantes de análisis numérico estudian la cuadratura de Gauss – una
técnica de integración numérica.
Gauss se convirtió en catedrático de matemáticas en Gotinga en 1807, y permaneció en ese puesto hasta la muerte
en 1855.
Gauss utilizaba un sello que mostraba un árbol con algunos pocos frutos y el lema: “Pauca sed matura (pocos pero
maduros)”. Pero Gauss también creyó que las matemáticas deberían reflejar el mundo real. A su muerte, fue
honrado con una medalla conmemorativa en la que se escribió “De Jorge V, Rey de Hanover, al Príncipe de los
matemáticos”
79
Capítulo 3
Programación
con
MATLAB
79
MATLAB proporciona un lenguaje de programación muy poderoso con un ambiente computacional
interactivo. Una ventaja muy importante que tiene programar en MATLAB cuando lo comparamos
con otros lenguajes de programación, es que MATLAB no requiere que se declaren las variables y
sus tipos al principio del programa ya que estas se definen automáticamente cuando las usamos por
primera vez.
A los archivos que tienen código MATLAB se les llama archivos-M (M-files) y tienen la extensión
.m.
79
Los archivos –M más importantes y usados son las funciones. La estructura de una función puede
incluir:
En esta sección presentamos las instrucciones básicas que se requieren dentro de un programa de
MATLAB. El uso de estas instrucciones nos permitirá realizar programas simples pero ilustrativos del
potencial de MATLAB.
>>if condición
Declaraciones
>>end
La condición del if también puede contener operadores lógicos. Los operadores lógicos disponibles
en MATLAB se muestran en la tabla 3.2. Si la condición se cumple entonces se ejecutan las
declaraciones siguientes hasta el end. Si la condición no se cumple, el programa ejecuta la primera
instrucción después de end.
79
Tabla 3.2 Operadores lógicos de MATLAB
Operador Descripción Ejemplo Descripción
Si se cumplen las dos condiciones el resultado
& AND lógico (a>b) & (x<5) es 1, y si sólo se cumple una, el resultado es 0
Si se cumple cualquiera de las dos
condiciones simultáneamente el resultado es
| OR lógico (a>b) | (x<5) 1, y si no se cumple ninguna, el resultado es 0.
%Ejemplo if-else
%Lee un dato de entrada y escribe
%como dato de salida aprobado o reprobado.
calif=input('Dame la calificación:\n');
if calif >= 7.5
fprintf('Felicidades aprobó\n')
end
if calif<7.5
fprintf('Lo siento, reprobó\n')
end
79
3.1.2 La instrucción if-else-end
Una segunda forma del if-end es la inclusión de la clausula else. Esta nueva clausula permite al
programador el uso de un solo if en muchos casos para ejecutar dos conjuntos de declaraciones. La
forma de if-else-end es:
if condición
declaración a1
declaración a2
.
.
.
declaración an
else
declaración b1
declaración b2
.
.
.
declaración bm
end
calif=input('Dame la calificación:\n');
if calif >= 7.5
else
end
79
3.1.3 La instrucción switch-case
La instrucción switch-case se usa cuando queremos checar si una expresión es igual a algún valor
determinado. No se puede usar para checar una condición como a>5 o b ≤ 3. Sin embargo, encuentra
aplicaciones en muchas situaciones donde se requiere ejecutar declaraciones distintas dependiendo
del valor de una expresión. La sintaxis es:
switch expresión
case valor 1
declaración a1
declaración a2
.
.
declaración an
case valor 2
declaración b1
declaración b2
.
.
declaración bm
case valor 3
declaración c1
declaración c2
.
.
declaración cl
otherwise
declaración d1
.
.
declaración dm
end
Cada valor puede ser numérico o una cadena de texto. Además cada case puede tener uno o más
valores.
79
Ejemplo 3. Uso de la instrucción switch-case
clear all
clc
calif=input('Dame la calificación:\n');
switch calif
otherwise
La instrucción for se usa para formar ciclos o lazos de instrucciones que se tienen que repetir un
número determinado de veces. La sintaxis es
79
Ejemplo 4. Uso de la instrucción for
clear all
clc
suma=0
for i=1:10
suma=suma+i;
end
clear all
clc
suma=0
for i=0:2:10
suma=suma+i;
end
Nótese que 1:10 quiere decir que la variable i varia de 1 a 10 incrementándose en 1 en cada
iteración. También podemos escribir esto como 1:1:10. Para la suma de los pares se usó 0:2:10 lo
cual indica que se incrementa la variable i de 2 en 2 empezando con 0 lo que nos da los enteros
menores o iguales a 10. El incremento puede ser negativo, por ejemplo, en 4:-1:0 empieza en 4 y
ahora es un decremento de 1, lo que nos da 3, 2, 1 y termina con 0. Finalmente, el incremento o
decremento puede ser fraccionario como en 4:0.25:5 nos daría 4, 4.25,4.75, 5.
79
Ejemplo 5. Uso de la instrucción for (Cálculo del factorial de un entero)
factorial_n=1;
for i=1:n
factorial_n=factorial_n*i;
end
Deseamos sumar todos los elementos aij de una matriz n x m. Esto se puede hacer realizando la
suma:
n m
Suma= a
i=1 j=1
ij
suma=0;
for i=1:n
%Lee los elementos del renglón i y los suma
for j=1:m
79
3.1.5 La instrucción while
while condición
declaración 1
declaración 2
.
.
.
Declaración n
end
clear all
clc
r=0;
while r<5
r=r+1;
vol=(4/3)*pi*r^3;
fprintf('El radio es %g y el volumen es %g. \n', r, vol)
end
79
Capítulo 4
Funciones en
MATLAB
79
Existen dos tipos de funciones en MATLAB. Las predefinidas por MATLAB y las definidas por el
usuario. A las funciones predeterminadas por MATLAB se les llama funciones elementales.
Es posible definir expresiones dentro de MATLAB. Un ejemplo sencillo es la ecuación para calcular
el área de un círculo de radio r es:
A=π r2
Si r=4, el área se calcula con:
>> A=pi*4^2
A=
50.2655
Una variable simbólica es una variable a la que no se le ha asignado un valor numérico. MATLAB
incluye un bloque de matemáticas simbólicas (Symbolic Math Toolbox) que sirve para que el usuario
pueda definir funciones. Una variable simbólica se define con
a=sym(‘a’)
x=sym(‘x)
f= 3x3+ax+b
esta se puede crear definiendo primero lasa variables a, b y x como simbólicas para poder definir
luego la función f. Así:
>> sym('a');
>> sym('b');
>> x=sym('x');
>> f=sym('3*x^3+a*x+b')
f=
3*x^3+a*x+b
>>syms x y unreal
79
4.2 Operaciones con funciones
Las funciones definidas de manera simbólica se pueden derivar o integrar, o se les puede aplicar
cualquier otra operación. Por ejemplo, el operador para derivar una función diff(f), entonces para
derivar:
f= x3 + 2x
usamos:
>> syms x
>> f=sym('x^3+2*x')
f=
x^3+2*x
>> derivada_f=diff(f)
derivada_f =
3*x^2+2
2
3x+2
Nótese que el comando pretty hace que la ecuación se escriba como lo hace un editor de
ecuaciones.
>> integral_f=int(f)
integral_f =
1/4*x^4+x^2
>> pretty(integral_f)
4 2
1/4 x + x
79
MATLAB tiene una herramienta para observar el comportamiento de una función. Esta herramienta
tiene el nombre de funtool (herramienta de funciones) y se ejecuta escribiendo en la ventana de
trabajo.
Al ejecutar este comando aparecen tres ventanas como se muestra en la figura 4.1. Estas ventanas
están numeradas como figura 1,2 y 3. La figura 3 contiene 4 espacios para dar datos de las funciones
f(x), g(x), rango de valores de x, y el valor de una constante a. Además contiene teclas para efectuar
operaciones con estas funciones. Las operaciones van desde calcular la derivada de f hasta calcular
la función composición de f[g(x)]. Los datos para graficar las funciones f y g en las figuras 1 y 2,
respectivamente. Al abrirse funtool da como valores de las funciones f(x)=x y g(x)=1, pero estos
valores pueden ser modificados por el usuario
a) b)
c)
Figura 4.1
Ventanas de funtool.
a) Gráfica de la función f
b) Gráfica de la función g
Para graficar podemos usar el comando plot, usando este comando primero tenemos que definir un
vector de valores de la variable, por ejemplo si queremos graficar la función sen x desde 0 hasta 2π,
se puede hacer de la siguiente forma:
x= (0:0.1:2*pi)
lo que indica que los valores de x empiezan en 0 y se incrementan en pasos de 0.1 hasta llegar a 2π.
El vector x también se puede definir con:
x= linspace(0,2*pi,70);
79
que indica que el intervalo de los valores de x va de 0 hasta 2π y está dividido en 70 puntos. Para
graficar, en este caso la función sen x, para cada valor del vector x y luego procede a realizar la
gráfica que muestra en la figura 4.2
%x^2+7 si x<=10
%3x^3+2x^2-3 si x>10 y x<=20
clear all
clc
x=0:0.1:20;
for k=1:length(x) %calcula la longitud de un vector
if x(k)<=10
fx(k)=x(k)^2+7
else
fx(k)=3*x(k)^3+2*x(k)^2-3
end
end
plot(x,fx)
79
79
Visión Cultural
El concepto de Función
Las ideas intuitivas de funciones son tan antiguas que si nos remontamos 2000 a.C., en la época en que los
babilonios dejaban en tablillas de barro su testimonio sobre el conocimiento matemático que tenían. Ahí se
puede identificar una de las primeras ideas fundamentales en la construcción del concepto de función: la de
relación; por ejemplo, en el establecimiento de una correspondencia entre números y sus cuadrados, números
y sus raíces cuadradas.
El desarrollo de esas ideas fue resultado del trabajo concienzudo de matemáticos posteriores. El primero en
proporcionar una definición explícita de función fue Johann Bernoulli (1667-1748) en 1718, la cual enuncia
como sigue:
“Se llama función de una variable a una cantidad compuesta, de la manera que sea, por esta variable y por
constantes”
1. Una cantidad constante es una cantidad determinada que conserva siempre el mismo valor.
2. Una cantidad variable es una cantidad indeterminada, o, si se quiere, una cantidad universal que
comprende todos los valores determinados.
3. Una cantidad variable se determina cuando se le atribuye un valor específico cualquiera.
4. Una función de cantidad variable es la expresión analítica compuesta, de cualquier manera en que se
dé esa composición, de la esta misma cantidad y de números, o de cantidades constantes.
5. Entonces, una función de variable es también una cantidad variable.
Para denotar una función en una variable x, nosotros primero ponemos la letra o carácter f…. Entonces, fx
designa una función de x, f(x2), f(a+bx), etc. Ellas designan funciones x2,a+bx, etc.
Regresando a la definición de función, matemáticos posteriores a Euler fueron refinando su definición. Por
ejemplo, la definición que Serret proporcionó en 1893 en su libro Análisis, fue la siguiente:
En toda cuestión donde se tengan que considerar varias variables, se pueden atribuir a algunas de ellas valores
arbitrarios; entonces, las otras variables toman valores determinados. Las primeras son llamadas variables
independientes, las otras son nombradas variables dependientes o funciones de las variables independientes.
79
Capítulo 5
Gráficas
79
En este capítulo examinamos el potencial de MATLAB para graficar funciones y datos. Las
características y datos. Las características y opciones de graficado son muy variadas en MATLAB. Va
desde generar gráficas de dos y tres dimensiones hasta la posibilidad de cambiar las propiedades de
ellas. Además veremos como MATLAB identifica las gráficas y cómo realizar cambios en éstas.
La instrucción básica para graficar es plot (X,Y) donde X es un vector de puntos y Y es un vector de
datos y es de la misma dimensión del vector X. Con el uso de plot se abre una nueva ventana con la
gráfica. El vector de puntos X se puede generar con la instrucción.
Que indica que se genera un vector de n puntos igualmente espaciados. El valor del primer punto
es x1 y el valor del último punto es x2. El incremento en cada punto es (x2-x1)/(n-1). Por ejemplo:
x=
0 1 2 3 4 5
Del resultado que MATLAB entrega vemos que el primer punto es 0, el último punto es 5 y existe
un total de seis puntos. Estos valores de x están almacenados en un vector renglón de 6 puntos.
Consideremos la gráfica de
Si definimos y como y= abs(x)*sin (x), ya que estamos tratando con vectores, usamos:
y=abs(x).*sin(x)
>> x=linspace(-50,50,400);
>> y= abs(x).*sin(x);
>> plot(x,y)
79
Figura 5.1
Podemos también graficar dos funciones en la misma figura definiendo pares x,y. Por ejemplo para
obtener sen 2x y cos 3x en la misma gráfica:
>> x=linspace(0,2*pi,100);
>> y1=sin(2*x);
>> y2=cos(3*x);
>> plot(x,y1,x,y2)
Figura 5.2
Nota: Para darle información a la gráfica usamos las instrucciones xlabel, ylabel, title y legend.
5.2 Gráficas en 3 dimensiones
79
Las gráficas de 3 dimensiones en ocasiones aparte de ser vistosas, aportan más información al
usuario. Las dimensiones se definen como x, y ,z . El comando para graficar una función z=f(x, y) en
tres dimensiones depende del tipo de gráfica que se desea hacer.
plot3(x, y, z, s)
Donde x, y,z son las coordenadas de la función y s son las opciones para la gráfica.
X= sen t
Y= cos t
Z= t
Figura 5.3
Gráfica de la espiral
79
5.3 Gráficas de mallas (mesh)
Z= f(x, y)
Y el comando es
mesh (x, y, z)
donde se debe primero haber definido una rejilla (meshgrid) que genera las matrices x, y. Esto se
logra con:
donde (xi, yi) y (xf, yf) son los valores iníciales y finales de x, y, y la variable inc es el incremento de
x, y.
La gráfica de superficie surf es similar a la de malla, excepto que los rectángulos de la superficie
están coloreados. Los colores de los rectángulos están determinados por los valores de Z y por el
mapa de colores.
%Gráfica de mallas
clc
clear all
x=-5*pi:pi/10:5*pi;
y=x;
[X,Y]=meshgrid(x,y);
Z=(sin(X+eps)./(X+eps))+(sin(Y+eps)./(Y+eps));
figure(1)
mesh(X,Y,Z), xlabel('X'), ylabel('Y'), zlabel('Z')
Figura 5.4
Gráfica de mallas
79
Ejemplo Gráfica de Superficie
%Gráfico de superficie
clc
clear all
[x,y]=meshgrid(-3:1/8:3);
z=peaks(x,y);% Función interna de MATLAB de tres dimensiones
surfl(x,y,z) % Permite tener una grafica de superficie con iluminación
shading interp % Suaviza los colores en una grafica de superficie
colormap(gray);
axis([-3 3 -3 3 -8 8])%Valores iníciales y finales en una gráfica
Figura 5.5
Gráfica de superficie
79
Visión Cultural
René Descartes nació en La Haya (Francia) el 31 de Marzo de 1596, siendo el tercer hijo de la primera esposa de su
padre, que era miembro de la nobleza. La adolescencia de Descartes lo señaló como un chico débil y enfermizo, que
cursó prácticamente desde la cama las enseñanzas del colegio jesuita de la Flêche. Estudió lógica, ética, metafísica,
historia, ciencias y literatura para decidirse en principio por las matemáticas, la que constituiría una de sus ramas de
saber favoritas.
Ingresó en la Universidad de Poitiers donde, después de recibir el diploma por sus estudios en derecho, decidió
abandonar por completo dicha materia para centrarse en el conocimiento de sí mismo y el de los grandes libros del
mundo.
Como anécdota cuentan que en 1618, en tiempos de tregua franco española, al ser enviado a la guarnición Breda
(Holanda) con el ejercito del príncipe Maurice de Nassau (1567-1625) , llamado después príncipe de Orange, leyó un
cartel en el cual se retaba a la resolución de un problema matemático acerca de la caída libre de los cuerpos.
Descartes lo resolvió de varias maneras y su solución (que ya había sido encontrada por Galileo) fue publicada en
Dialogi de 1632.
Descartes criticaba abiertamente la geometría griega por sus muy variadas maneras de demostración que hacían creer
en dos ideas: la idea de que las matemáticas sin talento innato eran inabordables y la idea de que cada teorema
matemático y su demostración eran totalmente independientes del resto de resultados y teoremas.
Descartes era partidario de establecer un mismo sistema de resolución de problemas y teoremas geométricos apto
para una gran mayoría de éstos. De este modo, creó lo que hoy conocemos como las coordenadas cartesianas así
como los cimientos de la geometría cartesiana.
Descartes dibujaba gráficas marcando unidades en dos líneas perpendiculares: una línea horizontal (eje x) y una línea
vertical (eje y); así, cualquier punto de la gráfica podía describirse mediante dos números.
El primer número representaba una distancia en el eje x y el otro número representaba una distancia en el eje y.
Este nuevo enfoque conservaba las reglas de la geometría euclidiana a la vez que la interrelacionaba por primera vez
a ésta con el álgebra. Esta nueva forma de planear la geometría se ha llamado geometría analítica.
79
Capítulo 6
Derivación e
Integración Numérica
en
MATLAB
79
6.1.1 Derivación
MATLAB realiza tanto cálculos numéricos como simbólicos. Sin embargo, en ocasiones no estamos
interesados en el resultado numérico, sino en el resultado donde no evaluamos numéricamente las
variables. Por ejemplo, si deseamos evaluar la derivada de f(x)= 2x2, sabemos que el resultado es
f’(x)= 4x
Para realizar esto en MATLAB es necesario definir la x como una variable simbólica. Para poder
definir x como una variable simbólica escribimos x= sym (‘x’) o también podemos escribir syms x
con lo que MATLAB considera desde ahora x como una variable simbólica y no la evalúa
numéricamente. Ahora ya podemos definir nuestra función f(x)= 2x2 como:
>> syms x
>> f=2*x^2;
>> syms x
>> f=2*x^2;
>> diff(f)
ans =
4*x
>> diff(f,2)
ans =
En el caso de la función g(x,y)= 2x3y deseamos derivar primero con respecto a x y luego con
respecto a y. Para esto tenemos que definir las variables x, y como simbólicas.
>> syms x y
>> g=2*x^3*y;
>> g1=diff (g,x)
g1 =
6*x^2*y
>> g2=diff(g1,y)
g2 =
6*x^2
79
En caso de derivar con funciones trigonométricas:
>> syms x y
>> f=sin(x*y);
>> f1= diff(f,x)
f1 =
cos(x*y)*y
f2 =
cos(x*y)*x
f3 =
cos(x*y)*y
Nota: Aquí vemos que las variables simbólicas están ordenadas alfabéticamente y así se toman
para las derivadas.
x=0:0.1:10;
xprima=x(2):0.1:10;
f=2*x.^2+3*x-5;
dfdx=diff(f)./diff
dfdx=diff(f)./diff(x);
(x)calcula la derivada
numérica f (x + x) − fx
figure(1) x
plot(x, f), xlabel('x'), ylabel('f(x)')
figure(2)
plot(xprima, dfdx), xlabel('x'), ylabel('f^,(x)')
79
Gráficos del Ejemplo 6.1.1
clear all
x=-4:0.1:5;
F=x.^5-3*x.^4-11*x.^3+27*x.^2+10*x-24;
dFdx=diff(F)./diff(x);
xd=x(2:length(x));
plot(x,F,xd,dFdx)
79
6.2 Integración
La operación de integración indefinida está definida para una función f(x) por
F = int( f ) → f (x)dx
Donde la nueva función F satisface
diff(F)=f
F se conoce también como la antiderivada de f y MATLAB la encontrará siempre que exista. Para
una función de dos variables f(x, y) debemos explícitamente indicar con respecto a qué variable
vamos a integrar, es decir
int (f,y)
f (x)dx, f (v)dv
a a
Se usa
int (f, a, b), int (f, v, a, b)
Ejemplo 6.2.1
ans =
-cos(x)
Ejemplo 6.2.2
>> syms x
>> f=2*x;
>> int(f,0,1)
ans =
79
Ejemplo 6.2.3
MATLAB nos permite evaluar integrales impropias, si es que éstas convergen. Por ejemplo, la
integral impropia
ex senx
0
x dx
Se puede calcular con
>> syms x
>> f=(exp(-x)*sin(x))/x;
>> int(f,0,inf)
ans =
1/4*pi Lo que nos indica que la integral converge.
tan x + 90
Encontrar la gráfica de la integral de la función en un intervalo de Xϵ[0, 7]
(x2 + 2)(e−0.5 x )
Para hacer una integral en Matlab debe crearse una función definida por el usuario, y para ello debe
generarse un archivo .m desde el editor de programas de MATLAB siguiendo la secuencia siguiente
desde la barra de tareas: File→New→M-File, con esto se observará la siguiente ventana:
Después, en un archivo .m nuevo, se escribirá el código que permitirá dar solución a la integral:
79
Hoja 1:
function y=integ(x)
y=sqrt(abs(tan(x))+90)./(x.^2+2).*exp(-0.5*(x))
Hoja 2:
clear all
quad(@integ,0,7)
x=0:0.01:7;
y1= sqrt(abs(tan(x))+90)./(x.^2+2).*exp(-0.5*(x))
plot(x,y1)
Nota 1:
La hoja 1 es necesario guardarla con el nombre que pusimos en el comando “function
y=nombre_del_archivo_(x)”.
(En este caso es integ, por lo que nuestro archivo se llama integ.)
Nota 2:
La hoja 2 es la que utilizamos para correr el programa, es decir el nombre con el que hayamos
guardado nuestra hoja, el cual debe ser diferente al de la hoja 1.
Hoja 1:
function y=integtarea(x)
y= (log(x.^3+7*x+2))+log10(x.^4)
79
Hoja 2:
clear all
quad(@integtarea,2,10)
x=2:0.1:10;
y1=(log(x.^3+7*x+2))+log10(x.^4)
plot(x,y1)
79
Visión Cultural
Historia de las derivadas
Los problemas típicos que dieron origen al Cálculo Infinitesimal, comenzaron a plantearse en la época clásica
de Grecia (siglo III a.C.), pero, no se encontraron métodos sistemáticos de resolución hasta 20 siglos después
(en el siglo XVII por obra de Newton y Leibniz).
En lo que atañe a las derivadas, existen dos conceptos de tipo geométrico: el problema de la tangente a una
curva (concepto griego estático en contraste con el concepto cinemático de Arquímedes) y el problema de los
extremos (máximos y mínimos) que en su conjunto dieron origen a lo que modernamente se conoce como
Cálculo Diferencial.
El problema de la tangente a una curva, fue analizado y resuelto primeramente por Apolonio (200 a.C.). En el
libro II de su obra, hace el estudio de los diámetros conjugados y de las tangentes a una cónica.
En cuanto al problema de los extremos relativos de una función, fue Pierre de Fermat (1601 – 1665) quien en
el año 1629, hizo dos importantes descubrimientos que están relacionados con sus trabajos sobre lugares
geométricos. En el mas importante de ellos, titulado Methodus ad disquirendam maximan et miniman
("Métodos para hallar máximos y mínimos"). Aquí se puede ver ya en esencia, el proceso que ahora se llama
diferenciación.
Esta fue la razón que asistió a Laplace al aclamar a Fermat como el verdadero descubridor del Cálculo
Diferencial. Sin embargo, aunque son muchos y numerosos los precursores, algunos historiadores han
considerado que es a Newton y a Leibniz quienes se les pueden atribuir justificadamente la invención de las
derivadas y de las integrales.
Newton, tardó mucho en dar a conocer sus resultados. La notación que usaba era mas sugestiva: lo que
nosotros llamamos f (x) ó y, él lo llamaba "cantidades fluentes", y la derivada, D f (x) era llamaba "fluxión".
Leibniz, comparte con Isaac Newton el crédito del descubrimiento del cálculo. Fue el primero en publicar los
mismos resultados que Newton descubriera diez años antes. La historia ha dictaminado que Newton fue el
primero en concebir las principales ideas (1665 – 1666), pero que Leibniz las descubrió independientemente
durante los años de 1673 – 1676.
Leibniz fue quizá el mayor inventor de símbolos matemáticos. A él se deben los nombres del Cálculo
dy
Diferencial y el Cálculo Integral, así como los símbolos y para la derivada y la integral. Por esta razón,
dx
debido a la superioridad del simbolismo, el cálculo se desarrolló con mucha mayor rapidez en el continente
europeo que en Inglaterra de donde era oriundo Newton.
79
Capítulo 7
Ecuaciones
Diferenciales en
MATLAB
79
El poder de cálculo numérico es la principal característica de MATLAB, y en este capítulo daremos
una introducción al tema de la solución numérica de ecuaciones diferenciales ordinarias (EDO’s),
utilizando las herramientas de solución con las que cuenta Matlab.
Para resolver ecuaciones diferenciales MATLAB utiliza unos programas llamados ode’s (de las siglas
en inglés ordinary differential equations), algunos de ellos son: ode23, ode45, ode113 y ode15s la
nomenclatura tiene que ver con el método de solución que utilizan y el tipo de ecuaciones
diferenciales que pueden resolver.
Para este curso básico de ecuaciones diferenciales ordinarias son suficientes los programas ode23 y
ode45, que utilizan métodos de Runge-Kutta de segundo a quinto orden.
Ejemplo 7.1
Donde la condición inicial indica que el valor de la función y, cuando t=1, es cero.
En MATLAB debe crearse una función definida por el usuario, y para ello debe generarse un archivo
.m desde el editor de programas de MATLAB siguiendo la secuencia siguiente desde la barra de
tareas: File→New→M-File, con esto se observará la siguiente ventana:
79
A continuación se debe generar el archivo de función. Observe que la ecuación (1) puede
escribirse como:
y' = 1− ty (2)
Hoja 1:
function y_prima=primero(t,y)
y_prima=1-t*y
Nota 2: La segunda línea es la ecuación (2) (siempre se debe despejar y’), no olvide incluir todos
los símbolos de operación de Matlab (+, -, *, /, ^, etc.).
Este código debe guardarse en el directorio de MATLAB activo, casi siempre el directorio “work”.
Notará que al guardarlo MATLAB coloca automáticamente el nombre “primero”; ya que es un
archivo de función, ese nombre NO deberá modificarse.
Después, en un archivo .m nuevo, se escribirá el código que permitirá dar solución a la ecuación
diferencial:
Hoja 2:
clear all
[t,y]=ode23(@primero,[1 5],0)
plot(t,y)
79
0.5
0.45
0.4
0.35
0.3
0.25
y
0.2
0.15
0.1
0.05
0
1 1.5 2 2.5 3 3.5 4 4.5 5
t
Ahora se mostrará el procedimiento general para resolver ecuaciones diferenciales de orden n>1.
Antes de utilizar los programas ode con ecuaciones de orden mayor al primero, se tiene que hacer
un poco de álgebra para convertir una ecuación de orden n, en un sistema de ecuaciones de primer
orden acopladas, por ejemplo, si se tiene una ecuación de la forma:
u n = y (n−1)
Con i = 1,2,3…,n.
79
Ejemplo 7.2 Ecuaciones Diferenciales con ecuación de Bessel
t 2 y''+ty'+(t 2 − 2 )y = 0
y' 2
y'' = − − 1 − 2 y
t t
u1 = y
u2 = y'
u'1 = u2
u 2 (3)
u' 2 = − 2
− 1 − 2 u1
t t
Se utilizan estas ecuaciones para generar el archivo de función de MATLAB. Aquí se resolverá la
ecuación (3) con =1 y con las condiciones iníciales y(0)=1 y y’(0)=3. En el intervalo t (0.1, 35).
El código es el siguiente:
Hoja 1:
function u_punto=ecbessel(x,u)
nu=1;
u_punto=[u(2)
-(u(2)/x)-(1-(nu^2/x^2))*u(1)];
El archivo Matlab que da solución a la ecuación de Bessel considera la instrucción ode23 que en sus
parámetros incluye el nombre de la función, precedido de @, el intervalo para t (de 0.1 a 35) y el
vector de condiciones iniciales estructurado de la siguiente manera:
79
Dado que la ecuación diferencial es de segundo orden, la solución que proporciona ode23 generará
dos vectores columna que contienen: el primero, la solución de la ecuación diferencial, es decir, la
función y. El segundo contiene los valores de la primera derivada de y.
En forma general la solución de Matlab es un arreglo que contiene n columnas con las soluciones
para y, y’, y’’,…,y(n). Por lo tanto, en el código que aparece a continuación y1 es y y y2 es la primera
derivada de y.
Hoja 2:
clear all
y1=y(:,1);
y2=y(:,2);
Nota: Recuerde que la ecuación diferencial se resuelve ejecutando este último archivo.
Función y
10
-5
0 5 10 15 20 25 30 35
Primera derivada de y
10
-5
-10
0 5 10 15 20 25 30 35
79
Visión Cultural
Astrónomo y matemático alemán, nacido en Minden, conocido principalmente por realizar la primera
medición precisa de la distancia de una estrella.
Nació en Minden. Bessel supervisó la construcción del observatorio de Königsberg y fue su director
desde 1813 hasta su muerte. Estableció el sistema uniforme para calcular las posiciones de las estrellas
que todavía se utiliza actualmente.
Desde 1821 hasta 1833, determinó con precisión las posiciones de estrellas de hasta la novena
magnitud, elevando el número de estrellas catalogadas a 50.000. Sus Observaciones astronómicas
fueron publicadas en 1842.
Bessel fue el primero en determinar el paralaje, y por tanto, la distancia de una estrella fija, 61 Cygni,
proporcionando así la confirmación definitiva de la teoría por la que el Sol y no la Tierra es el centro del
Sistema Solar. También determinó el diámetro, el peso y la elipticidad (o desviación de la forma de una
esfera real) de la Tierra.
79
Capítulo 8
Polinomios
79
Una clase muy especial de funciones son los polinomios. Un polinomio es de la forma
Los coeficientes de los polinomios están definidos en MATLAB como vectores renglón donde los
coeficientes se escriben en orden descendente. Así:
x+1 es [1 1]
x-1 es [1 -1]
4x2+2x-3 es [4 2 -3]
-2x2+√7x es [-2 √7 5+
>>poli=[-2 sqrt(7) 5]
poli =
Para evaluar un polinomio en un valor dado de x, usamos el comando polyval (poli,x). Para
nuestro ejemplo:
>> polyval(poli,9)
ans =
-133.1882
Para evaluar varios puntos podemos simplemente escribir la lista de valores donde deseamos
evaluar el polinomio, que para nuestro ejemplo será:
>> polyval(poli,x)
ans =
79
>> x=linspace (0, 2,100);
>> plot(x,y)
>> grid
50
40
30
20
10
-10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Para calcular las raíces de un polinomio usamos el comando roots. Por ejemplo:
>> raices=roots(poli)
raices =
-1.3803
0.8215
0.0588
Como el polinomio es de tercer grado roots nos entrega tres raíces. En MATLAB los coeficientes de
un polinomio forman un vector renglón, mientras que las raíces son un vector columna.
>> a=poly(raices)
79
Nótese que el polinomio resultante tiene el coeficiente de la mayor potencia igual a la unidad. Si
multiplicamos este polinomio por 6 obtendremos los coeficientes del polinomio original.
>> a=6*a
a=
El producto de dos polinomios es otro polinomio. Para multiplicar dos polinomios usamos el
comando conv (polinomio 1, polinomio 2). Por ejemplo:
ans =
12 -22 36 -11 -4 7
[q,r]=deconv (a,b)
Que indica que al dividir a entre b (a/b) obtenemos el polinomio cociente q y el polinomio residuo
r. Por ejemplo.
>> [q,r]=deconv(a,b)
q=
1 2 7 -12
r=
0 0 0 0 30 80 256
79
Esto es, los polinomios del cociente y del residuo son:
Para sumar polinomios, éstos deben ser del mismo grado y si no los son es necesario añadir ceros
para obtener el mismo número de coeficientes. Entonces para que los polinomios a y b dados
anteriormente tengan el mismo número de elementos añadimos tres ceros al polinomio b. Para no
afectar el grado del polinomio, los ceros se añaden en las posiciones correspondientes a las
potencias más altas, es decir, los primeros elementos del vector de coeficientes. Como b es el
polinomio de menor orden, entonces tenemos que b se modifica sólo añadiendo tres ceros, como
se muestra a continuación.
>> c=a+b
c=
1 6 24 51 81 93 80
>> polyder(a)
ans =
6 30 96 150 154 84
79
Visión Cultural
En el problema 14º del papiro de Moscú (ca. 1890 a. C.) se pide calcular el volumen de un tronco
de pirámide cuadrangular. El escriba expone los pasos: eleva al cuadrado 2 y 4, multiplica 2 por 4,
suma los anteriores resultados y multiplícalo por un tercio de 6 (h); finaliza diciendo: «ves, es 56,
lo has calculado correctamente». En notación algebraica actual sería: V = h (t² + b² + tb) / 3, un
polinomio de cuatro variables (V, h, t, b) que, conociendo tres, permite obtener la cuarta variable.
Algunos polinomios, como f(x) = x² + 1, no tienen ninguna raíz que sea número real. Sin embargo,
si el conjunto de las raíces posibles se extiende a los números complejos, todo polinomio (no
constante) tiene una raíz: ese es el enunciado del teorema fundamental del álgebra.
Hay una diferencia entre la aproximación de raíces y el descubrimiento de fórmulas concretas para
ellas. Se conocen fórmulas de polinomios de hasta cuarto grado desde el siglo XVI. Pero, las
fórmulas para polinomios de quinto grado fueron irresolubles para los investigadores durante
mucho tiempo. En 1824, Niels Henrik Abel demostró que no puede haber fórmulas generales para
los polinomios de quinto grado o mayores.
La máquina diferencial de Charles Babbage fue diseñada para crear automáticamente tablas de
valores de funciones logarítmicas y diferenciales, evaluando aproximaciones polinómicas en
muchos puntos, usando el método de las diferencias de Newton.
79
Capítulo 9
Ajuste de
Curvas
79
En muchas aplicaciones científicas y de ingeniería es necesario describir datos de mediciones de
forma analítica por medio de un polinomio. La expresión de los datos de esta manera nos permite
predecir resultados o simplemente describir nuestro experimento con una ecuación matemática.
Para expresar nuestros datos por medio de un polinomio, MATLAB usa el comando polyfit cuya
sintaxis es:
Polyfit(x,y,n)
Ejemplo 9.1
Supongamos que se tiene la tabla 9.1 que contiene datos de una medición.
>> x=[0,1,2,3,4,5,6];
>> y=[0,1,3.3,2.2,5.6,4.4,0];
>> plot(x,y,'*k')
La gráfica se muestra en la figura 9.1 donde también hemos cambiado los límites de los ejes x, y en
el menú de Edit Axes properties de -1 a 7. El símbolo ‘*k’ indica que se graficará con
79
asteriscos. Ahora usamos polyfit para encontrar un polinomio de grado 3 que pasa por estos
puntos:
>> a=polyfit(x,y,3)
a=
Para graficar el polinomio a(x) junto con los puntos de las mediciones empleamos:
>> x1=linspace(0,7,100);
>> p1=polyval(a,x1);
>> plot(x,y,'*r',x1,p1)
Figura 9.12
En la figura obtenida vemos que el polinomio de 3er grado es una aproximación pobre ya que en
algunos de los puntos la distancia a la curva del polinomio puede ser considerable. Si cambiamos a
un polinomio de quinto grado.
>> a=polyfit(x,y,5)
a=
>> p1=polyval(a,x1);
>> plot(x,y,'*r',x1,p1)
Y si volvemos a graficar obtenemos la figura 9.13, que es una mejor aproximación. Para n=5 se
obtiene la mejor aproximación.
79
Figura 9.13
79
Capítulo 10
Funciones de
Transferencia
79
En el análisis y diseño de un sistema de control, es indispensable una descripción matemática, para
obtener un modelo del proceso. Es importante definir las variables que identifiquen las
características dinámicas del proceso. Cada proceso a modelar tiene una estrecha relación con leyes
físicas y por ende, una forma de expresarse mediante ecuaciones matemáticas. Algunos de estos
procesos pueden ser lineales o no lineales, variantes o invariantes en el tiempo, etc. La función de
transferencia de un sistema lineal invariante en el tiempo se define como la transformada de Laplace
de la respuesta o impulso, con las condiciones iniciales iguales a cero. Una función de transferencia
puede expresarse como un cociente de polinomios, teniendo un polinomio N(s) en el numerador, y
un polinomio D(s) en el denominador, es decir F(s)=N(s)/D(s).
79
Método vectorial, forma factorizada
Aún con denominador y numerador factorizados se pueden crear funciones de transferencia LTI. Se
obtiene usando vectores renglón con las raíces de numerador y denominador. Por ejemplo,
G(s)=K*N(s)/D(s, se puede expresar como un objeto LTI con el comando
G=zpk(numg,deng,K), siendo numerador, denominador y ganancia, respectivamente. La
expresión zpk hace referencia a ceros (raíces del polinomio del numerador), polos (raíces del
polinomio del denominador) y ganancia.
Ejemplo
79
79
Método de la expresión racional en s, forma polinomial
Usando este método se puede escribir la función de transferencia como comúnmente se hace, es
decir añadiendo s a las funciones. Se debe declarar s=tf(‘s’) antes de la función de
transferencia G=tf(numg,deng) para obtener una equivalente en forma polinomial.
Ejemplo
79
Método de la expresión racional en s, forma factorizada
Este método es similar al anterior, es decir, muestra la función de transferencia en términos de s,
declarsndo s=zpk(‘s’) previo a la función de transferencia en la forma
G=zpk(numg,deng,k). En ambos métodos de la expresión racional se puede usar s=tf(‘s’)
o s=zpk(‘s’) la diferencia está en la creación de la función de transferencia.
Ejemplo
79
Para convertir las funciones de transferencia de una forma polinomial a la forma factorizada,
cambiando de coeficientes a raíces. El comando utilizado en MATLAB es tf2zp(numtf,dentf).
Ejemplo
79
Por otro lado, para lograr el cambio de la forma factorizada a polinomial se utiliza la instrucción
zp2tf(numzp,denzp,K). Ambas conversiones se mostrarán como vector columna.
Ejemplo
79
En los modelos LTI también aplica la conversión de la forma polinomial a la forma factorizada y
viceversa, usando tf y zpk. Siendo Fzpk(s) expresada de forma factorizada, entonces
tf(Fzpk) convierte a dicha función en una de la forma polinomial, es decir, con coeficientes. Del
mismo modo, con zpk(Ftf) convierte a Ftf(s) a una función expresada como factores en
numerador y denominador.
Ejemplo
79
79
Respuesta en el tiempo
MATLAB es una herramienta muy útil para calcular las características de un sistema de segundo
orden, tales como el factor de amortiguamiento relativo (ζ), frecuencia natural no amortiguada (ωn),
sobrepaso en porcentaje (%OS, spp), tiempo de asentamiento (Ts) y tiempo pico (Tp).
Ejemplo
Otra aplicación importante es el obtener la respuesta escalón de los sistemas, su importancia radica
en los casos en los que se tiene un sistema puro de dos polos y tiene polos y ceros adicionales. Es
posible obtener la respuesta escalón de la función de transferencia T(s) = num/den, a través de
step(T), y con el comando step(T1,T2, …, Tn). Para obtener información acerca de las
gráficas step(T), por ejemplo, conocer la etiqueta de la curva o las coordenadas de un punto,
basta con hacer clic izquierdo sobre la curva. Al hacer clic derecho sobre la curva, se enfatiza e
identifica la curva; clic derecho fuera de la curva despliega un menú con: 1) respuesta del sistema a
79
ser desplegada, 2) características de la respuesta a ser desplegada, 3) selección de ampliación o
reducción (zoom), 4) elección de activación o desactivación de la retícula sobre la gráfica.
Al añadir [y, t] = step(T), se crean los vectores con los puntos de la gráfica, donde y es el
vector de salida y t el vector del tiempo. Para este caso, es necesario usar el comando plot(t,y)
para desplegar la gráfica, esta gráfica se pueden etiquetar, el eje x, el eje y, con title(‘ab’),
xlabel(‘ab’), ylabel(‘ab’), respectivamente.
El comando clf borra la gráfica antes de trazar una nueva gráfica. Y se puede desplegar un texto
en la gráfica; con la instrucción text(X, Y, ’text’), donde (X, Y) son las coordenadas
donde se ubicará el texto.
Ejemplo
79
79
79
79
79
Por otro lado, con step(T,t) se puede graficar la respuesta escalón de sistemas representados
en el espacio de estados. Donde T es cualquier objeto de LTI y t = a:b:c es el intervalo del eje
de tiempo, donde a es el tiempo inicial, b es el incremento de tiempo y c es el tiempo final.
Por ejemplo, t = 0:1:10 se interpreta como un tiempo de 0 a 10 segundos en incrementos de 1
segundo. El campo t es opcional. El comando grid on superpone una retícula sobre la respuesta
escalón y esta va antes de step((T,t).
Ejemplo
79
79