Você está na página 1de 10

UNIOESTE- UNIVERSIDADE DO OESTE DO PARANÁ

Equaçõ es Diferenciais
Lista 2: Bimestre 4
Discente: Matheus Viana Sena
Motter
QUESTÃO 1
Para essa questão foi usada a seguinte função para serem aplicados os métodos:

dy
=4 e0.8 x −0,5 y
dx

Método de Euler

Programa principal

dxy = @(x,y) 4*exp(0.8*x)-0.5*y

euleredo(1,0,2,dxy,0,4)

Função

%método de euler edo


function [rr] = euleredo(passo,xo,yo,f,a,b)
% passo = intervalo entre os segmentos
% xo = condição inicial do x
% yo = condição inicial do y
% f = e.d.o
% a = intervalo inicial
% b = intervalo final
n = (b-a)/passo
m = zeros(n+1,1)
rr = zeros(n+1,1)
soma = 0;
m(1,1) = xo
rr(1,1) = yo

for j=1:n+1
if(j~=1)
yant = rr(j-1,1)
xant = m(j-1,1)
soma = soma + passo
m(j,1)= soma
rr(j,1)= yant + f(xant,yant)*passo

end
end
end
X Resultado
0 2
1 5
2 11.4022
3 25.5132
4 56.8493
Tabela 1: Resultado da e.d.o aplicando o metodo de euler

Método de Heun

Programa principal

dxy = @(x,y) 4*exp(0.8*x)-0.5*y

heun(0,4,1,dxy,0,2,0.01,20)

Função

%método de heun
function [I] = heun(a,b,h,f,xo,yo,es,itemax)
% a = intervalo inicial
% b = intervalo final
% h = intervalo entre os segmentos
% f = edo
% xo = condição inical
% es = erro especificado
% itemax= numero de iteracoes maxima
n = (b-a)/h
ea = 100;
m=zeros(n+1,1)
r = zeros(n+1,1)
mp = zeros(n+1,1)
mm = zeros(n,1)
m(1,1) = xo
r(1,1) = yo
mp(1,1) = yo+f(xo,yo)*h
yfinal = zeros(n,1)
soma = 0;
ite = 0;

for i=1:n+1
if(i~=1)
ite = 0;
yant = r(i-1,1)
xant = m(i-1,1)
mpant = mp(i-1,1)
mmant = mm(i-1,1)

soma = soma + h;
m(i,1) = soma

mm(i,1) = (f(xant,yant)+f(soma,mpant))/2
while ea>es
ite = ite+1
r(i,1) = yant + mm(i,1)*h
ea = abs(r(i,1)-mpant)/(r(i,1))*100
mpant = r(i,1)
mm(i,1) = (f(xant,yant)+f(soma,mpant))/2
if(ite==itemax)
break;
end
end

end
end
I = r
end

Para um erro especificado de 0.01% e com 20 iterações no máximo foi chego na


seguinte resposta:

Resultado
6,3609
Tabela 2: Resultado aplicando o método de heun para a e.d.o

Método do ponto médio

Programa principal

dxy = @(x,y) 4*exp(0.8*x)-0.5*y

pontomedio(1,0,2,dxy,0,4)
Função

%método do ponto médio


function [rr] = pontomedio(passo,xo,yo,f,a,b)
% xo = condição inicial do x
% yo = condição inicial do y
% f = e.d.o
% a = intervalo inicial
% b = intervalo final
h = passo/2
n = (b-a)/h
m = zeros(n+1,1)
rr = zeros(n+1,1)
soma = 0;
m(1,1) = xo
rr(1,1) = yo
for j=1:n+1

yant = rr(j,1)
xant = m(j,1)
soma = soma + h
m(j+1,1)= soma
rr(j+1,1)= yant + f(xant,yant)*h

end
end

X Resultado
0 2
0.5 3.5
1 5.6086
1.5 8.6576
2 13.1334
2.5 19.7561
3 29.5952
3.5 44.2428
4 66.0714
Tabela 3: Resultado da e.d.o quando aplicado o método do ponto médio
Método de Runge kutta

Programa principal

dxy = @(x,y) 4*exp(0.8*x)-0.5*y

