2. ¿Qué es MATLAB?
MATLAB es un programa interactivo para computación numérica y
visualización de datos. Es ampliamente usado por ingenieros de control, en el
análisis y diseño, posee además una extraordinaria versatilidad y capacidad
para resolver problemas en matemática aplicada, física, química, ingeniería,
finanzas y muchas otras aplicaciones. Está basado en un sofisticado software
de matrices para el análisis de sistemas de ecuaciones. Permite resolver
complicados problemas numéricos sin necesidad de escribir un programa.
El nombre de MATLAB proviene de la contracción de los
términos MATrix LABoratory
3. Ventajas del MATLAB
Su programación requiere menos tiempo que otros lenguajes como
FORTRAN, C, PASCAL, etc.
Utiliza un lenguaje más cercano a la matemática.
Permite definir fácil y rápidamente nuevas funciones que se incorporan a
MATLAB mediante el toolboxes.
Posee grandes capacidades gráficas.
4. ¿ Qué se puede realizar en MATLAB ?
Análisis de datos.
Polinomios
Gráficos 2D
Gráficos 3D
Ajuste de curvas
Interpolación
Análisis numérico
Resolución de ecuaciones diferenciales
5. Command Windows: Donde se ejecutan todas las instrucciones y programas.
Se escribe la instrucción o el nombre del programa y se da click en Enter.
Command History: Muestra los últimos comandos ejecutados en Command
Windows. Se puede recuperar el comando haciendo doble click.
Current directory: Situarse en el directorio donde se va a trabajar.
Help: ayuda sobre diversos temas de MATLAB (también se puede usar desde
comand windows)
Workspace: Para ver las variables que se están usando y sus dimensiones (si
son matrices)
Editor del Matlab: Todos los ficheros de comandos Matlab deben de llevar la
extensión .m
Elementos básicos del escritorio de MATLAB
7. Características básicas de MATLAB
-El prompt de Matlab es >>. El usuario escribe a continuación.
-Para ejecutar se pulsa la tecla Enter.
-Se pueden recuperar comandos anteriores navegando con las flechas y .
-Se distinguen mayúsculas y minúsculas.
-Todos los comandos de MATLAB se escriben en minúsculas y los argumentos se
envían entre paréntesis separados por coma.
-El carácter % se utiliza para insertar comentarios. Todo lo que sigue ( en la misma
línea) es ignorado por MATLAB.
-Si se teclea al final de una instrucción ‘ ; ‘ ésta se ejecuta pero el resultado no se
visualiza por pantalla.
-Dos comandos se pueden insertar en la misma línea separados por “, “ o por “ ; “.
La diferencia entre los dos es que con “ , “ se muestran los resultados de las
operaciones mientras que con “ ; “ la operación se ejecuta pero no se visualiza.
-El comando (>>clc) limpia o borra toda la ventana de comandos de MATLAB.
8. Características básicas de MATLAB ( continuación)
-El circunflejo ^ es la potenciación: >> 3^5
-El término ans es la primera variable que vemos de MATLAB. Concretamente,
guarda la última salida dada por MATLAB (answer): >> 4+6 ans = 10
-La raíz cuadrada se puede calcular bien elevando a ½(^(1/2)) o bien utilizando el
comando (>> sqrt).
-La prioridad de ejecución entre operaciones matemáticas es la habitual: primero
se calcula la potenciación ^ , posteriormente los productos y divisiones * , / y en
último lugar, las sumas y restas + y - . Este orden se puede cambiar utilizando
paréntesis. La regla es sencilla: dada una expresión, lo primero que se calcula es lo
que está dentro de cada paréntesis. Esta regla es recursiva, es decir, si dentro de
un paréntesis hay otros paréntesis, para evaluar el primero se empezará con los
paréntesis interiores.
-Help, helpwin y lookfor son comandos de ayuda: Ej. (>> help sin)
-El comando (>>demo) hace una demostración de las diferentes aplicaciones de
MATLAB.
-Para cerrar o finalizar el uso de MatLab se usa el comando (>> quit) .
9. Resolución de ecuaciones diferenciales con MATLAB
Existen varios métodos para resolver ecuaciones diferenciales, los cuáles con
adecuaciones necesarias se usan para resolver sistemas de ecuaciones
diferenciales. Entre los más usados tenemos el método de Euler, de Euler
Mejorado ó Euler-Gauss o método de Heun, método de la serie de Taylor,
método de Milne, método de Adams-Bashforth-Moulton, método de Hamming y
los métodos de Runge-Kutta. MatLab tiene implementado módulos básicos para
resolver ecuaciones diferenciales y sistemas de ecuaciones diferenciales en
forma directa, es decir, sin programar el algoritmo numérico. A continuación se
describen los comandos más importantes empleados en MatLab para la
resolución de ecuaciones diferenciales:
ode45.(Ordinary differential equation solver of 4th and 5th order). Es un
método de un solo paso, es decir, para averiguar un punto sólo se basa en el
calculado anteriormente. Está basado en la fórmula explícita de Runge-Kutta
de 4º y 5º orden (Par de Dormand-Princce). En general, este método arroja
resultados satisfactorios para la mayoría de los modelos continuos y resulta
ser un bueno como primera aproximación cuando no se conoce mucho del
sistema en estudio.
10. Resolución de ecuaciones diferenciales con MATLAB
ode23.Es un método de un solo paso basado en la fórmula de Runge-Kutta de
2º y 3º orden (par de Bogacki-Shampine). Este método resulta más eficiente
que ode45 cuando las tolerancias del error no son tan estrictas y el sistema
presenta un leve grado de rigidez.
ode113.Es un método multipaso, es decir, necesita conocer de varios puntos
anteriores para calcular la solución actual. Es el método de orden variable de
Adams-Bashforth-Moulton. Puede resultar más eficiente que ode45 cuando las
tolerancias del error se tornan muy estrictas.
ode15s.Es un método multipaso de orden variable (entre uno y cinco) basado
en las fórmulas de diferenciación numérica (NDFs). Si bien las NDFs están
relacionadas con las fórmulas de diferenciación por atraso (BDFs o método de
Gear), estas NDFs son mucho más eficientes. Este método es recomendable si
el sistema es rígido (o un problema diferencial algebraico) o bien si el ode45
falla o resulta ineficaz.
11. ode23s.Es un método de un solo paso basado en la fórmula modificada e
Rosenbrock de segundo orden. Puede ser más eficiente que ode15s para
altas tolerancias y en sistemas rígidos.
Resolución de ecuaciones diferenciales con MATLAB
ode23t.Es un método que utiliza interpolación libre para resolver ecuaciones
diferenciales ordinarias y algebraicas por la regla trapezoidal, cuando el
sistema es semirígido.
ode23tb.Ecuaciones diferenciales ordinarias mediante TR-BDF2. Es una
fórmula implícita de RungeKutta, que utiliza en una primer paso la regla
trapezoidal y en un segundo paso las fórmulas de diferenciación por atraso
orden dos. Más eficiente que ode15s para tolerancias altas.
bvp4c. Ecuaciones diferenciales ordinarias con valores en la frontera.
12. Resolución de ecuaciones diferenciales ordinarias con MATLAB
Las ecuaciones diferenciales ordinarias se pueden resolver en MATLAB con el
comando “dsolve”. Este comando se utiliza para resolver una sola ecuación o
bien un sistema de ecuaciones diferenciales.
Una ecuación diferencial ordinaria de primer orden es una ecuación que contiene
la derivada de la variable dependiente. Si (t) es la variable independiente, e (y)
es la variable independiente, la ecuación diferencial ordinaria de primer orden se
pude escribir de la forma:
Una ecuación diferencial de segundo orden contiene la segunda derivada de la
variable dependiente. Su forma general es:
La solución para estas ecuaciones es una función y= f(t) que satisface la
ecuación. La solución puede ser general o particular. Una solución general
contiene constantes. En la solución particular las constantes deben tener valores
numéricos específicos tal que la solución satisfaga las condiciones iniciales.
13. Solución general en MATLAB ( reglas a tener en cuenta )
Para obtener una solución general, el comando dsolve debe tener la forma:
dsolve (‘eq’) o dsolve(‘eq’,’var’)
-eq es la ecuación a resolver. Debe ser introducida como cadena, incluso si las
variables que contiene son objetos simbólicos.
-Se puede usar cualquier letra (en mayúsculas o minúsculas) como variable
dependiente, excepto D.
-En el comando dsolve (‘eq’) MATLAB toma t como la variable independiente por
defecto.
-En el comando dsolve (‘eq’, ‘var’) el usuario puede indicar la variable
independiente tecleándola en forma de cadena dentro del parámetro var.
-Cuando se teclea la ecuación, la letra D indica diferencial o derivada. Si (y) es la
variable dependiente y (t) es la independiente, Dy significa dy/dt. Por ejemplo, la
ecuación dy/dt + 3y =100, se introduciría como: ‘Dy + 3 * y = 100’
14. Solución general en MATLAB (continuación)
-La segunda derivada se representa como D2, la tercera derivada como D3,
y así sucesivamente. Por ejemplo, la ecuación:
Se introduciría en el MATLAB como ‘D2y + 3 * Dy + 5 * y = sin (t)’
-En la solución que ofrece MATLAB, se utilizan C1, C2, C3, etc., como
constantes de integración.
Por ejemplo, veamos el código correspondiente a una solución general para
la ecuación diferencial de primer orden:
Según MATLAB: Traducción de la solución general
>>dsolve(‘Dy =4*t + 2*y’)
ans =
C1*exp(2*t) - 2*t - 1
y = C1 e 2t - 2t - 1
15. Solución general en MATLAB (continuación)
A continuación veamos una solución general para la ecuación diferencial
ordinaria de segundo orden:
Según MATLAB:
>>dsolve(‘D2x + 2 * Dx + x = 0’)
ans =
C1*exp(-t) + C2*t*exp(-t)
Traducción de la solución general:
x = C1 e -t + C2 t e -t
Si MATLAB no pude encontrar una solución para la ecuación, éste devuelve un
objeto simbólico vacío, seguido del mensaje: “ Warning : explicit solution could
not be found” (Aviso : podría no existir una solución explícita.)
16. Solución general en MATLAB (continuación)
Los ejemplos siguientes muestran la resolución de ecuaciones diferenciales que
contienen variables simbólicas, además de variables dependientes e
independientes.
>>dsolve (‘Ds = a* x^2’) La variable independiente es t (por defecto)
MATLAB resuelve la ecuación:
ans =
a*t*x^2 + C1 Se visualiza la solución: s = ax2t + c1
>>dsolve (‘Ds = a* x^2’, ‘x’) La variable independiente es x
MATLAB resuelve la ecuación:ans =
1/3*a*x^3+C1
Se visualiza la solución: s =⅓ ax3 + C1
a)
b)
17. Solución general en MATLAB (continuación)
>>dsolve(‘Ds = a*x^2’, ‘a’)
La variable independiente se define como a.
MATLAB resuelve la ecuación:ans =
1/2*a^2*x^2+C1 Se visualiza la solución: s =1/2a2 x2+ C1
Solución particular
Si las condiciones iniciales o “en la frontera” han sido especificadas, se puede
obtener una solución particular para una ecuación diferencial ordinaria. Una
ecuación de primer orden requiere de una condición, una de segundo orden
requiere dos condiciones , y así sucesivamente. Para obtener una solución
particular se deben utilizar las siguientes sintaxis del comando dsolve.
Para una EDO de primer orden:
Para una EDO de orden superior:
dsolve ( ‘eq’, ‘cond1’, ‘var’)
dsolve ( ‘eq’, ‘cond1’, ‘cond2’,… ‘var’)
18. Solución particular (continuación)
Para resolver ecuaciones de orden superior se necesitan condiciones adicionales
en la frontera que deben ser introducidas por parámetro. Si el número de
condiciones es menor que el orden de la ecuación, MATLAB devolverá una
solución que incluye las constantes de integración ( C1, C2, C3, etc.)
Las condiciones de frontera se teclean en forma de cadena, de la siguiente
manera:
El argumento ‘var’ es opcional. Se puede utilizar para definir la variable
independiente en la ecuación. Si no se introduce ningún valor se toma por
defecto t.
19. Solución particular (continuación)
Por ejemplo, veamos el código para resolver la ecuación diferencial de primer
orden :
Con una condición inicial y(0) = 5:
>>dsolve(‘Dy + 4*y = 60’ ,’y(0) =5’)
ans =
15 - 10*exp(-4*t) Se visualiza la solución: y = 15 -10e-4t
20. Solución particular (continuación)
A continuación se muestra, en este otro ejemplo , el código MATLAB para
resolver la ecuación diferencial de segundo orden:
Con las condiciones siguientes: a) b)
>> dsolve('D2y-2*Dy+2*y=0','y(0)=1','Dy(0)=0')
ans =
exp(t)*cos(t) - exp(t)*sin(t) La solución se visualiza: y = et cos(t) – et sen(t)
La solución se puede simplificar utilizando el comando factor.
>> factor (ans)
ans= [ exp(t), cos(t) - sin(t)] La solución se visualiza: y = et (cos(t) – sen(t))
21. Resolución de ejercicios
1) Calcule la solución general a la siguiente ecuación diferencial:
2) Calcule la solución a la siguiente ecuación diferencial que satisface las
condiciones iniciales dadas.
22. Solución de los ejercicios 1 y 2
1)
>> dsolve('D2y-4*y=5','y(0)=0','Dy(0)=1')
ans =
(3*exp(-2*t))/8 + (7*exp(2*t))/8 - 5/4
2)
>> dsolve('D2y+3*Dy-2*y=0')
ans =
C1*exp(t*(17^(1/2)/2 - 3/2)) + C2*exp(-t*(17^(1/2)/2 + 3/2))
23. Graficando ecuaciones diferenciales en MATLAB
Ejemplo 1, consideremos la ecuación diferencial:
Solución general en MATLAB:
>> dsolve('Dy=2*x*y','x')
ans =
C1*exp(x^2)
Sabemos que esta constante C1 se determina usando una condición inicial para
la ecuación diferencial, por ejemplo y(0) = 5. Para resolver la ecuación
diferencial con esta condición inicial necesitamos el código:
>> dsolve('Dy=2*x*y','y(0)=5','x')
ans =
5*exp(x^2)
24. Graficando ecuaciones diferenciales en MATLAB (cont.)
Para graficar esta solución requerimos de un intervalo sobre el cual se graficará
la solución obtenida. Por ejemplo, si deseamos graficar sobre el intervalo [−2, 3]
podemos hacer uso del siguiente código:
>> x=-2:0.05:3;
>> y=eval(vectorize(ans));
>> plot(x,y)
25. Graficando ecuaciones diferenciales en MATLAB(cont.)
Ejemplo 2, consideremos la ecuación diferencial:
Solución general en MATLAB:
>> dsolve('Dy=0.1*y-0.02*y^2','x')
ans =
-5/(exp(C1 - x/10) - 1)
Sabemos que esta constante C1 se determina usando una condición inicial para
la ecuación diferencial, por ejemplo y(0) = 0.01. Para resolver la ecuación
diferencial con esta condición inicial necesitamos el código:
>> dsolve('Dy=0.1*y-0.02*y^2','y(0)=0.01','x')
ans =
5/(exp(log(499) - x/10) + 1)
26. Graficando ecuaciones diferenciales en MATLAB (cont.)
Para graficar esta solución requerimos de un intervalo sobre el cual se graficará
la solución obtenida. Por ejemplo, si deseamos graficar sobre el intervalo [0, 120]
podemos hacer uso del siguiente código:
>> x=0:1.5:120;
>> y=eval(vectorize(ans));
>> plot(x,y)