Trabajo Autonomo 10
Trabajo Autonomo 10
Trabajo Autonomo 10
Realizar un resumen del siguiente video, realice el resumen en Word, adjunte códigos e
imágenes necesarias que le aplica dicha información a ejercicios similares, guarde los
scripts de forma ordenada y poniendo atención a la o las carpetas en donde se guardan.
Matlab permite calcular la solución de diversas ecuaciones diferenciales EDO usando sus
solvers interno.
Matlab solo calcula soluciones numéricas de sistemas de ecuaciones diferenciales de primero
orden. Para resolver ecuaciones diferenciales de orden superior se deben convertir, mediante
un cambio de variables, en ecuaciones diferenciales de primer orden.
Para definir el sistema de ecuaciones en Matlab, primero se debe manipular manualmente dicho
sistema para que tenga la forma:
𝒅𝑽
= 𝒇(𝒕, 𝑽)
𝒅𝒕
Donde:
𝑉 = 𝑒𝑠 𝑢𝑛 𝑣𝑒𝑐𝑡𝑜𝑟 𝑐𝑜𝑛 𝑙𝑎𝑠 𝑓𝑢𝑛𝑐𝑖𝑜𝑛𝑒𝑠 𝑑𝑒𝑙 𝑠𝑖𝑠𝑡𝑒𝑚𝑎
Un problema de EDO es rígido si la solución que se busca varía lentamente, pero hay
soluciones cercanas que varías rápidamente, por lo que el método numérico se ejecuta en
pequeños pasos para conseguir un resultado adecuado.
La rigidez no es más que un problema de eficiencia. Si no interesa el tiempo que el algoritmo
le lleva para obtener la solución, entonces no habría preocupación por la rigidez.
[ts, x1] = ode45(@ (t, x) modelo (t, x, u, par), tspan, x0);
Donde tspan = [t0 tf] integra el Sistema de ecuaciones diferenciales y’=f (t, y) de t0 a tf con
condiciones iniciales x0. Cada fila del array de soluciones x1 corresponde a un valor devuelto
en el vector de columna ts.
Todos los solvers de ODE de MATLAB pueden resolver sistemas de ecuaciones con la forma
y’=f (t, y), o bien problemas que impliquen una matriz de masas, M (t, y) y’=f (t, y). Los solvers
utilizan sintaxis similares.
En sistemas dinámicos, el oscilador de van der Pol es un oscilador con amortiguamiento no
lineal. Su evolución temporal obedece a una ecuación diferencial de segundo orden:
𝒅𝟐 𝒙 𝒅𝒙
− 𝝁 ( 𝟏 − 𝒙𝟐 ) +𝒙 =𝟎
𝒅𝒕 𝒅𝒕
En la que x es la posición, función del tiempo t, y µ es un parámetro escalar que gobierna la no
linealidad y el amortiguamiento.
𝒙𝟏 = 𝒙
𝒙𝟐 = 𝒙
𝒙̇ 𝟏 = 𝒙̇ = 𝒙𝟐
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1;
tspan=[0 10];
%Solución de la EDO
[ts,y] = ode45(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,1))
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1;
tspan=[0 30];
u=0;
%Solución de la EDO
[ts,y] = ode45(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,1))
Haciendo un cambio:
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1000;
tspan=[0 3000];
u=0;
%Solución de la EDO
[ts,y] = ode45(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,1))
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1000;
tspan=[0 3000];
u=0;
%Solución de la EDO
[ts,y] = ode23(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,1))
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1000;
tspan=[0 3000];
u=0;
%Solución de la EDO
[ts,y] = ode15s(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,1))
• Matlab:
• Script:
%Van der pol
clc
clear
close all
%Caso 1
x0 = [2 0]; %Condición Inicial
mu=1;
tspan=[0 30];
u=0;
%Solución de la EDO
[ts,y] = ode45(@(t,x)VanDerPol(t,x,u,mu),tspan,x0);
figure
plot(ts,y(:,2))
VIDEO 2: RESOLVER NUMÉRICAMENTE ECUACIÓN DIFERENCIAL
ORDINARIA USANDO ode45 de MATLAB.
4𝑥̈ + 𝑥̇ + 5𝑥 = 5 sin(2𝑡)
𝑥̇ 1 = 𝑥2
5 sin(2𝑡) − 𝑥̇ − 5𝑥
𝑥̇ 2 =
4
El siguiente paso es elaborar un script en Matlab en el que se define los arreglos de tiempo y
condiciones iniciales, así como el uso de la función ode45.
• Matlab
• Script:
%Universdid de Guayaquil
%Control automático de procesos
clear variables
clc
close all
t = (0:0.01:5);
condIni = [1;2];
[T,Y] = ode45(@resolverODE,t,condIni)
El tercer paso, en la función de Matlab se debe reescribir las dos ecuaciones diferenciales de
la siguiente forma:
𝑥̇ 1 = 𝑥2 → 𝑑𝑥𝑑𝑡(1) = 𝑥(2)
5 sin(2𝑡) − 𝑥̇ − 5𝑥
𝑥̇ 2 = → 𝑑𝑥𝑑𝑡(2) = (5 sin(2𝑡) − 𝑥(2) − 5𝑥(1))/4
4
• Matlab:
• Script:
function dxdt = resolverODE(t,x)
dxdt(1) = x(2);
dxdt(2) = (5*sin(2*t)-x(2)-5*x(1))/4;
dxdt = dxdt';
end
Ahora para ejecutar con gráficas se modifica el Script del ejemplo:
• Matlab:
• Script:
%Universdid de Guayaquil
%Control automático de procesos
clear variables
clc
close all
t = (0:0.01:5);
condIni = [1;2];
[T,Y] = ode45(@resolverODE,t,condIni);
x = Y(:,1);
xPunto = Y(:,2);
plot(t,x)
figure()
plot(t,xPunto)
CARPETA: