Você está na página 1de 16

Introdução

O processo de integração permite a resolução de variados problemas que


envolvem fenômenos físicos. Problemas relativos a volumes, comprimentos de
curvas, predições populacionais, saída de sangue do coração, força sobre um
dique, trabalho, excedente de consumo e beisebol, entre muitos outros.
Tal processo pode-se dar de forma analítica, isto é, a partir de manipulações
algébricas e técnicas, é possível obter a primitiva procurada. Algumas vezes,
no entanto, é difícil, ou mesmo impossível, encontrar uma primitiva.
Isto ocorre em pelo menos dois casos: o primeiro onde as técnicas e as
manipulações algébricas não oferecem suporte para o tratamento analítico da
função integrada para se calcular a sua primitiva e o segundo é quando a
função primitiva procurada advém de um experimento científico por meio de
leituras de instrumentos ou dados coletados. Assim os métodos analíticos para
obtenção de uma primitiva dão lugar aos métodos numéricos para a obtenção
de um valor para a primitiva por meio de uma aproximação.
Uma equação diferencial é uma equação que envolve uma função
desconhecida e algumas de suas derivadas. Se a função é de uma só variável,
então a equação diferencial se chama equação diferencial ordinária (EDO).
As EDOs ocorrem com muita frequência na descrição de fenômenos da
natureza e em problemas de engenharia. As equações que estabelecem
relações entre uma variável que depende de duas ou mais variáveis
independentes e as derivadas (parciais) são denominadas de equações
diferenciais parciais.
Exercícios

Fazendo o Script de Plotagem:


function y=f(x)
y = (1/(sqrt(2*%pi)))*exp(-x^2/2);
endfunction
function [I]=trapezio_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
I = I + 2*f(x(i))
end
I = (h/2)*I;
endfunction
S = trapezio_composto(-3, 0.5, 15);
disp(S, "Valor:")

Obtém-se o seguinte valor para y:


Valor: 0.6892519

Fazendo o Script de Plotagem:


function y=f(x)
y = (1/(sqrt(2*%pi)))*exp(-x^2/2);
endfunction
function [I]=simpson13_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
if(modulo(i, 2) == 0)
I = I + 4*f(x(i));
else
I = I + 2*f(x(i));
end
end
I = (h/3)*I;
endfunction
S = simpson13_composto(-3, 0.5, 16);
disp(S, "Valor:")

Obtém-se o seguinte valor para y:


Valor: 0.6901179
Fazendo o Script de Plotagem:
function y=f(x)
y = (1/(sqrt(2*%pi)))*exp(-x^2/2);
endfunction
function [I]=simpson38_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
if(modulo(i, 3) == 1)
I = I + 2*f(x(i));
else
I = I + 3*f(x(i));
end
end
I = (3*h/8)*I;
endfunction
S = simpson38_composto(-3, 0.5, 18);
disp(S, "Valor:")

Obtém-se o seguinte valor para y:


Valor: 0.6901202

Fazendo o Script de Plotagem:


function y=f(x)
y = x*sin(x)-cos(x^2)
endfunction
function [I]=trapezio_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
I = I + 2*f(x(i))
end
I = (h/2)*I;
endfunction
S = trapezio_composto(2, 136, 67);
disp(S, "Valor:")

Obtém-se o seguinte valor para a integral:


Valor: 42.108826

Fazendo o Script de Plotagem:


function y=f(x)
y = x*sin(x)-cos(x^2)
endfunction
function [I]=simpson13_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
if(modulo(i, 2) == 0)
I = I + 4*f(x(i));
else
I = I + 2*f(x(i));
end
end
I = (h/3)*I;
endfunction
S = simpson13_composto(2, 134, 66);
disp(S, "Valor:")

Obtém-se o seguinte valor para a integral:


Valor: 65.09334

function y=f(x)
y = x*sin(x)-cos(x^2)
endfunction
function [I]=simpson38_composto(a, b, n)
h = (b-a)/n;
x = a:h:b;
I = f(x(1)) + f(x(n+1))
for i = 2:n
if(modulo(i, 3) == 1)
I = I + 2*f(x(i));
else
I = I + 3*f(x(i));
end
end
I = (3*h/8)*I;
endfunction
S = simpson38_composto(2, 134, 66);
disp(S, "Valor:")

