Matlab - Problema EDO 2° orden

   
Vista:

Problema EDO 2° orden

Publicado por Miguel Bravo (1 intervención) el 15/07/2011 07:14:06
Hola a todos

Tengo problemas para graficar una edo de 2° orden

El problema es: (d^2 y)/(dt^2 )=10*y

Las condiciones de borde son: y(0)=0 ; y´(0,01)=0

t esta entre [0,0.01]

Ojala me puedan dar la secuencia en matlab (es simple pero me sirve para comparar, quizas tengo problemas ahi)

Gracias por su tiempo.

Miguel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Problema EDO 2° orden

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3439 intervenciones) el 15/07/2011 16:27:13
hola Miguel Bravo.
te hice una secencia de pasos para resolver en matlab.
ademas tome la teoria de un articulo que internet.
alli te mando todo.
% Hola a todos
% Tengo problemas para graficar una edo de 2° orden
% El problema es: (d^2 y)/(dt^2 )=10*y
% Las condiciones de borde son: y(0)=0 ; y´(0,01)=0
% t esta entre [0,0.01]
% Ojala me puedan dar la secuencia en matlab (es simple pero me sirve para
% comparar, quizas tengo problemas ahi)
% Gracias por su tiempo.
% Miguel

% REVISAR ESTE ARTICULO: PAGINAS 77-81
% http://rinconmatematico.com/alqua/edo/EDO-1_00.pdf
%y''+0y'+(-10)y=0;
%y(0)=0, y'(0.01)=1
%P(lamda)=lamda^2+0*lamda+(-10) POLINOMIO CARACTERISCO
%P(lamda)=lamda^2-10
%raices de P(lamda)=(lamda+sqrt(10))*(lamda-sqrt(10)
%lamda1=-sqrt(10), lamda2=+sqrt(10)
%y(t)=c1*exp(lamda1*t)+c2*exp(lamda2*t)
%y(t)=c1*exp(-sqrt(10)*t)+c2*exp(sqrt(10)*t)
%y'(t)=c1*(-sqrt(10))*exp(-sqrt(10)*t)+c2*sqrt(10)*exp(sqrt(10)*t)
%y(0)=c1+c2=0
%y'(0.01)=c1*(-sqrt(10)*exp(-sqrt(10)*0.01)+c2*sqrt(10)*exp(+sqrt(10)*0.01)=1

%EN MATLAB
clear, clc
syms lamda c1 c2 t
yo=0
y1=0.01
Polinomio_caracterisco=lamda^2-10
p=sym2poly(Polinomio_caracterisco)
lamda=roots(p)
Yt=c1*exp(lamda(1)*t)+c2*exp(lamda(2)*t)
Fy1=inline(Yt)
Y0=Fy1(c1,c2,yo)
Deriv_Yt=diff(Yt)
FDYt=inline(Deriv_Yt)
DY0=FDYt(c1,c2,y1)
A=[double(coeffs(Y0));double(coeffs(DY0))]
C=linsolve(A,[yo;y1])
YT=C(1)*exp(lamda(1)*t)+C(2)*exp(lamda(2)*t)
FYT=inline(YT)
k=1;
T=linspace(yo,y1,10);
Y=FYT(T);
TY=[T',Y']
figure(gcf)
plot(T,Y)
%=================================

EJECUCION:
>> edo2
yo =
0

y1 =
0.0100

Polinomio_caracterisco =
lamda^2 - 10

p =
1 0 -10

lamda =
3.1623
-3.1623

Yt =
c1*exp(10^(1/2)*t) + c2/exp(10^(1/2)*t)


Fy1 =
Inline function:
Fy1(c1,c2,t) = c1.*exp(sqrt(1.0e1).*t)+c2.*exp(-sqrt(1.0e1).*t)

Y0 =
c1 + c2


Deriv_Yt =
10^(1/2)*c1*exp(10^(1/2)*t) - (10^(1/2)*c2)/exp(10^(1/2)*t)


FDYt =
Inline function:
FDYt(c1,c2,t) = sqrt(1.0e1).*c1.*exp(sqrt(1.0e1).*t)-sqrt(1.0e1).*c2.*exp(-sqrt(1.0e1).*t)

DY0 =
(4648291677001169*10^(1/2)*c1)/4503599627370496 - (4363411552679673*10^(1/2)*c2)/4503599627370496


A =
1.0000 1.0000
-3.0638 3.2639

C =
-0.0016
0.0016

YT =
7288071496463895/(4611686018427387904*exp(10^(1/2)*t)) - (3644035748231947*exp(10^(1/2)*t))/2305843009213693952


FYT =
Inline function:
FYT(t) = exp(sqrt(1.0e1).*t).*(-3.644035748231947e15./2.305843009213694e18)+exp(-sqrt(1.0e1).*t).*(7.288071496463895e15./4.611686018427388e18)

TY =

0 0.0000
0.0011 -0.0000
0.0022 -0.0000
0.0033 -0.0000
0.0044 -0.0000
0.0056 -0.0001
0.0067 -0.0001
0.0078 -0.0001
0.0089 -0.0001
0.0100 -0.0001



Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar