Você está na página 1de 8

UNIVERSIDADE FEDERAL DE UBERLÂNDIA

FACULDADE DE ENGENHARIA MECÂNICA


PROGRAMA DE PÓS-GRADUAÇÃO
Professor: Solidônio Rodrigues Carvalho

RELATÓRIO DE MÉTODOS COMPUTACIONAIS (PM064)


TAREFA 2:
SOLUÇÃO DE PROBLEMA MATEMÁTICO COM MEIOS VOLUMES

Matheus Heitor Silva Ferreira 1201XESP034

UBERLÂNDIA

2020
ii

Sumário

1. INTRODUÇÃO ......................................................................................... 1

2. DESENVOLVIMENTO ............................................................................. 1

2.1. Análise das C.C – Volumes inteiros na fronteira...................................... 2

2.2. Sistema linear a ser resolvido .................................................................. 3

3. RESULTADOS OBTIDOS ........................................................................ 3

4. REFERÊNCIAS ........................................................................................ 4

5. APÊNDICES............................................................................................. 5

5.1. Conteúdo dos códigos Matlab ................................................................. 5


1

1. INTRODUÇÃO

Determine a solução numérica para a Equação (1) usando malha numérica


com meios volumes nas fronteiras. Compare a solução analítica com a solução
numérica.

Eq. diferencial 𝑦 ′′ − 𝑦 = −2 sin(𝑥) para 0≤𝑥≤𝜋 (1)


