0% encontró este documento útil (0 votos)
344 vistas81 páginas

Manual MATLAB

Este documento presenta un manual básico de MATLAB en 10 capítulos. El objetivo principal del manual es facilitar a los docentes y estudiantes el uso de aplicaciones informáticas comunes de ingeniería mediante apuntes breves y sencillos sobre MATLAB.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
344 vistas81 páginas

Manual MATLAB

Este documento presenta un manual básico de MATLAB en 10 capítulos. El objetivo principal del manual es facilitar a los docentes y estudiantes el uso de aplicaciones informáticas comunes de ingeniería mediante apuntes breves y sencillos sobre MATLAB.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 81

2018

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.

UNIVERSIDAD DEL VALLE DE MÉXICO


29/11/2018
Índice

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

MATLAB es el acrónimo de MATrix LABoratory (Laboratorio de Matrices) y originalmente fue


desarrollado para realizar operaciones con matrices. El MATLAB actual es un poderoso sistema de
cálculo de operaciones matemáticas y programación interactivo que integra un sistema de
graficación. El lenguaje de programación de MATLAB es más poderoso que lenguajes tales como el
FORTRAN, C, Basic, Visual Basic o Pascal, por mencionar algunos.

Junto a MATLAB se ha desarrollado una colección de herramientas que programadas en lenguaje de


MATLAB pueden realizar un conjunto de actividades en ciertas áreas de ingeniería, las ciencias, las
finanzas y la economía, por mencionar algunas.

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

La región que estaremos usando es la ventana de la derecha que se denomina Ventana de


Comandos o Espacio de trabajo (Command Window). Las otras dos ventanas son la Ventana del
Directorio de trabajo (Current Directory) y la ventana con la Historia de los comandos (Command
History). El Directorio Actual (Current Directory) contiene todos los archivos que se encuentran en
el directorio en el cual estamos trabajando (el directorio por defecto de MATLAB es
C:\Matlab\work). Otra ventana que se puede desplegar es la ventana de ayuda (Help) la cual se pude
abrir con el icono de Help. En el menú Desktop también se pueden seleccionar las ventanas que
deseamos desplegar.

1.2 Cálculos simples 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

Las operaciones básicas se muestran en la tabla 1.1

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.

• Nota: Para un listado de todas las funciones elementales existentes en MATLAB


simplemente escribimos help elfun. El significado de elfun es elementary functions.

Tabla 1.2 Algunas funciones en MATLAB


Función Notación en MATLAB
sen x sin (x)
cos x cos (x)
tan x tan (x)
√x sqrt (x)
log (x) log 10 (x)
In (x) log (x)
|x| abs (x)
ex exp (x)

Algunas constantes definidas en MATLAB son:

pi 3.14159265

i unidad imaginaria =√-1

j igual que i

eps precisión de las operaciones de punto flotante, 2-52

Inf infinito

NaN No hay un número (Not a number)

79
1.3 Variables

En MATLAB se pueden definir variables que a diferencia de lenguajes de programación como


FORTRAN y C, no necesitan declararse previamente en otra instrucción. Es decir, la variable se crea
al momento de escribirse. Por ejemplo, la variable a1 se crea en MATLAB cuando se escribe por
primera vez con:

>> 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:

>> format rat

>>x=[pi]

x=

355/113

Tabla 1.3 Formatos para escribir valores numéricos


FORMATO de MATLAB Valor desplegado Comentarios
format short 3.1416 5 dígitos
format 3.1416 Igual que format short
format long 3.14159265358979 16 dígitos
format short e 3.1416 e + 000 5 dígitos más exponente
format long e 3.14159265358979 e + 000 16 dígitos más exponente
format hex 400921fb54442d18 hexadecimal
format bank 3.14 2 decimales (monetario)
format + + positivo o negativo
format rat 355/113 racional aproximado

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.

Para borrar variables se usa la instrucción clear.

>> clear a

borra solamente la variable a, mientras que

>> clear

borra todas las variables que se hayan definido desde que se empezó la sesión actual de MATLAB.

>> clc

Limpia el espacio de trabajo (Command Window)

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.

2.1 Definición de Matrices

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.

Tabla 2.1 Operaciones con Matrices


