Você está na página 1de 11

Lucas José Ferreira

Trabalho de Métodos Numéricos para Equações Diferenciais


Prof. Dr. Valeriano Antunes de Oliveira

São José do Rio Preto


2019
1. Verifique que a mudança de variáveis ξ = x – Vt (onde V é uma constante) τ = t, numa
função w(x,t), faz com que

wt = w ξV + wt, wx = w ξ e wxx = w ξ ξ.

Usando este fato, mostre que a equação convecção-difusão nas variáveis (x,t),

wt = 1/Pe w xx –Vwx,

transforma-se numa equação parabólica nas variáveis (ξ, τ)

w τ = 1/Pe w ξ ξ.

Você vê alguma vantagem nesta transformação?

Solução:
Temos que, através da regra da cadeia:

x = ξ + Vt, então,

d/dt(w(ξ + Vt, t)) = ∇ w(ξ + Vt, t).(v,1) = (w ξ, wt).(V,1) = w ξV + wt.

Ainda mais,

wx = w ξ ξx , entretanto ξ = x – Vt no que implica que ξx = 1.

Portanto wx = w ξ.

Agora, temos que wxx = wξx .ξx + w ξ. ξxx. Mas temos que ξx = 1, logo ξxx = 0.

Portanto, wxx = wx ξ. Por outro ângulo, tomando que w ϵ C², temos: wxξ = w ξx. Então, wxx = wξ ξ.

Considere a equação: wt = 1/Pe w xx –Vwx. Temos que wt = w ξV + wt o que implica que w ξV = 0,


e ainda temos que wx = w ξ,, podemos concluir que w xV = 0. Voltando na expressão:

wt = 1/Pe w xx , o que implica que w τ = 1/Pe w ξ ξ, pois τ = t e wxx = wξ ξ.

Se Pe > 0, esta transformação faz com que a equação seja escrita como a equação da onda, a qual
existe várias possibilidades de se obter solução pelos inúmeros métodos numéricos.

2. Use o método das Diferenças Finitas para encontrar aproximações para as equações de
Poisson abaixo. As equações são definidas em retângulos e os dados são fornecidos no
contorno destes retângulos. Quando possível, compare com a solução analítica. Use vários
valores para Δx e Δy, de acordo com suas possibilidades.

a. uxx + uyy = x, 0 < x < 1 e 0 < y < 1 com condições



u(x,0) = u(x,1) = ,0≤x≤1
6
1
u(0,y)=0, u(1,y) = , 0 ≤ y ≤ 1;
6
Solução:
Na janela de comandos do Octave, digite ex2a, onde será executado o arquivo ex2a.m.
O arquivo irá calcular a solução aproximada para a equação de Poisson em questão. Foi utilizado
o espaçamento para malha com hx = 0.1 e hy=0.1. Digite u e enter na janela de comandos para
ver a matriz da solução aproximada.
Abaixo, podemos ver o gráfico da solução aproximada:
Gráfico 1 – Solução aproximada

b. uxx + uyy = -2- π²senh(π)sen(πy), 0 < x < 1 e 0 < y < 1 com condições

u(x,0) = u(x,1) = x(1-x) , 0 ≤ x ≤ 1

u(0,y)=0, u(1,y)= senh(π)sen(πy), 0 ≤ y ≤ 1,

com solução analítica u(x,y) = senh(π)sen(πy) + x(1-x);

Solução:

Na janela de comandos do Octave, digite ex2b, onde será executado o arquivo ex2b.m. Foi
utilizado o espaçamento para malha com hx = 0.1 e hy=0.1. Digite u e enter na janela de
comandos para ver a matriz da solução aproximada. Desta vez, como tivemos a solução analítica
fornecida pelo exercício, pudemos avaliar o erro de aproximação. Abaixo, veja a tabela com os
erros e o gráfico da solução aproximada com a solução analítica:

Erro, norma 2 0.30203


Erro, norma Sup 0.38937

