Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resolucion de Eds Con Mathcad y Matlab 150710045619 Lva1 App6892
Resolucion de Eds Con Mathcad y Matlab 150710045619 Lva1 App6892
valor inicial o bordes provista en el solve block. La ODE debe ser lineal en
sus derivadas ms altas y el nmero de condiciones debe ser igual al orden
de la ODE.
.
Argumentos:
x es la variable de integracin. x debe ser real.
b es el punto terminal del intervalo de integracin. b debe ser real.
step (opcional) es el nmero de pasos usados internamente cuando se
calcula la solucin.
Uso de la funcin odesolve:
Pasos para usar la funcin odesolve para resolver una ecuacin diferencial
ordinaria:
Tipee la palabra Given para arrancar el
solve block.
Notes:
Ejemplo:
y' ( 0)
y Odesolve ( x 150)
2
1.465
1
y( x)
0
0.698
10
10
Given
4
d2
2
dt
f ( t) f ( t)
f ( 0)
f ( 5)
13.5
f Odesolve ( t 5)
30
20
f ( t)
10
0
S.f = exp(t)*cos(t)+2*exp(t)*sin(t)
S.g = -exp(t)*sin(t)+2*exp(t)*cos(t)
Y = dsolve('Dy = y^2*(1-y)')
Advertencia: No puede ser encontrada solucin explcita; se retorna la
solucin implcita.
Y=
t+1/y-log(y)+log(-1+y)+C1=0
dsolve('Df = f + sin(t)', 'f(pi/2) = 0')
dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')
S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')
S = dsolve('Du=v, Dv=w, Dw=-u','u(0)=0, v(0)=0, w(0)=1')
w = dsolve('D3w = -w','w(0)=1, Dw(0)=0, D2w(0)=0')
y = dsolve('D2y = sin(y)'); pretty(y)
Algunos comandos, tales como ode45 (un resolutor de ecuaciones
diferenciales en forma numrica), requiere que su primer argumento
sea una funccin para ser preciso o bien una funcin inline, como
en
ode45(f, [0 2], 1).
o una function handle, esto es, el nombre de una funcin built-in o
una funcin M-file precedida por el smbolo especial @, como en
ode45(@func, [0 2], 1)).
Ecuaciones Diferenciales Ordinarias
El objetivo de este laboratorio es aprender tcnicas para la resolucin numrica de
problemas de valores iniciales (P.V.I.) para ecuaciones diferenciales ordinarias
(E.D.O.) y sistemas de E.D.O.
Matlab tiene varios comandos para la resolucin numrica de P.V.I. para E.D.O.:
Resolutores de ecuaciones diferenciales.
Resolutores de problemas con valores iniciales para ODEs. (Si no tiene seguridad
acerca del stiffness, intente primero ODE45, luego ODE15S.)
[En matemtica, una ecuacin stiff es una ecuacin diferencial en los que determinados
Todos ellos tienen una sintaxis semejante. Por ejemplo, para resolver el P.V.I.
-0.1586
-0.0721
-0.1612
-0.0989
La salida que se presenta indica que los errores son efectivamente menores en
valor absoluto a 10E6.
La resolucin de P.V.I. para sistemas de E.D.O. se realiza mediante los mismos
comandos. En tal caso, f(t,y) debe ser una funcin a valores vectoriales (es
decir un vector columna de funciones) e y un vector columna de variables de la
misma dimensin. Adems, la condicin inicial yo tambin debe ser un vector
columna de la misma dimensin.
Por ejemplo, consideremos el P.V.I.
Por lo tanto los puntos (x(t), y(t)) solucin de este sistema de E.D.O, describen
la circunferencia unitaria.
Este sistema escrito vectorialmente resulta:
function Z=F(t,Y)
Z=[Y(2);-Y(1)];
Los siguientes comandos resuelven este P.V.I. en el intervalo [0, 2] y grafican
la curva (x(t), y(t)), para 0 < t< 2, que se obtiene:
[t,Y]=ode45('f',[0 2*pi],[1;0]);
plot(Y(:,1),Y(:,2));
As se obtiene la siguiente grfica:
eqn2='D2y+8*Dy+2*y=cos(x)';
inits2 = 'y(0)=0, Dy(0)=1';
y=dsolve(eqn2,inits2,'x')
y =
1/65*cos(x)+8/65*sin(x)+(-1/130+53/1820*14(1/2))*exp((-4+14(1/2))*x)
-1/1820*(53+14(1/2))*14(1/2)*exp(-(4+14(1/2))*x)
x=0:0.1:1;
z=eval(vectorize(y));
plot(x,z)
Given
100 y'' ( x) 10 y' ( x) 101 y( x)
1 x
50 cos
Given
1 x
50 cos
y' ( 0)
y Odesolve ( x 150)
2
1.465
1
y( x)
0
0.698
10
10
Eleccin de la particin.
En la aproximacin de esta solucin, el algoritmo ode45 ha seleccionado una
particin determinada del intervalo [0, 0.5], y MATLAB ha devuelto un valor de y
en cada punto de esta particin. A menudo es el caso en la prctica en que nos
gustara especificar la particin de valores en los que MATLAB devuelve una
aproximacin. Por ejemplo, slo puede ser que desee para aproximar y(0.1),
y(0,2), ..., y(0,5). Podemos especificar esto al introducir el vector de valores [0,
0.1, 0.2, 0.3, 0.4, 0.5], como el dominio en el ode45. Es decir, que utilizamos
xvalues=0:.1:.5;
[x,y]=ode45(f,xvalues,1)
x =
0
0.1000
0.2000
0.3000
0.4000
0.5000
y =
1.0000
1.1111
1.2500
1.4286
1.6667
2.0000
Opciones. Hay varias opciones disponibles para el resolutor ode45, dando al
usuario un control limitado sobre el algoritmo. Dos opciones importantes son la
tolerancia relativa y absoluta, respectivamente RelTol y AbsTol. En cada paso
del algoritmo ode45, un error se aproxima a ese paso. Si yk es la aproximacin
de y(xk) en el paso k, y ek es el error aproximado en este paso, a continuacin,
MATLAB elige su particin para asegurar
Sistemas de EDs
Resolver un sistema de EDs en MATLAB es muy similar a resolver una nica
ecuacin, aunque un sistema de EDs no puede ser definido como una funcin
inline debemos definirlo como un M-file.
Ejemplo. Resolver el sistema de ecuaciones de Lorenz
x0=[-8 8 27];
tspan=[0,20];
[t,x]=ode45(@lorenz1,tspan,x0);
Aunque no se dan aqu, la salida de este ltimo comando consiste en una
columna de las tiempos seguido por una matriz con tres columnas, la primera
de las cuales se corresponde con los valores de x en los tiempos asociados, y
lo mismo para la segunda y tercera columna para y y z. La matriz se ha
denotado x en la declaracin llamante ode45, y en general cualquier
coordenada de la matriz se puede especificar como x(m,n), donde m denota la
fila y n denota la columna.
En lo que se estar ms interesado es en referencia a las columnas de x, las
cuales se corresponden con valores de los componentes del sistema. En este
sentido, podemos denotar todas las filas o todas las columnas por un colon (:).
Por ejemplo, x(:,1) se refiere a todas las filas de la primera columna de la matriz
x, es decir, se refiere a todos los valores de nuestro componente original x. Con
esta informacin, podemos fcilmente trazar el atractor extrao de Lorenz, que
es un grfico de z en funcin de x:
plot(x(:,1),x(:,3))
Pasando parmetros
Al analizar el sistema de ecuaciones diferenciales, a menudo se quiere
experimentar con diferentes valores de los parmetros. Por ejemplo, en el
estudio de las ecuaciones de Lorenz se podra considerar el comportamiento
en funcin de los valores de , y . Por supuesto, una forma de cambiar
esto es manualmente volviendo a abrir el M-file lorenz1.m cada vez que se
quiere probar con nuevos valores, pero no slo es una forma lenta de hacerlo,
sino que es difcil de manejar para automatizar. Lo que podemos hacer en
cambio es pasar valores de los parmetros directamente a nuestro M-file a
travs de la instruccin de llamada ode45. Para ver cmo funciona esto, lo
primero es alterar lorenz1.m en lorenz2.m, el ltimo de los cuales acepta un
vector de parmetros que denotamos con p.
funtion XPRIME = lorenz2 (t, x, p);
% LORENZ: Calcula los derivados necesarios para resolver el
% ecuaciones de Lorenz.
sig = p (1), beta = p (2); rho = p (3);
XPRIME = * [-seal x (1) + * seal x (2); * rho x (1) - x (2) - x (1) * x (3)-beta * x
(3) + x (1) * x (2)];
Ahora puede enviar valores de los parmetros con ode45.
> p> = [10 08/03 28];
>> [t, x] = ode45 (@ lorenz1, tspan, x0, [], p);
Podemos enviar ahora los valores de parmetros con ode45.
p=[10 8/3 28];
[t,x]=ode45(@lorenz2,tspan,x0,[],p);
Ecuaciones de Segundo Orden
El primer paso en resolver una ED ordinaria de segundo orden (o ms) en
MATLAB es escribir la ecuacin como un sistema de primer orden. Como
ejemplo se retomar uno anterior. Tomando y1(x) = y(x) e y2(x) = y(x),
tenemos el sistema
x=0:0.01:1;
z = eval(vectorize(y));
plot(x,z)
Transformadas de Laplace
Una de las ms tiles transformadas en matemtica es la transformada de
Laplace. MATLAB tiene rutinas built-in para calcular la Transformada de
Laplace como su inversa. Por ejemplo, para computar la transformada de
f(t)=t2, simplemente tipee
syms t;
laplace(t^2)
ans =
2/s^3
Para invertir, digamos, F(s) = 1/(1+s), tipee
syms s;
ilaplace(1/(1+s))
ans =
exp(-t)
Problemas de contorno
Por diversas razones de mrito discutible mayora de los cursos de introduccin
a ecuaciones diferenciales ordinarias se centran principalmente en problemas
de valores iniciales (IVP). Otra clase de EDs que surgen a menudo en las
aplicaciones son los problemas de contorno (BVPs). Consideremos, por
ejemplo, la ecuacin diferencial
y''- 3y '+ 2y = 0 y (0) = 0 y (1) = 10,
sol.y
ans =
Columns 1 through 9
0 0.0950 0.2022 0.3230 0.4587 0.6108 0.7808 0.9706 1.1821
2.1410 2.4220 2.7315 3.0721 3.4467 3.8584 4.3106 4.8072 5.3521
Columns 10 through 18
1.4173 1.6787 1.9686 2.2899 2.6455 3.0386 3.4728 3.9521 4.4805
5.9497 6.6050 7.3230 8.1096 8.9710 9.9138 10.9455 12.0742 13.3084
Columns 19 through 25
5.0627 5.7037 6.4090 7.1845 8.0367 8.9726 9.9999
14.6578 16.1327 17.7443 19.5049 21.4277 23.5274 25.8196
donde c (x0, x0). Observando desde nuestra ecuacin que y(x0) = f(x0, y(x0)),
tenemos
(6.2)
Ahora podemos calcular y(x 2) de una manera similar usando el teorema de
Taylor para escribir
Una vez ms, tenemos desde nuestra ecuacin que y'(x 1) = f(x1, y(x1)), y as
Si eliminamos el trmino
donde el valor y(x1) requerido aqu puede ser aproximado por el valor de (6.2).
Ms generalmente, para cualquier k = 1, 2, ..., n - 1 se puede aproximar
y(xk+1) de la relacin
donde y(xk) se conocern a partir del clculo anterior. Al igual que con los
mtodos numricos de la integracin, es habitual en la prctica de tomar la
particin en subintervalos de igual anchura,
Si decimos que los valores de y0, y1, ..., yn denotan nuestras aproximaciones
para y en los puntos x0, x1, ..., xn (es decir, y0 = y(x0), y1 y(x1), etc), entonces
podemos aproximar y(x) sobre la particin de P calculando iterativamente
(6.3)
Ejemplo: Utilice el mtodo de Euler (6.3) con n = 10 para resolver la ecuacin
diferencial
Ahora tenemos el punto (x1, y1) = (.1,), y podemos utilizar esto y (6.3) para
calcular
Ahora tenemos (x2, y2) = (0.2, 3.1725), y podemos utilizar esto para calcular
Con x=0.01
[x,y]=euler1(f,0,1,pi,100);
plot(x,y)
y(0) = 1.
2
2
dx
y( x) 3
d
y( x) 7 y( x)
dx
4 x
contiene una segunda derivada la cual puede ser escrita como una primera
derivada:
d2
2
d d
y( x)
dx dx
y( x)
dx
y( x)
y1 ( x)
d
y0 ( x)
dx
y1 ( x)
d
y1 ( x)
dx
4 x 7 y0 ( x) 3 y1 ( x)
y1
DY ( x y)
4 x 7 y0 3 y1
rkfixed(y, x1, x2, npoints, D) Retorna una matriz en la cual (1) la primera
columna contiene los puntos en los cuales es evaluada la solucin y (2) las
columnas remanente contiene los valores correspondientes de la solucin y
sus primeras n-1 derivadas.
Argumentos:
y debe ser o bien un vector de n valores inicales u un valor inicial
nico.
y' 2 y
y''
1
y' ( 0)
y1
D ( t y)
y1 2 y0
1 1.2510
-3
1.004
2.999
2.510 -3
1.007
2.998
3 3.7510 -3
1.011
2.996
510
-3
1.015
2.995
5 6.2510
-3
1.019
2.994
7.510 -3
1.022
2.993
7 8.7510 -3
1.026
2.992
2
4
6
8
0.01
1.03
2.99
0.011
1.034
2.989
10
0.013
1.037
2.988
11
0.014
1.041
2.987
12
0.015
1.045
2.986
13
0.016
1.049
2.985
14
0.018
1.052
2.984
15
0.019
1.056
2.982
d2
2
dt
( t) g sin ( t)
( 0)
g 9.807
T 6
N 100
g sin X0
X1
D( t X)
0 T N D
0
P Bulstoer
n 0 1 N
1.384
P1 n
P2 n
1.384
P0 n
6
6
theta
derivative of theta
x sin
1
1 x sin
2
d 3.614 sec
Sistemas Stiff
Argumentos:
y debe ser o bien un vector de n valores inicales o un escalar.
x1, x2 son puntos extremos del intervalo sobre el cual la solucin
a las ecuaciones diferenciales ser evaluada. Los valores iniciales
en y son los valores en x1.
npoints es el nmero de puntos ms all del punto inicial para el
cual la solucin es aproximada. Esto controla el nmero de filas
(1 + npoints) en la matriz retornada por by Stiffb or Stiffr.
D es una funcin vector-valued n-element conteniendo las
primeras derivadas de las funciones desconocidas.
J es una funcin que retorna la matriz n por (n+1) cuya primera
columna contiene derivadas y cuyas filas remanentes forman la
matriz Jacobiana para el sistema de ecuaciones diferenciales.
Notes:
diseado para problemas stiff, tales como las rutinas de Matlab ode23s u
ode15s.
Ejemplo de ODE stiff
Un ejemplo de modelo matemtico, ms que una aplicacin prctica es:
Y' ( t)
Y( t) K Y( t) e
Y ( 0)
( K1) t
Y( t) e
10
10
0.001
0.905
Y ( t)
t 10
0.5
0
0
2 10
7
110
4 10
6 10
t
8 10
6
5
10
Y( t) e
0.99
Y ( t)
6.73810
t 0.01 0.02 5
0.5
0
0.01
3
t
5
5
Ejemplo:
Solve
para x < 0
yy
1
para x > 0
y''
D( x y)
( x 0) y0 ( x 0) y0
v10 1
v20 1
xf 0
< - y(-1)
load1 ( x1 v1)
v10
load2 ( x2 v2)
v20
< - y(1)
< - valor de intento para y(1)
sbval (v1, v2, x1, x2, D, load, score) Retorna un vector conteniendo
aquellos valores iniciales dejados sin especificar en x1.
Argumentos:
sbval computa los valores iniciales que la solucin debe tener para
ajustar al valor inicial que se especific. Se deben entonces tomar los
valores iniciales retornados por sbval y resolver el problema de valor
inicial resultante.
R 32
MR R 2
M R R 1
3
4 4
M R R 2
8
i 0 32
ai k 1
vi k 0
k 0 32
b a
d a
f M
S1 relax( a b c d e f v 0.95)
c a
e 4 a
S1
Si u(x, y) es cero sobre los cuatro lados del cuadrado, use la funcin
multigrid. Esta function frecuentemente resolver el problema ms
rpido que relax.
Uso de multigrid:
R 32
MR R 0
M R 3 R 2
4
S multigrid ( M 2)
M R R 2
8
M R R 1
3
$$$$$$$$$$$$$$$$$$$$$$$$
MATLAB contiene dos funciones para calcular soluciones numrica de
ecuaciones diferenciales ordinarias; "ode23" y "ode45".
A continuacin se describen los argumentos de los comandos MATLAB ODE.
[x,y] = ode23('funcin',a,b,inicial)
Esta instruccin regresa un conjunto de coordenadas "x" y "y" que representan
a la funcin y=f(x), los valores se calculan a travs de mtodos Runge-Kuta de
segundo y tercer orden.
El nombre "funcin", define una funcin que representa a una ecuacin
diferencial ordinaria, ODE23 proporciona los valores de la ecuacin diferencial
y'=g(x,y).
Los valores "a" y "b" especifican los extremos del intervalo en el cual se desea
evaluar a la funcin y=f(x).
El valor inicial y = f(a) especifica el valor de la funcin en el extremo izquierdo
del intervalo [a,b].
[x,y] = ode45('funcin',a,b,inicial)
Esta instruccin regresa un conjunto de coordenadas "x" y "y" que representan
Mathcad.pdf
-----
b*exp(a*t)
dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')
ans =
(1/exp(a*t*i))/2 + exp(a*t*i)/2
Solving a System of Differential Equations
z = dsolve('Dx = y', 'Dy = -x')
z =
x: [1x1 sym]
y: [1x1 sym]
Enter z.x and z.y to see the results:
z.x
ans =
C20*cos(t) + C19*sin(t)
z.y
ans =
C19*cos(t) - C20*sin(t)
Using the IgnoreAnalyticConstraints Option
By default, the solver applies the set of purely algebraic simplifications that are
not correct in general, but that can result in simple and practical solutions:
y = dsolve('Dy=1+y^2','y(0)=1')
y =
tan(pi/4 + t)
To obtain complete and generally correct solutions, set the value of the option
IgnoreAnalyticConstraints to none:
y = dsolve('Dy=1+y^2','y(0)=1',...
'IgnoreAnalyticConstraints','none')
y =
piecewise([C29 in Z_, tan(pi/4 + t + pi*C29)])
The algebraic simplifications also allow you to obtain solutions for the equations
that the solver cannot compute when it uses strict mathematical rules:
dsolve('Dv=19.6*v-0.00196*v^2','v(0)=1')
ans =
10000/(exp(log(9999) - (98*t)/5) + 1)
versus
dsolve('Dv=19.6*v-0.00196*v^2','v(0)=1',...
'IgnoreAnalyticConstraints','none')
Warning: Possibly spurious solutions [solvelib::checkSolutions]
ans =
piecewise([C38 in Z_, 1/(exp(log(9999) - (98*t)/5 +...
2*pi*C38*i)/10000 + 1/10000)])
Diagnostics
If dsolve cannot find an analytic solution for an equation, it prints the warning:
Warning: Explicit solution could not be found.
and returns an empty sym object.
See Also