Sei sulla pagina 1di 3

Practica 5

Solución de EDO por métodos numéricos

Resolver y’=t+y y(0)=1 y(1)=? H=0.1

Solución analítica

>> = dsolve(‘Dy=t+y’, ‘y(0)=1’, ‘t’)

>>ezplot( y,[-6 2])

Solución por R-K de 5o

>>Eq=inline(‘t+y’, ‘t’, ‘y’);

>>[t y]=ode45(Eq,[0:0.1:1],1);

disp([t y])

plot(t,y,’-0’)

Euler simple

clear all,clc
tspan=[0 1];N=10;y0=1;
Ec=inline('t+y','t','y');
H=(tspan(2)-tspan(1))/N;
t=tspan(1)+[0:N]'*H;
y(:,1)=y0(:)';
for K=1:N
y(:,K+1)=y(:,K)+H*Ec(t(K),y(:,K));
end
disp([t y(:)])
plot(t,y,'-o')

solucion de sistemas de E.D.O utilizando R-K de 5to de matlab

en el editor

function dy=Eq(t,x)
dy=[-x(1)/10;(x(1)-x(2))/10];

en el comando

[t,x]=ode45('Eq',[0:0.2:3],[10 10]);
>> disp([t x])
plot(t,x(:,1),'->',t,x(:,2),'-^')

o en el comando enseguida escribir

>> Eq=inline('[-x(1)/10;(x(1)-x(2))/10]','t','x');
>> [t,x]=ode45(Eq,[0:0.2:3],[10 10]);
>> disp([t x])

>> Eqq=inline('[(x(3)-x(1))/20;(x(1)-x(2))/20;(x(2)-x(3))/20]','t','x');

[t,x]=ode45(Eqq,[0:5:54],[3000 0 3000]);
>> disp([t x])

metodo del disparo


y1'=y2

y2'=3t2+2-ty2-y1

y1(0)=0 y2(1()=1 =RD

paso 1: function dy=Eq(t,y)


dy=[y(2);3*t^2+2-t*y(2)-y(1)];

paso 2 (S1=0.4): >> [t,y]=ode45('Eq',[0:0.1:1],[0 0.4]);


>> disp([t,y])

paso 3(S2=0.4): >> [t,y]=ode45('Eq',[0:0.1:1],[0 0.1]);


>> disp([t,y])

S3=S2+(RD-R2)(S1-S2)/(R1-R2)

s3=0.1+((1-1.0725)*(0.4-0.1)/(1.2899-1.0725))

s3 = -4.5998e-05

>> [t,y]=ode45('Eq',[0:0.1:1],[0 0]);


>> disp([t,y])

plot(t,y(:,1),'-r',t,y(:,2),'-b')
metodo bvp4c

function Ej_bvp4c
disp('este programa resuelve una E.D.O con valores en la frontera')
options=bvpset('stats','on');
solinit=bvpinit(linspace(0,1,2),[0.1 0]);
sol=bvp4c(@Dec,@trbc,solinit,options);
fprintf('las condiciones lmites son y(0)=%7.5f y(1)=%7.5f\n',sol.y(1,1),sol.y(1,end));
disp( ' t y1 y2 ' )
n=11;
xint=linspace(0,1,n);
Sxint=deval(sol,xint);
plot(xint,Sxint(1,:),'-d',xint,Sxint(2,:),'->')
title('solucion de una E.D.O con valores en la frontera')
xlabel('X'); ylabel('Y');
disp([xint;Sxint(1,:);Sxint(2,:)]')
function dydx=Dec(x,y)
dydx=[y(2);3*x^2+2-x*y(2)-y(1)];
end
function res=trbc(ya,yb)
res=[ya(1);yb(1)-1];
end
end

Potrebbero piacerti anche