diag (A) Vector formado con los elementos de la diagonal de A
inv (A) Inversa de A
A' Transpuesta de A
transpose (A) Transpuesta de A
det (A) Determinante de A
rank (A) Rango de A
trace (A) Suma de los elementos de la diagonal de A
norm (A) Norma de A
A^c Matriz A a la c potencia
A. ^c Cada elemento de A se eleva a la c potencia
A/B Matriz A entre B
A\B Es lo mismo que A/B

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

Podemos también asignar este resultado a otra matriz llamada B

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

2.2 Sistemas de ecuaciones simultáneas

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]

A=

6 5
10 7

>> b= [28;52]

b=

28
52

>> linsolve (A,b)

ans =

8.0000
-4.0000

79
Visión Cultural

Carl Friedrich Gauss, 1777-1855

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.

Se abre una nueva ventana:

79
Los archivos –M más importantes y usados son las funciones. La estructura de una función puede
incluir:

1. Comentarios, los cuales empiezan con el símbolo %


2. Instrucciones para leer los datos de entrada.
3. Instrucciones a ejecutar.
4. Instrucciones para escribir los datos de salida.
5. Instrucciones end para terminar la función.

3.1 Instrucciones básicas de programación en MATLAB

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.

3.1.1 La instrucción if-end

Una característica vital en todo lenguaje de programación es la habilidad de poder cambiar la


secuencia en que se ejecutan las instrucciones, dependiendo de que se satisfagan algunas
condiciones que pueden depender de los valores de las variables generados durante el programa.
En MATLAB la declaración if-end se usa para este propósito. Tiene la forma general:

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

La condición es de la forma e1 R e2 donde e1 y e2 son expresiones aritméticas y R es alguno de


los operadores de relación de la tabla 3.1. Un pequeño ejemplo nos ilustrará cómo usar la
instrucción if.

Tabla 3.1 Operadores de relación


Operación de relación R Definición
> Mayor que
>= Mayor que o igual a
< Menor que
<= Menor que o igual a
== Igual a
~= No igual a, distinto de

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.

Si se cumple la condición el resultado es 0 y si


- NOT ~ (a>b) no se cumple el resultado es 1.
Si se cumple o no las dos condiciones
simultáneamente el resultado es 0, y si sólo
XOR OR Exclusivo xor (a>b, x<5) se cumple una, el resultado es 1.

Ejemplo 1. Uso de la instrucción if-else

El siguiente programa lee el dato e indica si el individuo está aprobado o reprobado.

%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

Si la condición se cumple, se ejecutan las declaraciones a1 a la an. Después de la declaración an,


el programa continúa con la instrucción que sigue al end.

Ejemplo 2. Uso de la instrucción if-else-end

El Ejemplo 1 se puede reescribir usando un if-else-end como se muestra a continuación.

%Haciendo una modificación al anterior

calif=input('Dame la calificación:\n');
if calif >= 7.5

fprintf('Felicidades, aprobó \n')

else

fprintf('Lo siento, reprobó \n')

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

%Uso de la instrucción switch-else


%Lee un dato de entrada y escribe como dato de salida si aprueba
%o reprueba

clear all
clc

calif=input('Dame la calificación:\n');

switch calif

case{7.5 8 8.5 9 9.5 10}

fprintf('Felicidades, aprobó \n')

case{0 0.5 1 1.5 2 2.5 3 3.5 4 4.5}

fprintf('Lo siento, reprobó \n')

otherwise

fprintf('Lo siento, no fue suficiente y reprobó \n')


end

3.1.4 La instrucción for

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

for variable = expresión


declaración 1
declaración 2
declaración n
end

En esta instrucción, si se cumple que variable == expresión entonces se ejecutan las


declaraciones 1 a n para continuar después con la declaración que está después del end. Si no se
cumple, ya no se ejecutan las declaraciones 1 a la n y la siguiente declaración que se ejecuta es la
que esta después del end. Es posible que las declaraciones 1 a la n no se ejecuten ni una sola vez.

79
Ejemplo 4. Uso de la instrucción for

clear all
clc

%Calcula la suma de los primeros 10 enteros

suma=0

for i=1:10

suma=suma+i;

end

fprintf('La suma es %g. \n',suma)

Ejemplo 4b. Uso de la instrucción for

clear all
clc