𝑦(0) = 0 (Dirichlet)
C.C {
𝑦 ′ (𝜋) = −1, (Neumann)
Sol. analítica 𝑦 = sin(𝑥) , para 0≤𝑥≤𝜋

2. DESENVOLVIMENTO

Figura 1: Malha com volumes inteiros

Reescrevendo a equação diferencial:


𝑦 ′′ − 𝑦 = −2 sin(𝑥)
𝜕 2𝑦
− 𝑦 = −2 sin(𝑥)
𝜕𝑥 2

Aplicando expansão em série de Taylor de 1ª ordem:


𝜕 2 𝑦 𝑦𝑖+1 − 2 𝑦𝑖 + 𝑦𝑖−1
=
𝜕𝑥 2 (Δ𝑥)2

Portanto a equação pode ser aproximada numericamente por:


𝑦𝑖+1 − 2 𝑦𝑖 + 𝑦𝑖−1
− 𝑦𝑖 = −2 sin(𝑥𝑖 )
(Δ𝑥)2
∴ [−2 − (Δ𝑥)2 ]𝑦𝑖 + 𝑦𝑖+1 + 𝑦𝑖−1 = −2(Δ𝑥)2 sin(𝑥𝑖 ) (2)

A Equação (2) pode ser escrita como (facilita programação Matlab):


2

𝐴𝑝 𝑦𝑖 + 𝐴𝑒 𝑦𝑖+1 + 𝐴𝑤 𝑦𝑖−1 = −𝐵𝑝 sin(𝑥𝑖 ) (3)


Onde:
𝐴𝑝 = −2 − (Δ𝑥)2
𝐴𝑒 = 1
𝐴𝑤 = 1
A Equação (3) é válida para todas as células que não estão na fronteira.

2.1. Análise das C.C – Volumes inteiros na fronteira

Figura 2: Análise das células localizadas nas fronteiras

Aplicando 𝑦(0) = 0 e 𝑥 = 0 na (2), tem-se:


[−2 − (Δ𝑥)2 ] ⋅ 0 + 𝑦𝑖+1 + 𝑦𝑖−1 = −2(Δ𝑥)2 sin(0) → 𝑦𝑖+1 = −𝑦𝑖−1

Na fronteira 𝑥 = 0, a Equação (3) pode ser corrigida como:

𝑦𝑖 + 0 ⋅ 𝑦𝑖+1 = 0
∴ 𝐴11 = 1 𝐴12 = 0 𝐵1 = 0 (4)

Figura 3: Análise das condições de contorno na fronteira 𝑥 = 𝜋

Aplicando 𝑦 ′ (𝜋) = −1 na fronteira 𝑥 = 𝜋, tem-se:


𝜕𝑦 𝑦𝑒 − 𝑦𝑤 (𝑦𝑖+1 − 𝑦𝑖 ) − (𝑦𝑖 − 𝑦𝑖−1 )
| = −1 → = −1 → = −1
𝜕𝑥 𝑥=𝜋 Δ𝑥 2 Δ𝑥
∴ 𝑦𝑖+1 = 𝑦𝑖−1 − 2 Δ𝑥
3

Na fronteira 𝑥 = 𝜋, a Equação (3) pode ser corrigida como:

(𝐴𝑝 )𝑦𝑖 + 2 𝐴𝑤 𝑦𝑖−1 = −𝐵𝑝 sin(𝑥𝑖 ) + 2 Δ𝑥 (5)

2.2. Sistema linear a ser resolvido

Analisando as Equações (3), (4) e (5), verifica-se o seguinte linear a ser


resolvido 𝐴 ⋅ 𝑌 = 𝐵.

Figura 4: Sistema linear 𝐴 ⋅ 𝑌 = 𝐵 a ser resolvido

Obs.: A matriz 𝐴5×5 é chamada matriz tridiagonal.

3. RESULTADOS OBTIDOS

A Figura 5 mostra a comparação entre a solução analítica e a solução


numérica com uma malha contendo 5 nós e também o erro relativo entre a
solução analítica e a solução numérica.

Figura 5: Comparação entre solução analítica e solução numérica com malha de 5 nós
4

A Figura 6 mostra o erro relativo entre a solução analítica e a solução


numérica.
De acordo com Maliska (1995) quando aplicamos uma metodologia
numérica, optamos por ter uma solução para um número discreto de pontos
(nós), com um determinado erro, esperando que, quando maior for o número de
pontos (nós), mais perto da solução exata será a solução numérica.

Figura 6: Comparação entre solução analítica e solução numérica com malha de 50 nós

4. REFERÊNCIAS

CARVALHO, Solidônio Rodrigues. Apostila Métodos Computacionais. Uberlândia:


Universidade Federal de Uberlândia (UFU). Brasil, 2020.
5

5. APÊNDICES

5.1. Conteúdo dos códigos Matlab

Nessa seção estão todos os códigos utilizados na resolução da atividade


proposta.

5.1.1. Arquivo “main.m”

%%Tarefa 2: Resolver problema matemático usando meios volumes%%


%Dados entrada
tic
clear all; close all; clc;
L=pi; %Comprimento do eixo x
nx=50; %Número de células
dx=L/(nx-1); %Tamanho de cada célula
x=0:dx:L; %Domínio de cálculo considerando meios volumes nas
fronteiras

%Rotina principal
A=matrixA(nx,dx);
B=vectorB(nx,dx,x);
yn=A\B; %Solução numérica (também pode ser escrito como inv(A)*B
y=sin(x'); %solução analítica
figure(1)
plot(x,y,'o-b',x,yn,'*-r')
xlabel('x','FontSize',12,'FontWeight','bold','Color','k')
ylabel('f(x)','FontSize',12,'FontWeight','bold','Color','k')
legend('Sol. analítica',['Sol. numérica nx =
',num2str(nx)],'Location','northeast')
title('Solução da equação diferencial y"-y=-2*sin(x)')
movegui(figure(1),'northwest');
toc

figure(2)
erro=abs(y-yn)./y*100;
plot(x,erro,'*-b')
xlabel('x','FontSize',12,'FontWeight','bold','Color','k')
ylabel('Erro relativo
[%]','FontSize',12,'FontWeight','bold','Color','k')
legend('Erro','Location','northeast')
title(['Erro relativo para ',num2str(nx),' nós'])
6

5.1.2. Arquivo “matrixA.m”

function A=matrixA(nx,dx)
%Método das diferenças finitas: Matriz A
A=sparse(zeros(nx,nx));
Ap=-2-dx^2;
Aw=1;
Ae=Aw;
for i=1:nx
if(i==1) %Célula da fronteira esquerda
A(i,i)=1;
A(i,i+1)=0;
elseif (i>1 && i<nx) %Célula comum (que não está na fronteira)
A(i,i)=Ap;
A(i,i-1)=Ae;
A(i,i+1)=Aw;
elseif (i==nx) %Célula da fronteira direita
A(i,i)=Ap+1;
A(i,i-1)=2*Aw;
end
end

5.1.3. Arquivo “vectorB.m”

function B=vectorB(nx,dx,x)
%Método das diferenças finitas: Vetor B
B=zeros(nx,1);
Bp=-2*dx^2;
for i=1:nx
if(i==1) %Célula da fronteira esquerda
B(i,1)=0;
elseif (i>1 && i<nx) %Célula comum (que não está na fronteira)
B(i,1)=Bp*sin(x(i));
elseif (i==nx) %Célula da fronteira direita
B(i,1)=Bp*sin(x(i))+2*dx;
end
end

Você também pode gostar