Obtém-se o seguinte valor para a integral:


Valor: 198.2831
Fazendo o Script de Plotagem:
function dy=g(x, y)
dy = y*x^2 + 1.1*y;
endfunction
function [x, y]=EDO_Euler(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
y(i+1) = y(i) + g(x(i), y(i))*h;
end
endfunction
[x, y] = EDO_Euler(0, 2, 0.25, 1);
disp(y($));
plot(x, y);
xgrid;

Obtém-se o seguinte valor aproximado para y:


Valor : 29.674943

E o gráfico da solução obtido é:


Fazendo o Script de Plotagem:
function dy=g(x, y)
dy = y*x^2 + 1.1*y;
endfunction
function [x, y]=EDO_Heun(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
yr = y(i) + g(x(i), y(i))*h;
y(i+1) = y(i) + ( g(x(i), y(i)) + g(x(i+1), yr) )*h/2;
end
endfunction
[x, y] = EDO_Heun(0, 2, 0.25, 1);
disp(y($));
plot(x, y);
xgrid;

Obtém-se o seguinte valor aproximado para y:


Valor: 99.196823

E o gráfico da solução obtido é:

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = y*x^2 + 1.1*y;
endfunction
function [x, y]=EDO_pmedio(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
k1 = g(x(i), y(i));
y(i+1) = y(i) + g(x(i) + h/2, y(i) + k1*h/2)*h;
end
endfunction
[x, y] = EDO_pmedio(0, 2, 0.25, 1);
disp(y($));
plot(x, y);
xgrid;

Obtém-se o seguinte valor aproximado para y:


Valor: 89.532789

E o gráfico da solução obtido é:

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = y*x^2 + 1.1*y;
endfunction
function [x, y]=EDO_RK4(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
k1 = g(x(i), y(i));
k2 = g(x(i) + h/2, y(i) + k1*h/2);
k3 = g(x(i) + h/2, y(i) + k2*h/2);
k4 = g(x(i) + h, y(i) + k3*h);
y(i+1) = y(i) + (k1 + 2*k2 + 2*k3 + k4)*h/6;
end
endfunction
[x, y] = EDO_RK4(0, 2, 0.25, 1);
disp(y($));
plot(x, y);
xgrid;

Obtém-se o seguinte valor aproximado para y:


Valor: 128.40471

E o gráfico da solução obtido é:

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = x*cos(x);
endfunction
function [x, y]=EDO_Euler(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
y(i+1) = y(i) + g(x(i), y(i))*h;
end
endfunction
a= 44.5;
b = 44.5 +133*3.4;
h = 3.4;
ya = 122.9;
[x, y] = EDO_Euler(a, b, h, ya);
disp(y($));

Obtém-se o seguinte valor aproximado para y:


Valor: -640.92753

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = x*cos(x);
endfunction
function [x, y]=EDO_Heun(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
yr = y(i) + g(x(i), y(i))*h;
y(i+1) = y(i) + ( g(x(i), y(i)) + g(x(i+1), yr) )*h/2;
end
endfunction
a= 44.5;
b = 44.5 +133*3.4;
h = 3.4;
ya = 122.9;
[x, y] = EDO_Heun(a, b, h, ya);
disp(y($));

Obtém-se o seguinte valor aproximado para y:


Valor: 92.611929

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = x*cos(x);
endfunction
function [x, y]=EDO_pmedio(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
k1 = g(x(i), y(i));
y(i+1) = y(i) + g(x(i) + h/2, y(i) + k1*h/2)*h;
end
endfunction
a= 44.5;
b = 44.5 +133*3.4;
h = 3.4;
ya = 122.9;
[x, y] = EDO_pmedio(a, b, h, ya);
disp(y($));

Obtém-se o seguinte valor aproximado para y:


Valor: 359.71552

Fazendo o Script de Plotagem:


function dy=g(x, y)
dy = x*cos(x);
endfunction
function [x, y]=EDO_RK4(a, b, h, ya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
y(1) = ya;
for i = 1:n-1
k1 = g(x(i), y(i));
k2 = g(x(i) + h/2, y(i) + k1*h/2);
k3 = g(x(i) + h/2, y(i) + k2*h/2);
k4 = g(x(i) + h, y(i) + k3*h);
y(i+1) = y(i) + (k1 + 2*k2 + 2*k3 + k4)*h/6;
end
endfunction
a= 44.5;
b = 44.5 +133*3.4;
h = 3.4;
ya = 122.9;
[x, y] = EDO_RK4(a, b, h, ya);
disp(y($));

Obtém-se o seguinte valor aproximado para y:


Valor: 270.68099
Fazendo o Script de Plotagem:
function dy=g1(x, y, z)
dy = -2*y + 4*exp(-x);
endfunction
function dz=g2(x, y, z)
dz = (-y*z^2)/3;
endfunction
function [x, y, z]=EDO_Euler2(a, b, h, ya, za)
x = a:h:b;
n = length(x);
y = zeros(1, n);
z = zeros(1, n);
y(1) = ya;
z(1) = za;
for i = 1:n-1
y(i+1) = y(i) + g1(x(i), y(i), z(i))*h;
z(i+1) = z(i) + g2(x(i), y(i), z(i))*h;
end
endfunction
[x, y, z] = EDO_Euler2(0, 1, 0.1, 2, 4);
plot(x, [y; z]);
xgrid;

Obtém-se o seguinte gráfico aproximado da função:


Fazendo o Script de Plotagem:
function dw1=g1(t, w1, w2)
dw1 = w2;
endfunction
function dw2=g2(t, w1, w2)
dw2 = -0.6*w2 + 8*w1;
endfunction
function [x, y, dy]=EDO_RK4_2(a, b, h, ya, dya)
x = a:h:b;
n = length(x);
y = zeros(1, n);
dy = zeros(1, n);
y(1) = ya;
dy(1) = dya;
for i = 1:n-1
k1y = g1(x(i), y(i), dy(i));
k2y = g1(x(i) + h/2, y(i) + k1y*h/2, dy(i) + k1y*h/2);
k3y = g1(x(i) + h/2, y(i) + k2y*h/2, dy(i) + k2y*h/2);
k4y = g1(x(i) + h, y(i) + k3y*h, dy(i) + k3y*h);
y(i+1) = y(i) + (k1y + 2*k2y + 2*k3y + k4y)*h/6;
k1dy = g2(x(i), y(i), dy(i));
k2dy = g2(x(i) + h/2, y(i) + k1dy*h/2, dy(i) + k1dy*h/2);
k3dy = g2(x(i) + h/2, y(i) + k2dy*h/2, dy(i) + k2dy*h/2);
k4dy = g2(x(i) + h, y(i) + k3dy*h, dy(i) + k3dy*h);
dy(i+1) = dy(i) + (k1dy + 2*k2dy + 2*k3dy + k4dy)*h/6;
end
endfunction
[x, y, dy] = EDO_RK4_2(0, 5, 0.5, 4, 0);
plot(x, [y; dy]);
xgrid;
Obtém-se o seguinte gráfico aproximado da função:
Conclusão

A idéia básica desses métodos de integração numérica é a substituição da


função f(x) por um polinômio que a aproxime razoavelmente no intervalo [a,b].
Assim o problema fica resolvido pela integração de polinômios, o que é trivial
de se fazer.
Para a EDO o problema é basicamente o mesmo da integração, com a
diferença de que a função a ser integrada é expressa numa forma padrão
(ordinária) em função das suas próprias derivadas (diferencial).
Bibliografia

CHAPRA, S. C.; CANALE, R. P. Métodos Numéricos para Engenharia. 5ª Ed.


São Paulo: McGraw‐Hill Brasil, 2008. ISBN: 9788586804878.
Slides utilizados na aula de computação numérica do professor Francisco Jose
Targino Vidal.
Apostilha do Professor Sandro Bruno do Nascimento Lopes.
Integração e EDOs

Nome: Josiel
Turma: 04

Natal/RN
25/11/2017

Você também pode gostar