%Calcula la suma solo de los números enteros pares entre 1 y 10

suma=0

for i=0:2:10

suma=suma+i;

end

fprintf('La suma es %g. \n',suma)

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)

El factorial de n donde n es un entero se define por:


n!= 1x2x3x….xn

Esta operación se puede ejecutar con un for como se muestra a continuación:

%Cálculo del factorial de un número


clear all
clc
n=input('Deme un entero no negativo \n');

factorial_n=1;
for i=1:n
factorial_n=factorial_n*i;
end

fprintf('El factorial de %g es %g.', n, factorial_n)

Ejemplo 6. Uso de un for anidado

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

Que se puede efectuar con:


%Uso de un for anidado
clear all
clc
%Calcula la suma de los elementos de una matriz de nxm

n=input('Dame el número de renglones \n');


m=input('Dame el número de columnas \n');

%Lee los elementos


%Inicializa la suma

suma=0;

%Lee los elementos y los suma

for i=1:n
%Lee los elementos del renglón i y los suma

for j=1:m

fprintf('Dame el elemento %g, %g',i,j);


a(i,j)=input(' de la matriz \n');
suma = suma+a(i,j);
end
end

fprintf('La suma total es %g', suma)

79
3.1.5 La instrucción while

La instrucción while sirve para repetir un conjunto de declaraciones e instrucciones un número


indeterminado de veces. La diferencia con el for es que éste se ejecuta un número de veces
determinado. La sintaxis de while es.

while condición
declaración 1
declaración 2
.
.
.
Declaración n
end

La manera como un while funciona es la siguiente. Si la condición no se cumple, entonces se ejecuta


la primera instrucción después del end. Si la condición se cumple, se ejecutan todas las
declaraciones de la 1 hasta n.

Ejemplo 7. Uso de la instrucción while

%Este programa calcula el volumen de esferas de radio 1-5

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

4.1 Variables simbólicas

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)

Por ejemplo, si se quiere trabajar con una función

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

Nota: Para quitar la restricción de que x, y son reales usamos

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

>> pretty (derivada_f)

2
3x+2

Nótese que el comando pretty hace que la ecuación se escriba como lo hace un editor de
ecuaciones.

Para integrar usamos el comando int(f). Entonces:

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

c) Ventana principal de funtool

4.3 Gráficas de funciones

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

Figura 4.1 Gráfica de la función f(x)= sen(x)

Ejemplo 1: Cálculo de funciones discontinuas

Este ejemplo contiene parte de los comandos vistos en capítulos anteriores.

%Calcula funciones discontinuas

%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”

Leonhar Euler (1707-1783) complementa la idea de Bernoulli. Euler afirma:

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.

Más tarde Lagrange propuso la notación siguiente:

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.

5.1 Gráficas en dos dimensiones

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.

X=linspace (x1, x2,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=linspace (0,5,6)

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

y=|x| sen (x)

Si definimos y como y= abs(x)*sin (x), ya que estamos tratando con vectores, usamos:

y=abs(x).*sin(x)

donde .* indica multiplicación de vectores término a término. Entonces:

>> x=linspace(-50,50,400);
>> y= abs(x).*sin(x);
>> plot(x,y)

Nos da la gráfica de la figura 5.1

79
Figura 5.1

Gráfica de |x| sen (x)

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

Dos curvas en la misma figura usando


pares x, y.

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.

5.2.1 Gráficas con el comando plot3

La sintaxis para este comando es

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.

Ejemplo 1: Obtener la gráfica de la espiral dada por:

X= sen t
Y= cos t
Z= t

%Gráficas en 3 dimensiones "Espiral"


clear all
t=0:pi/50:10*pi;
x=sin(t);
y=cos(t);
plot3(x,y,t)
title('Espiral'),xlabel('sen(t)'),ylabel('cos(t)'),zlabel('t'),grid on

Figura 5.3
Gráfica de la espiral

79
5.3 Gráficas de mallas (mesh)

Las funciones que se pueden graficar son de la forma:

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:

[x,y] = meshgrid (xi,yi: inc: xf,yf)

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.

5.4 Gráficas de superficie (surf)

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.

Ejemplo de Gráficas de mallas

%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;

Para derivar f(x) usamos el operador diff (f):

>> syms x
>> f=2*x^2;
>> diff(f)

ans =

4*x

Para calcular la segunda derivada de f(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= diff(f,y)

f2 =

cos(x*y)*x

>> f3= diff (f)

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.

Ejemplo 6.1.1 Derivación utilizando los conceptos de programación.

%Encontrar la gráfica de la derivada de la función f= 2x2+3x-5 en un


intervalo de Xϵ[0, 10]

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

Ejemplo 6.1.2 Derivación utilizando los conceptos de programación.

Encontrar la gráfica de la derivada de la función f= x5-3x4-11x3+27x2+10x-24 en un intervalo de Xϵ[-


4, 5]

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)

Gráfica del Ejemplo 6.1.2

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)

indica que la variable de integración es y.

Para las integrales definidas


b b

 f (x)dx,  f (v)dv
a a
Se usa
int (f, a, b), int (f, v, a, b)

Ejemplo 6.2.1

Para evaluar  sen(x)dx


>> syms x
>> int(sin(x))

ans =
-cos(x)

Ejemplo 6.2.2

Para evaluar  2xdx


0
Tenemos que:

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

Ejemplo 6.2.4 Integración utilizando los conceptos de programación.

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.

Grafico del ejemplo 6.2.4

Ejemplo 6.2.5 Integración utilizando los conceptos de programación.

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)

Gráfico del ejemplo 6.2.5

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.

Empezaremos por describir cómo se resuelven ecuaciones diferenciales de primer orden.

Ejemplo 7.1

Supongamos que se tiene la ecuación diferencial:

y'+ty = 1 con y(1) = 0 (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)

El código para generar el archivo de función es el siguiente:

Hoja 1:
function y_prima=primero(t,y)

y_prima=1-t*y

Nota 1: Donde function indica que es un archivo de función, y_prima=primero(t,y) le indica a


Matlab que la función se llamará “primero” y que consiste en dos arreglos t y 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)

La segunda línea del programa [t,y]=ode23(@primero,[1 5],0), le indica a MATLAB que


se generarán dos arreglos t y y y se solucionará el problema con ode23 que tiene la siguiente
estructura:

ode23(@nombre_de_la_función_a_resolver, [intervalo de la variable t],condición


inicial y(a)=b).

En este caso el intervalo de t es de 1 a 5, con lo que y(1)=0.

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

Gráfico del Ejemplo 7.1

7.1 Ecuaciones diferenciales de orden n.

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:

y(n) = f (t, y, y', y'',...y(n−1) )

Se puede utilizar la siguiente sustitución: 




u1 = y 
u2 = y' (1)
u3 = y''


u n = y (n−1)

Lo cual generará un sistema de ecuaciones acopladas de la forma:

u'i  = ui +1  (2)

Con i = 1,2,3…,n.

79
Ejemplo 7.2 Ecuaciones Diferenciales con ecuación de Bessel

Sea la ecuación de Bessel:

t 2 y''+ty'+(t 2 − 2 )y = 0

Despejando la derivada de mayor orden de (2), se puede reescribir como:

y'  2
y'' = − − 1 − 2  y
t  t 

Aplicando las sustituciones dadas en (1):

u1 = y
u2 = y'

y sustituyendo en se genera el sistema de ecuaciones acopladas:

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)];

Debe guardarse con el nombre “ecbessel”.

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:

*y(0), y’(0), y’’(0),…, y(n)(0)].

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

[x,y]=ode23(@ecbessel,[0.1 35],[1 3]);

y1=y(:,1);

y2=y(:,2);

subplot(2,1,1), plot(x,y1), title ('Función y'), grid on, hold on

subplot(2,1,2), plot(x,y2), title('Primera derivada de y'), grid on, hold


on

Nota: Recuerde que la ecuación diferencial se resuelve ejecutando este último archivo.

Finalmente, Matlab presentará la solución siguiente:

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

Solución del Ejemplo 7.2

79
Visión Cultural

Friedrich Wilhelm Bessel (1784-1846)

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.

En la investigación de problemas relacionados con perturbaciones planetarias, introdujo en


matemáticas las funciones de Bessel como solución a ciertas ecuaciones diferenciales. Las funciones
son de gran importancia para determinar la distribución y el flujo del calor o la electricidad a través de
un cilindro circular, y para la solución de problemas relacionados con el movimiento ondulatorio, la
elasticidad y la hidrodinámica.