rungekutta4(0,4,1,dxy,0,2)

Função

%método de runge kutta de quarta ordem


function [I] = rungekutta4(a,b,h,f,xo,yo)
% passo = intervalo entre os segmentos
% xo = condição inicial do x
% yo = condição inicial do y
% f = e.d.o
% a = intervalo inicial
% b = intervalo final
n = (b-a)/h;
y = yo;
x = xo;
I = zeros(n,1)
for i=1:n
k1 = f(x,y)
k2 = f(x+h/2,y+h/2*k1)
k3 = f(x+h/2,y+h/2*k2)
k4 = f(x+h,y+h*k3)
y = y + (1/6)*(k1+2*k2+2*k3+k4)*h
x = x+h
I(i,1) = y
end

end

X Resultado
1 6.2010
2 14.8625
3 33.7213
4 75.4392
Tabela 4: Resultado da e.d.o aplicando rugge kutta de 4 ordem
QUESTÃO 2
Método de Euler

function [] = eulerrlc(r,l,c,f,v)
%r = resistência
%l = indutância
%c = capacitância
%f = frequência
%v = tensão
w = 2*pi*f;
vf = @(t) v*cos(w*t)
passo = [1E-6 1E-3]
m = length(passo)
for k=1:m
h = passo(k);
t = 0:h:1;
n = length(t);
di = @(t,i,q) q;
dq = @(t,i,q) (1/l)*(vf(t+h)-vf(t))/h - (r/l)*q - (1/(l*c))*i;
i = zeros(1,n);
q = zeros(1,n);
i(1) = 0;
q(1) = 0;
for j=1:n-1
if t(j)==0.5
c = 1E-3;
dq = @(t,i,q) (1/l)*(v(t+h)-v(t))/h - (r/l)*q -(1/(l*c))*i;
end
o1 = di(t(j),i(j),q(j));
i(j+1) = i(j)+o1*h;
o2 = dq(t(j),i(j),q(j));
q(j+1) = q(j)+o2*h;
end
plot(t,i)
hold on
end
hold off
Figura 1: Comportamento do circuito rlc com o método de euler

Método de Rungekutta

function [] = rungekuttarlc(r,l,c,f,v)
%r = resistência
%l = indutância
%c = capacitância
%f = frequência
%v = tensão
%r = resistência
%l = indutância
%c = capacitância
%f = frequência
%v = tensão
w = 2*pi*f;
vf = @(t) v*cos(w*t)
passo = [1E-6 1E-3]
m = length(passo)
for k=1:m
h = passo(k);
t = 0:h:1;
n = length(t);
di = @(t,i,q) q;
dq = @(t,i,q) (1/l)*(vf(t+h)-vf(t))/h - (r/l)*q - (1/(l*c))*i;
i = zeros(1,n);
q = zeros(1,n);
i(1) = 0;
q(1) = 0;
for j=1:n-1
if t(j)==0.5
c = 1E-3;
dq = @(t,i,q) (1/l)*(vf(t+h)-vf(t))/h - (r/l)*q -(1/(l*c))*i;
end
k11 = di(t(j),i(j),q(j));
k12 = dq(t(j),i(j),q(j));
k21 = dq(t(j)+0.5*h,i(j)+0.5*k11*h,q(j)+0.5*k12*h);
k22 = dq(t(j)+0.5*h,i(j)+0.5*k11*h,q(j)+0.5*k12*h);
k31 = di(t(j)+0.5*h,i(j)+0.5*k21*h,q(j)+0.5*k22*h);
k32 = dq(t(j)+0.5*h,i(j)+0.5*k21*h,q(j)+0.5*k22*h);
k41 = di(t(j)+h,i(j)+k31*h,q(j)+k32*h);
k42 = dq(t(j)+h,i(j)+k31*h,q(j)+k32*h);

i(j+1)=i(j)+(1/6)*(k11+2*k21+2*k31+k41)*h;
q(j+1)=a(j)+(1/6)*(k12+2*k22+2*k32+k42)*h;
end

plot(t,i)
hold on

end
hold off
Figura 2: Grafico que mostra o compartamento do rlc com o metodo do runge kutta

Você também pode gostar