Tabela 1 – Erro de aproximação

Gráfico 2 – Solução aproximada e Solução Analítica


c. uxx + uyy = -[cos(x+y)+cos(x-y)], 0 < x < π e 0 < y < π/2 com condições

u(x,0) = cos(x), u(x, π/2) = 0 , 0 ≤ x ≤ π

u(0,y)=cos(y), u(π,y)=-cos(y), 0 ≤ y ≤ π/2,

com solução analítica u(x,y) = cos(x)cos(y).

Solução:
Na janela de comandos do Octave, digite ex2c, onde será executado o arquivo ex2c.m. Foi
utilizado o espaçamento para malha com hx = 0.1 e hy=0.1. Digite u e enter na janela de
comandos para ver a matriz da solução aproximada. Desta vez, como tivemos a solução analítica
fornecida pelo exercício, pudemos avaliar o erro de aproximação. Abaixo, veja a tabela com os
erros e o gráfico da solução aproximada com a solução analítica:

Erro, norma 2 0.0046939


Erro, norma Sup 0.0056817
Tabela 2 – Erro de aproximação

Gráfico 3 – Solução aproximada e Solução Analítica

3. Descreva como o Método de Diferenças Finitas pode ser usado para encontrar aproximações
de u(x,y) que resolvem o seguinte problema:

uxx + uyy = 32u se -1< x < 1 e -1 < y < 1


u(x,-1) = 1, u(x,y) = 0, 0 ≤ x ≤ 1
ux(-1,y) = u/2, u(1,y) = -u/2, -1 ≤ y ≤ 1.

Solução:

j
−2 uij+ ui−1
j
ui+1 u j +1−2 uij +uij−1
Para a discretização, utiliza-se para uxx e i para uyy. Não há
h² k²
valores de u em x = 1 e x = -1, entretanto, temos os valores das derivadas parciais de x.
Utilizemos as fórmulas avançada e atrasada para aproximar o valor de u nestes pontos. Temos:

j
−2 uij+ ui−1
j
ui+1 uij +1−2 uij +uij−1 j
2
+ 2
= 32 ui
h k
u1j
u1j −u0j u0j u j
=
= e então, 0 h e
h 2 +1
2
uNj
uNj +1−u Nj −u Nj +1 u j
=
= e então, N +1 h
h 2 +1
2
Com J = 1,...,M.
Definimos:
v = (v1, ... , vN | vN+1, ..., v2n | vMN+1, ... , VMN);
f = (f11, ... , fN1 | f12, ... , fN2 | f1M, ... , fNM);
by = h²(g10, ... , gN0 | 0, ... , 0| ... | g1M, ... , gNM);
j
bx = k²(g01, ... , gN+11 | g02 ,0 ... 0, gN+12 | ... | g0M ,0 ... 0, gN+1M) como transformação do índice duplo de ui .

Resolvemos o sistema:
Av = f – bx – by,
onde temos :
Ai,i = -2(h² + k² + 16h²k²), i = 1,...,NM;
Ai,i+1 = k², i = 1,...,NM -1;
Ai,i-1 = k², i = 2,..., NM;
Ai,i+N = h², i = 1,...,N(M-1);
Ai,i-N = h², i = N,...,NM;
Ar,s = 0 nas demais posições.
Logo,
f = (32v1, ... , 32vN | 32vN+1, ..., 32v2n | 32vMN+1, ... , 32VMN)t;
by = h²(1, ... , 1| 0, ... , 0| ... | 1, ... , 1)t;

v1 v N v N +1 v N +2 v N ( M −1)+1 v MN
bx = k² ( h , ... , h | h , ,0 ... 0, h , | ... | h ,,0 ... 0, h ,)t.
+1 +1 +1 +1 +1 +1
2 2 2 2 2 2
Escrevendo o sistema como
Av = b,
temos
Ai,i = -2(h² + k² + 16h²k²), i = 2,...,NM;
Ai,i+1 = k², i = 1,...,NM -1;
Ai,i-1 = k², i = 2,..., NM;
Ai,i+N-1 = h², i = 1,...,N(M-1);
Ai,i-N+1 = h², i = N,...,NM;

A1,1 = -2(h² + k² + 16h²k²) + h ;
+1
2

AN,1 = h² + h ;
+1
2

AvN+1,1 = h , k = 1,...,M-1;
+1
2

AvN,1 = h , k = 2,...,M;
+1
2
Ar,s = 0 em outras posições.
b = (-h², ... , -h²| 0, ... , 0| ... | 0, ... , 0)t .
Portanto, resolvendo o sistema, obteremos uma discretização.

4. Encontre as soluções aproximadas para os problemas parabólicos apresentados abaixo,


usando os métodos Explícito, Implícito e de Cranck-Nicolson. Compare os resultados
obtidos pelos três métodos e também com a solução analítica, quando for possível.

a. ut – uxx = 0, 0 < x < 2 e t > 0 com condições

u(0,t) = u(2,t) = 0

u(x,0) = x(2-x), 0 ≤ x ≤ 2;

Solução:

Foram utilizados t = 0.5 e h=0.4 para que não haja instabilidade. Na janela de comandos do
Octave, digite metodo = 1 e logo em seguida ex4a, onde será executado o arquivo ex4a.m. Desta
forma, será utilizado o método explícito para resolver o problema. Digite uexp e dê enter para
visualizar a solução nos determinados tempos. Após vermos os resultados, digite clear e repita o
processo, entrando na janela de comandos com metodo = 2 e em seguida ex4a, onde será
utilizado o método implícito para resolver o problema. Digite uimp para visualizar a solução nos
determinados tempos. Novamente, digite clear e inicie a resolução do problema pelo método de
Crank-Nicolson, digitando metodo = 3 e depois ex4a. Escreva ucn na janela de comandos para
visualizar a solução aproximada nos determinados tempos. Abaixo, será feito um comparativo
dos resultados na mesma posição e a apresentação dos gráficos para cada método.

uexp (3) = 0.27516;


uimp (3) = 0.31756;
ucn (3) = 0.29689.
Gráfico 3 – Solução aproximada pelos três métodos, Explícito, Implícito e C-N, respectivamente

b. π ²ut – uxx = 0, 0 < x < 1 e t > 0 com condições

u(0,t) = u(1,t) = 0, t > 0

u(x,0) = cos π(x-0.5), 0 ≤ x ≤ 1;

com solução analítica u(x,t) = e-tcos π(x-0.5);

Resolução:

Foram utilizados t = 0.5 e h = 0.2. Na janela de comandos do Octave, digite metodo = 1 e logo
em seguida ex4b, onde será executado o arquivo ex4b.m. Desta forma, será utilizado o método
explícito para resolver o problema. Digite uexp e dê enter para visualizar a solução nos
determinados tempos. Após vermos os resultados, digite clear e repita o processo, entrando na
janela de comandos com metodo = 2 e em seguida ex4b, onde será utilizado o método implícito
para resolver o problema. Digite uimp para visualizar a solução nos determinados tempos.
Novamente, digite clear e inicie a resolução do problema pelo método de Crank-Nicolson,
digitando metodo = 3 e depois ex4b. Escreva ucn na janela de comandos para visualizar a
solução aproximada nos determinados tempos. Abaixo, será feito um comparativo doe erros
obtidos, dos resultados na mesma posição e a apresentação dos gráficos para cada método.

Explícito Implícito Crank - Nicolson


t = 0.5 0.27792 0.28291 0.28042
Tabela 3 – Erros de aproximação

uexp (3) = 0.57924;


uimp (3) = 0.59297;
ucn (3) = 0.58623.

Gráfico 4 – Solução exata e aproximada pelo método explícito, implícito e C-N, respectivamente

c. ut – uxx = 2, 0 < x < 1 e t > 0 com condições

u(0,t) = u(1,t) = 0, t > 0

u(x,0) = sen πx + x(1-x), 0 ≤ x ≤ 1;

com solução analítica u(x,t) = e-π²tsen πx + x(1-x).


Solução:
Foram utilizados t = 0.5 e h = 0.2. Na janela de comandos do Octave, digite metodo = 1 e logo
em seguida ex4c, onde será executado o arquivo ex4c.m. Desta forma, será utilizado o método
explícito para resolver o problema. Digite uexp e dê enter para visualizar a solução nos
determinados tempos. Após vermos os resultados, digite clear e repita o processo, entrando na
janela de comandos com metodo = 2 e em seguida ex4c, onde será utilizado o método implícito
para resolver o problema. Digite uimp para visualizar a solução nos determinados tempos.
Novamente, digite clear e inicie a resolução do problema pelo método de Crank-Nicolson,
digitando metodo = 3 e depois ex4c. Escreva ucn na janela de comandos para visualizar a
solução aproximada nos determinados tempos. Abaixo, será feito um comparativo doe erros
obtidos, dos resultados na mesma posição e a apresentação dos gráficos para cada método.

Explícito Implícito Crank - Nicolson


t = 0.5 0.26050 0.27249 0.26415
Tabela 4 – Erros de aproximação

uexp (3) = 0.24144;


uimp (3) = 0.25919;
ucn (3) = 0.24731.

Gráfico 5 – Solução exata e aproximada pelo método explícito, implícito e C-N, respectivamente

5. Seja u solução da equação ut – uxx = 0, 0 ≤ x ≤ 0.5, t > 0, com condições de contorno

u(0,t) = 0 e ux(0.5,t) = -0.5u, t > 0

e condição inicial u(x,0) = x(1-x), 0 < x ≤ 0.5.

a. Verifique que as equações abaixo definem uma discretização (explícita) para o problema

ui j+1 = iλhui-1j + (1-2iλh)uij + iλhui+1j , i = 1:N-1


e
uNj+1 = 2NλhujN-1 + (1-Nλh(h+2))ujN
onde
λ=k/h², Nh = 0.5 e u0 = 0.
Solução:

Vejamos que se trata de uma discretização explícita:

Dado ut - xu x x = 0, temos:
j
−2 uij+ ui−1
j
uij +1−uij ui+1 j+1 j kx j j j
– x[ 2
] = 0 se, e somente se ui - ui - 2 [ui +1−¿ 2 ui +ui −1 ¿
k h h
= 0 (i)
k
Por hipótese ƛ = , então, substituindo em (i):
h2

uij+1−¿ uij - ƛxuij+1+2 ƛxuij - ƛxui−1


j
=0

Sabendo que x = ih

uij+1−¿ uij - ƛihuij+1+ 2ƛihuij - ƛihui−1


j
= 0 se, e somente se

uij+1= uij + ƛihuij+1- 2ƛihuij + ƛihui−1


j
se, e somente se

uij+1= (ƛih)ui−1
j j j
+ (1-2ƛih)ui + (ƛih¿ ui+ 1

Quando temos i = N:

u Nj+1= (ƛNh)u N−1


j j j
+ (1-2ƛNh)u N + (ƛNh¿ u N+ 1 (ii), entretanto, o ponto (xn+1, tj) não está na
malha.

Usaremos a condição de contorno ux(Nh,tj) = -Nhu para aproximar a função no ponto


através da discretização de ux por diferenças centradas. Daí,

uNj +1−u Nj −1 j
ux(Nh,tj) é aproximadamente = −Nhu N e isso implica que
2h

u Nj +1=u jN−1−2 Nh² u Nj .


Substituindo a aproximação em (ii),

u Nj+1= (ƛNh)u N−1


j j j j
+ (1-2ƛNh)u N + (ƛNh¿(u N−1−2 Nh² u N )

j j
= 2 ƛNhu N−1 + (1-ƛNh(2 +2Nh²))u N e como Nh = 1/2,

j j
= 2Nƛhu N−1+ (1-Nλh(2+h))u N .

b. Tome h = 0.1, λ = 0.5 e calcule aproximações, no primeiro nível de tempo, correspondentes


a i = 3 e i = 5. As aproximações serão boas nos pontos de (0.5,0)? Explique.

Solução: Na janela de comandos do octave, digite ex5b para inicializarmos a rotina ex5b.m.

1 1
Temos que u3 = 0,207 e u5 = 0,23875.
O erro de aproximação sofre alterações na vizinhança de (0.5,0), pois ux precisou de
discretizada. Como foi utilizado o método de aproximação por diferenças centradas, a
ordem do erro foi O(h²).

6. Verifique as discretizações possíveis para o problema não-lienar:

ut – a(u)uxx = f(x,t), 0 < x < 1 e t > 0

u(0,t) = u(1,t) = 0, t > 0

u(x,0) = g(x), 0 ≤ x ≤ 1

onde a(u) > 0, f(x,t) e g(x) são funções conhecidas. Estabeleça as vantagens e desvantagens de
cada um dos métodos propostos.
Solução:

Método Explícito: É um método que possui erro de ordem O(k+h²), entretando apresenta
problemas em alguns casos pelo fato de ser condicionalmente estável, ou seja, ele depende de
uma relação entre os tamanhos dos passos utilizados na discretização.
Método Implícito: É um método que possui erro de ordem O(k + h²) e é incondicionalmente
estável, mas pode ter erros maiores que o método explícito, por questão de cálculos mais
detalhados, apesar de terem a mesma ordem do erro.
Método de Crank-Nicolson: É um método que possui erro de ordem O(k²+h²) e é
incondicionalmente estável também, entretanto o custo computacional é mais elevado do que os
outros em determinadas ocasiões.

7. Encontre soluções aproximadas para os problemas associados às equações da onda

a. utt – 0.25uxx = 0, 0 < x < 0.5 e t > 0, com condições

u(0,t) = u(0.5,t) = 0, t > 0

u(x,0) = 0, ut(x,0) = sen4πx, 0 ≤ x ≤ 0.5;

Solução: Na janela de comandos do Octave, digite ex7a para a rotina ex7a.m ser executada.
As soluções aproximadas podem ser vistas através do vetor u, e abaixo se encontra o gráfico da
solução aproximada.

Gráfico 6 – Solução aproximada

b. utt – uxx = 0, 0 < x < 1 e t > 0, com condições

u(0,t) = u(1,t) = 0, t > 0

u(x,0) = sen πx, ut(x,0) = 0, 0 ≤ x ≤ 1;


Resolução:
Na janela de comandos do Octave, digite ex7b para a rotina ex7b.m ser executada. As soluções
aproximadas podem ser vistas através do vetor u, e abaixo se encontra o gráfico da solução
aproximada.
Gráfico 7 – Solução aproximada

c. utt – uxx = 0, 0 < x < 1 e t > 0, com condições

u(0,t) = u(1,t) = 0, t > 0

u(x,0) = 1 se 0 ≤ x ≤ 0.5,
0.5 ≤ x ≤ 1

ut(x,0) = 0, 0 ≤ x ≤ 1.

Verifique como as soluções se comportam em t = 0.5 quando usamos h = 0.1 e h = 0.01.

Solução:
Na janela de comandos do Octave, digite ex7c para a rotina ex7c.m ser executada. As soluções
aproximadas podem ser vistas através do vetor u. Na rotina ex7c.m, altere os valores de h para
ver como a função se comporta. Abaixo se encontram os gráficos das soluções aproximadas para
t = 0.5 e h = 0.2 e h = 0.1.

Gráfico 7 – Solução aproximada para h = 0.2 e h = 0.1

Para h = 0.01, o problema aparenta apresentar instabilidade.

Você também pode gostar