79
Capítulo 8

Polinomios

79
Una clase muy especial de funciones son los polinomios. Un polinomio es de la forma

p(x) = an x n + an−1 xn−1 ++ a x + a


1 0

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+

Para el último ejemplo, en MATLAB se obtiene el polinomio como:

>>poli=[-2 sqrt(7) 5]

poli =

-2.0000 2.6458 5.0000

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á:

>> x=[1 -1 2 5 6 9];

>> polyval(poli,x)

ans =

5.6458 0.3542 2.2915 -31.7712 -51.1255 -133.1882

Para graficar un polinomio sólo definimos los vectores x, y como:

79
>> x=linspace (0, 2,100);

>> poli=[6 3 -7 0.4];

>> y=polyval (poli,x)

>> plot(x,y)

>> grid

Que nos da la figura 8.1

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

Figura 8.1 Gráfica del polinomio p(x)=6x3+2x2-7x+0.4

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.

Dadas las raíces de un polinomio se puede obtener el polinomio original con:

>> a=poly(raices)

a= 1.0000 0.5000 -1.1667 0.0667

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=

6.0000 3.0000 -7.0000 0.4000

El producto de dos polinomios es otro polinomio. Para multiplicar dos polinomios usamos el
comando conv (polinomio 1, polinomio 2). Por ejemplo:

>> poli2=[3 -4 7];

>> poli1=[4 -2 0 1];

>> conv(poli1, poli2)

ans =

12 -22 36 -11 -4 7

Que corresponde al polinomio

p(x) = 12x5 − 22x4 + 36x3 −11x2 − 4x + 7

Para dividir polinomios usamos el comando deconv que tiene la sintaxis

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

>> a=[1 6 24 50 77 84 64];

>> b=[1 4 9 16];

>> [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:

q(x) = x3 + 2x2 + 7x −12 y r(x) = 30x2 + 80x + 256

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.

>> a=[1 6 24 50 77 84 64];

>> b=[0 0 0 1 4 9 16];

>> c=a+b

c=

1 6 24 51 81 93 80

Para derivar un polinomio se usa el comando polyder(polinomio). Para el polinomio a obtenemos:

>> polyder(a)

ans =

6 30 96 150 154 84

79
Visión Cultural

Historia de los Polinomios

La resolución de ecuaciones algebraicas, o la determinación de las raíces de polinomios, está entre


los problemas más antiguos de la matemática. Sin embargo, la elegante y práctica notación que
utilizamos actualmente se desarrolló a partir del siglo XV.

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)

Donde x, y son los vectores de datos y n es el orden del polinomio deseado.

Ejemplo 9.1

Supongamos que se tiene la tabla 9.1 que contiene datos de una medición.

Tabla 9.1 Datos de medición


x y
0 0
1 1
2 3.3
3 2.2
4 5.6
5 4.4
6 0

Una gráfica de estos datos la obtenemos con:

>> x=[0,1,2,3,4,5,6];

>> y=[0,1,3.3,2.2,5.6,4.4,0];

>> plot(x,y,'*k')

Figura 9.1 Gráfica de los puntos x= [0, 1, 2, 3, 4, 5, 6]

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=

-0.1583 1.0024 -0.3060 0.2190

Lo que nos indica que el polinomio obtenido es:

a(x) = −0.1583x3 +1.0024x2 − 0.3060x + 0.2190

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

Gráfica de los puntos x=[0, 1, 2, 3, 4, 5, 6) y


del polinomio de interpolación de grado 3.

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=

-0.0087 0.0718 -0.1301 -0.1960 1.6957 -0.0618

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

Gráfica de los puntos

X=[0, 1, 2, 3, 4, 5, 6] y del polinomio de interpolación de quinto grado

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

Método vectorial, forma polinomial


Tanto el numerador N(s) como el denominador D(s), pueden representarse como un vector renglón.
El vector numf que representa al numerador, contiene los coeficientes de este, mientras denf los
coeficientes del denominador. Se usa el comando F = tf (numf, denf), donde F es un objeto
lineal e invariante en el tiempo (LTI).
Ejemplo

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

También podría gustarte