capítulo 10. equações diferenciais parcias -...
TRANSCRIPT
![Page 1: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/1.jpg)
214
Grupo: Marcelo Ricardo P. Pinto; Ricardo Rocha; Marcelo A. Carrasqueira; Felipe Aguiar; Danilo C. Pereira; Juliana de Miranda; Mariana Garcia.
Capítulo 10. Equações Diferenciais Parcias 10.1. Equações Diferenciais Parcias Elípticas
10.1.1. Introdução
As equações diferenciais se classificam em ordinárias e parciais.
No curso de análise numérica já foram tratados métodos numéricos para a
resolução das ordinárias.
Este trabalho tratará de métodos, numéricos, para solucionar equações
diferenciais parciais de dois tipos: elípticas e parabólicas.
Uma equação diferencial parcial (E.D.P.) é uma equação que contém uma
função incógnita de duas ou mais variáveis e suas derivadas parciais em relação a
essas variáveis.
A ordem de uma E.D.P. é a ordem da mais alta derivada presente.
Uma solução de uma E.D.P. é qualquer função que satisfaça à equação
identicamente.
Os tipos de E.D.P. que trataremos aqui são de segunda ordem, assim
resolvemos destacar também sua forma geral:
Au
xx y B
ux y
x y Cu
yx y D
ux
x y Euy
x y Fu x y G x y∂∂
∂∂ ∂
∂∂
∂∂
∂∂
2
2
2 2
2( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , )+ + + + + =
Definindo ∆=B2-4AC temos:
![Page 2: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/2.jpg)
215
• Se ∆<0 a equação será chamada de elíptica;
• Se ∆=0 a equação será chamada de parabólica;
• Se ∆>0 a equação será chamada de hiperbólica.
Um tipo especial de E.D.P. elíptica é a Equação de Poisson:
∇ =2u x y( , ) ∂∂
∂∂
2
2
2
2
ux
x yu
yx y f x y( , ) ( , ) ( , )+ = ,
e um tipo especial de E.D.P. parabólica é a Equação do Calor:
∂∂
α∂∂
ut
x tu
xx t( , ) ( , )= 2
2
2 .
Essas duas equações serão os nossos objetos de estudo.
10.1.2. Motivação
Em muitas aplicações de Física, Biologia, Química, Engenharia e outros,
mais especificamente na formulações de modelos matemáticos, as equações
diferencias são de grande importância, resolvendo a maioria dos problemas.
Ao contrário com que acontece com as equações diferenciais ordinárias,
não existem métodos de resoluções para as equações diferenciais parciais (com
exceção dos métodos numéricos), cada equação é um caso particular.
Os métodos numéricos são eficientes, de fácil entendimento e sendo de
iteração são facilmente programáveis.
10.1.3. Modelo
Primeiramente trataremos com as equações parciais diferenciais elípticas, e
como citado acima vamos considerar a Equação de Poisson.
![Page 3: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/3.jpg)
216
10.1.4. Metodologia
Vamos considerar a equação de Poisson:
∇ =2u x y( , ) ∂∂
∂∂
2
2
2
2
ux
x yu
yx y f x y( , ) ( , ) ( , )+ = (1)
para (x,y) ∈ R e
u(x,y) = g(x,y) para (x,y) ∈ S
onde R = { (x,y) / a < x < b, c < y < d } e onde S denota o bordo de R.
Assumiremos que f e g são contínuas em seus domínios e que a solução a
encontrar será única.
O método usado é uma adaptação do método da diferença finita para
problemas de valores de borda. O primeiro passo é encontrar inteiros n e m de
modo que h = (b-a)/n e k=(d-c)/m. Particionaremos o intervalo [a,b] em n partes
iguais de largura h e o intervalo [c,d] em m partes iguais de largura k (ver figura 1)
fornecendo uma grade no retângulo R e desenhando linhas verticais e horizontais
através de pontos com coordenadas (xi,yj), onde:
xi = a + ih para i = 0,1,...,n
yj = c + jk para j = 0,1,...,m
![Page 4: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/4.jpg)
217
As linhas x = xi e y = yj são chamadas linhas da grade e suas interseções
são os pontos malhas da grade. Para cada ponto malha do interior da grade
usaremos a série de Taylor na variável x sobre xi para gerar a fórmula da diferença
central :
∂∂
∂∂
ε2
21 1
2
2 4
4
2
12u
xx y
u x y u x y u x y
hh u
xyi j
i j i j i ji j( )
( ) ( ) ( )( , ),,
, , ,=− +
−+ − (2)
onde ε ∈ (xi-1,xi+1);
E a série de Taylor na variável y sobre yj para gerar a fórmula da diferença
central :
∂∂
∂∂
η2
21 1
2
2 4
4
2
12u
yx y
u x y u x y u x y
hk u
yxi j
i j i j i ji j( )
( ) ( ) ( )( , ),,
, , ,=− +
−+ − (3)
onde η ∈ (yj-1,yj+1).
Usando essas fórmulas na Eq. (1), podemos expressar a equação de Poisson
nos pontos (xi,yj) como:
u x y u x y u x y
h
u x y u x y u x y
ki j i j i j i j i j i j( ) ( ) ( ) ( , ) ( , ) ( , ), , ,+ − + −− +
+− +
=1 12
1 12
2 2
= + +f x yh u
xy
k ux
x yi j i j i j( , ) ( , ) ( , )2 4
4
2 4
412 12∂∂
ε∂∂
para cada i = 1,2,...,(n-1) e j = 1,2,...,(m-1).
![Page 5: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/5.jpg)
218
E as condições de bordo como:
u(x0,yj) = g(x0,yj), para cada j = 0,1,...,m;
u(xn,yj) = g(xn,yj), para cada j = 0,1,...,m;
u(xi,y0) = g(xi,y0) , para cada i = 0,1,...,n-1;
u(xi,ym)= g(xi,ym) , para cada i = 0,1,...,n-1;
Dessa forma, a equação diferencial, com o resultado do método da
diferença central, com erro local de truncamento de ordem O(h2 + k2), pode ser
escrita como : 2 12
1 1
2
1 12h
kw w w
hk
w w h f x yi j i j i j i j i j i j
�
��
�
�� +
�
�
�� − + −
�
��
�
�� + = −+ − + −, , , , ,( ) ( ) ( , )
(4)
para cada i = 1,2,...,n-1 e j = 1,2,...,m-1 e
w0,j = g(x0,yj) para cada j = 0,1,...,m
wn,j = g(xn,yj) para cada j = 0,1,...,m (5)
wi,0 = g(xi,yj) para cada i = 1,2,...,n-1
wi,m = g(xi,ym) para cada i = 1,2,...,n-1
onde wi,j aproxima u(xi,yj).
A equação típica em (4) envolve aproximações para u(x,y) nos pontos (xi-
1,yj), (xi,yj), (xi+1,yj), (xi,yj-1) e (xi,yj+1).
Reproduzindo uma porção de grades onde esses pontos estão situados (ver
figura 1), mostraremos que cada equação envolve aproximações na estrela formada
na região sobre (xi,yj).
![Page 6: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/6.jpg)
219
Se usarmos as informações sobre as condições de bordo sempre que o
sistema dado por (4) for apropriado, isto é, todos os pontos (xi,yj) são adjacentes
aos pontos malhas do bordo, temos um sistema (n-1)(m-1) de equações lineares em
(n-1)(m-1) incógnitas, onde as incógnitas são as aproximações wi,j para u(xi,yj) no
interior dos pontos malhas.
O sistema linear envolvendo essas incógnitas é expresso por matriz
calculando mais eficientemente se uma reelaboração dos pontos malhas interiores
for feita. Uma recomendação de reelaboração desses pontos é dado por:
Pl = (xi,yj) e wl = wi,j,
onde l = i + (m-1-j)(n-1), para cada i = 1,2,...,n-1 e j = 1,2,...,m-1. Esta tabela de pontos
malhas consecutivamente deixa certo e levanta o sistema mais baixo.
10.1.5. Algoritmo de Equação de Diferença-Finita de
Poisson
Para aproximar a solução da equação de Poisson
∂∂
∂∂
2
2
2
2
ux
uy
f x y+ = ( , ) a x b c y d≤ ≤ ≤ ≤,
![Page 7: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/7.jpg)
220
Sejam as condições de fronteira:
u(x,y)=g(x,y) se x=a ou x=b e c y d≤ ≤
e
u(x,y)=g(x,y) se y=c ou y=d e a x b≤ ≤
As entradas são os extremos a,b,c,d ; os inteiros m,n ; a tolerância TOL ; e o número
máximos de iterações Lfront.
As saídas aproximadas w i j, para u x yi i( , ) para cada i=1,...,n-1 e j=1,...,m-1 ou uma
mensagem que diz que o número de iterações foi excedido.
Passo 1) Faça h=(b-a)/n
k=(d-c)/m
Passo 2) Para i=1,...,n-1 faça x a ihi = + (os passos 2 e 3 constrõem
os pontos de malha)
Passo 3) Para j=1,...,m-1 faça y c jki = +
Passo 4) Para i=1,...,n-1
para j=1,...,m-1 faça w i j, = 0
Passo 5) Faça
r h kq rl
== =
=
2 2
2 11
/( )
Passo 6) Enquanto I ≤ Lfront faça o passo 7 ao 20.
(Esses passos executam as iterações de Gauss-Seidel)
Passo 7) Faça
![Page 8: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/8.jpg)
221
( ) ( ) ( )( )z h f x y g a y rg x d rw w q
norm z w
w z
m m m m
m
m
= − + + + +
= −
=
− − − −
−
−
21 1 1 1 1 2 2 1
1 1
1 1
, , , /, ,
,
,
Passo 8) Para i = 2,...,n-2 Faça
( ) ( )( )z h f x y rg x d w w rw q
se
w z norm
i m i i m i m i m
i m
= − + + + +
− >
− − − + − −
−
21 1 1 1 1 2
1
, , /, , ,
,
então faça norm w zi m= −−, 1
faça w zi m, − =1
Passo 9) Faça
( ) ( ) ( )( )z h f x y g b y rg x d w rw q
se
w z norm
n m m n n m n m
n m
= − + + + +
− >
− − − − − − − −
− −
21 1 1 1 2 1 1 2
1 1
, , , /, ,
,
então faça
faça
norm w zn m= −− −1 1,
w zn m− − =1 1,
Passo 10) Para j = m-2,...,2 faça o passo 11 ao 13
Passo 11) Faça ( ) ( )( )z h f x y g a y rw rw w qj j j j j= − + + + ++ −2
1 1 1 1 1 2, , /, , ,
se w z normj1, − > então faça norm w zj= −1,
faça w zj1, =
![Page 9: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/9.jpg)
222
Passo 12) Para i=2,...,n-2 faça
z h f x y w rw w rw qi j i j i j i j i j= − + + + +− + + −( ( , ) ) /, , , ,
21 1 1 1
se w zi j, − >norm então faça norm w zi j= −,
faça w zi j, =
Passo 13) Faça
z=( ( , ) ( , ) ) /, , ,− + + + +− − − + − −h f x y g b y w rw rw qn j j n j n j n j2
1 2 1 1 1 1
Passo 14) Faça z h f x y g a y rg x c rw w q= − + + + +( ( , ) ( , ) ( , ) ) /, ,2
1 1 1 1 1 2 2 1
se w z norm1 1, − > então faça norm w z= −1 1,
faça w z1 1, =
Passo 15) Para i=2,...,n-2 faça
z h f x y g x c w rw w qi i i i= − + + + +− +( ( , ) ( , ) ) /, , ,2
1 1 1 1 2 1 1
se w z normi ,1 − > então faça norm w zi= −,1
faça w zi ,1 =
Passo 16) Faça
z h f x y g b y rg x c w rw qn n n n= − + + + +− − − −( ( , ) ( , ) ( , ) ), ,2
1 1 1 1 2 1 1 2
se w z normn− − >1 1, então faça norm w zn= −−1 1,
faça w zn− =1 1,
Passo 17) Se norm � TOL então faça passos 18 e 19
Passo 18) Para i=1,...,n-1
para j=1,...,m-1 imprima ( , , ),x y wi j i j
![Page 10: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/10.jpg)
223
Passo 19) Fim. (programa terminado com sucesso)
Passo 20) Faça i=i+1
Passo 21) Imprima (“O número máximo de iterações foi atingido”)
Fim.
10.1.6. Fluxograma
Início
DadosIniciais
Cálculo de h e k
i = 1
Cálculo de xi
i = n-1 i = i+1No
j = 1
Yes
Cálculo de yi
j = m-1 j = j+1No
i = 1
Yes
j = 1
wi,j = 0
j = m-1 j = j+1No
i = i+1
![Page 11: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/11.jpg)
224
i = n-1 No
Cálculo de r,q e i=1
Yes
Cálculo de z,norm e"w"
norm é menorou igual TOL i = i+1No
Imprima osresultados
Yes
FIM
i menor queLFront
Número de iteraçõesfoi excedido
No
Yes
10.1.7. Exemplo
Considere a equação de Poisson
( ) ( )∂∂
∂∂
2
2
2
2
ux
x yu
yx y xey, , ,+ = 0<x<2, 0<y<1,
com condições de contorno
( )( )
u y
u x x
0 0
0
, ,
, ,
=
=
( )( )
u y e
u x ex
y2 2
1
, ,
, ,
=
=
0 10 2
≤ ≤≤ ≤
yx
,.
usaremos o algoritmo para aproximar a solução exata ( )u x y xey, = com n = 6 e m = 5.
O critério de parada para o método Gauss-Seidel no passo 17 requer
( ) ( )w wi jl
i jl
, , ,− ≤− −1 1010
![Page 12: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/12.jpg)
225
para cada i = 1,...,5, e j = 1,...,4; então a solução para a equação diferencial foi obtida de
modo preciso, e o procedimento de parada para l = 61. O resultado com os valores
corretos são apresentados na tabela abaixo:
j xi yi wi,j(61) u(xi,yi) |u(xi,yj) - wi,j
(61)|
1 0,33330 0,20000 0,40726 0,40713 1,3 x 10-4
2 0,33330 0,40000 0,49748 0,49727 2,08 x 10-4
3 0,33330 0,60000 0,60760 0,60737 2,23 x 10-4
4 0,33330 0,80000 0,74201 0,74185 1,6 x 10-4
1 0,66670 0,20000 0,81452 0,81427 2,55 x 10-4
2 0,66670 0,40000 0,99496 0,99455 4,08 x 10-4
3 0,66670 0,60000 1,21520 1,21470 4,37 x 10-4
4 0,66670 0,80000 1,48400 1,48370 3,15 x 10-4
1 1,00000 0,20000 1,22180 1,22140 3,64 x 10-4
2 1,00000 0,40000 1,49240 1,49180 5,8 x 10-4
3 1,00000 0,60000 1,82270 1,82210 6,24 x 10-4
4 1,00000 0,80000 2,22600 2,22550 4,51 x 10-4
1 1,33330 0,20000 1,62900 1,62850 4,27 x 10-4
2 1,33330 0,40000 1,98980 1,98910 6,79 x 10-4
3 1,33330 0,60000 2,43020 2,42950 7,35 x 10-4
4 1,33330 0,80000 2,96790 2,96740 5,4 x 10-4
1 1,66670 0,20000 2,03600 2,03570 3,71 x 10-4
2 1,66670 0,40000 2,48700 2,48640 5,84 x 10-4
3 1,66670 0,60000 3,03750 3,03690 6,41 x 10-4
4 1,66670 0,80000 3,70970 3,70920 4,89 x 10-4
10.1.8. Implementação
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<complex.h>
float exemplo(float a1,int a2);
void main(void)
{
![Page 13: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/13.jpg)
226
float m,n,r,q,l,a,b,c,d,i,j,w[4][4],LFront,norm,TOL;
float h,k,x[200],y[200],aux,aux1,aux2,aux3,aux4,aux5,z;
m=5;
n=6;
printf("entre com o valor de a: ");
scanf("%f",&a);
printf("entre com o valor de b: ");
scanf("%f",&b);
printf("entre com o valor de c: ");
scanf("%f",&c);
printf("entre com o valor de d: ");
scanf("%f",&d);
printf("entre com o valor de tolerƒncia: ");
scanf("%f",&TOL);
printf("entre com o m ximo de itera‡äes : ");
scanf("%f",&LFront);
h=(b-a)/n;
k=(d-c)/m;
for (i=1;i<=(n-1);i++) //passo 2
x[i]=a+(i*h);
for (j=1;j<=(m-1);j++) //passo 3
y[i]=c+(j*k);
![Page 14: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/14.jpg)
227
for (i=1;i<=(n-1);i++) //passo 4
for (j=1;j<=(m-1);j++)
w[i][j]=0;
r=h*h/k*k; //passo 5
q=2*(1+r);
l=1;
while (l<=LFront) //passo 6
{
aux=exemplo(x[1],y[m-1]); // passo 7
aux1=exemplo(a,y[m-1]);
aux2=exemplo(x[1],d);
aux3=exemplo(x[1],y[m-2]);
aux4=exemplo(x[2],y[m-1]);
aux5=exemplo(x[1],y[m-1]);
z=(-(h*h)*aux + aux1 + r*aux2 + r*aux3 + aux4)/q;
norm=fabs(z-aux5);
aux5=z;
for (i=2;i<=n-2;i++) //passo 8
{
aux=exemplo(x[i],y[m-1]);
aux1=exemplo(x[i],d);
aux2=exemplo(x[i-1],y[m-1]);
aux3=exemplo(x[i+1],y[m-1]);
![Page 15: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/15.jpg)
228
aux4=exemplo(x[i],y[m-2]);
aux5=exemplo(x[i],y[m-1]);
z=(-(h*h)*aux+ r*aux1 + aux2 + aux3 +r*aux4)/q;
if( abs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
// fim de 8
{
aux=exemplo(x[n-1],y[m-1]);
aux1=exemplo(b,y[m-1]);
aux2=exemplo(x[n-1],d);
aux3=exemplo(x[n-2],y[m-1]);
aux4=exemplo(x[n-1],y[m-2]);
aux5=exemplo(x[n-1],y[m-1]); // passo 9
z=(-(h*h)*aux + aux1 +r*aux2 + aux3 + r*aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
{
for(j=m-2;j<=2;j--) //passo 10
{
![Page 16: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/16.jpg)
229
aux=exemplo(x[1],y[j]); // passo 11
aux1=exemplo(a,y[j]);
aux2=exemplo(x[1],y[j+1]);
aux3=exemplo(x[1],y[j-1]);
aux4=exemplo(x[2],y[j]);
aux5=exemplo(x[1],y[j]);
z=(-(h*h)*aux + aux1 +r*aux2 + r*aux3 + aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
for(i=2;i<=n-2;i++)
{
aux=exemplo(x[i],y[j]); // passo 12
aux1=exemplo(x[i-1],y[j]);
aux2=exemplo(x[i],y[j+1]);
aux3=exemplo(x[i+1],y[j]);
aux4=exemplo(x[i],y[j-1]);
aux5=exemplo(x[i],y[j]);
z=(-(h*h)*aux + aux1 +r*aux2 + aux +r*aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
![Page 17: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/17.jpg)
230
}
//fim do 12
{
aux=exemplo(x[n-1],y[j]); // passo 13
aux1=exemplo(b,y[j]);
aux2=exemplo(x[n-2],y[j]);
aux3=exemplo(x[n-1],y[j+1]);
aux4=exemplo(x[n-1],y[j-1]);
aux5=exemplo(x[n-1],y[j]);
z=(-(h*h)*aux + aux1 + aux2 +r*aux3 +r*aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
}
//fim do 10
{
aux=exemplo(x[1],y[1]); // passo 14
aux1=exemplo(a,y[1]);
aux2=exemplo(x[1],c);
aux3=exemplo(x[1],y[2]);
aux4=exemplo(x[2],y[1]);
aux5=exemplo(x[1],y[1]);
![Page 18: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/18.jpg)
231
z=(-(h*h)*aux + aux1 + r*aux2 +r*aux3 + aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
for(i=2;i<=n-2;i++)
{
aux=exemplo(x[i],y[1]); // passo 15
aux1=exemplo(x[i],c);
aux2=exemplo(x[i-1],y[1]);
aux3=exemplo(x[i],y[2]);
aux4=exemplo(x[i+1],y[1]);
aux5=exemplo(x[i],y[1]);
z=(-(h*h)*aux + aux1 +r*aux2 + aux3 +r*aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
//fim do 15
{
aux=exemplo(x[n-1],y[1]); // passo 16
aux1=exemplo(b,y[1]);
aux2=exemplo(x[n-1],c);
![Page 19: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/19.jpg)
232
aux3=exemplo(x[n-2],y[1]);
aux4=exemplo(x[n-1],y[2]);
aux5=exemplo(x[n-1],y[1]);
z=(-(h*h)*aux + aux1 +r*aux2 + aux3 +r*aux4)/q;
if( fabs(aux5-z) > norm)
norm=fabs(aux5-z);
aux5=z;
}
if(norm<=TOL) //passo 17
{
for(i=1;i<=(n-1);i++)
for(j=1;j<=(m-1);j++) //passos 18 e 19
{
printf("%f","os valores de x[i] y[j] e
aux5[i][j]:",x[i],y[j],aux5);
getch();
}
printf("Procedimento completado com sucesso!");
}
//fim do if norm
l=l+1; //passo 20
}
printf("Procedimento completado sem sucesso!");
![Page 20: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/20.jpg)
233
}//fim do main
float exemplo(float a1,int a2) { float prod; /* definicao da funcao */
prod=a1*(exp(a2));
return(prod);
}
10.2. Equações Diferenciais Parciais Parabólicas
10.2.1. Modelo
Cuidaremos, agora das equações parciais diferenciais parabólicas., considerando a
Equação de propagação do Calor.
10.2.2. Metodologia
Consideremos a Equação de propagação do Calor:
∂∂
α∂∂
ut
x tu
xx t( , ) ( , )= 2
2
2 (1)
0<x<1 , t>0
com condições iniciais
u(t,0) = 0
u(1,t) = 0, t>0 e u(x,0) = f(x), 0 ≤ x ≤ 1
![Page 21: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/21.jpg)
234
Usaremos a aproximação da solução do problema de diferença finita e o método
similar usado em equações diferenciais elípticas.
Primeiramente, selecionaremos duas malhas constantes, h e k, tal que m = 1/h seja
um inteiro. Os pontos dessa grade serão da forma (xi,tj), onde xi = ih para i= 0,1,...,m e tj
= jk, para j = 0,1,... .
Obteremos o método de diferença usando a série de Taylor em t para formar o
quociente de diferença.
∂∂
∂∂
µut
x tu x t k u x t
kk
tu xi j
i j i ji j( , )
( , ) ( , )( , )=
+ −−
2
2
2 (2)
para algum µj ∈ (tj,tj+1) e a série de Taylor em x para formar o quociente de diferença:
∂∂
∂∂
ε2
2 2
2 4
4
2
12u
xx t
u x h t u x t u x h t
hh u
xti j
i j i j i ji j( )
( , ) ( ) ( , )( , ),,
, , ,=+ − + −
− (3)
onde ε ∈ (xi-1,xi+1).
A equação diferencial parcial (1) implica que para todo ponto interior da grade
(xi,tj), com i = 1,2,...,m-1 e j = 1,2,..., teremos:
∂∂
α∂∂
ut
x tu
xx ti j i j( , ) ( , )− =2
2
2 0
então o método da diferença usando quocientes de diferença (2) e (3) é dado por:
w w
k
w w w
hi j i j i j i j i j, , , , ,+ + −−
−− +
=1 2 1 12
20α (4)
onde wij aproxima u(xi,tj).
O erro local truncado da equação diferencial é:
τ∂∂
µ α∂∂
εi j i j i j
k ut
xh u
xt, ( , ) ( , )= −
2 12
2
22
2 4
4 (5)
Resolvendo a eq. (--0 para wi,j+1) dados, teremos:
![Page 22: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/22.jpg)
235
wk
hw
kh
w wi j i j i j i j, , , ,( )+ + −= −�
��
�
�� + +1
2
22
2 1 112α
α (6)
para cada i= 1,2,...,(m-1) e j = 1,2,... .
Assim a condição inicial u(x,0) = f(x), para 0≤x≤1, implica que wi,0=f(xi), para i
=
0,1,...,m, esse valor pode ser usado na eq. (6) para achar o valor de wi,j para i= 1,2,...,(m-
1). A condição inicial u(0,t) = 0 e u(1,t)= 0 implica que w0,1 = wm,1 = 0, então todas as
entradas da forma wi,1 pode ser determinada.
Se o procedimento é reaplicado uma vez em todas as aproximações wi,j1 os
valores de wi,2, ...,wi,m-1 podem ser obtidos de maneira similar.
Uma explicitação natural do método da diferença na eq. (6) implica que a matriz
(m-1) por (m-1) associada com seus sistemas pode ser escrita na forma tridiagonal :
( )( )
( )
A =
−−
−
�
�
�
�������
1 2 0 01 2
00
0 0 1 2
λ λλ λ
λλ λ
� �
� � � �
� � � � �
� � � � �
� � � � �
� �
onde λ = α2(k/h2).
Se tivermos:
w(0) = (f(x1), ... ,f(xm-1))t
e
w(j) = (wi,j, ... , wm-1,j)t para cada j = 1,2,...
então uma aproximação para a solução é dada por:
w(j) = Aw(j-1), para cada j = 1,2,... .
![Page 23: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/23.jpg)
236
Este método é conhecido como método Avançado de Diferença. Se a solução da
equação diferencial parcial tem quatro derivadas parciais contínuas em x e duas em t,
então a eq. (5) implica que o método é de ordem O(k + h2).
10.2.3. Algoritmo
Para aproximar solução de equações parciais parabólicas
( ) ( )∂∂
α∂∂
ut
x tu
xx t, , ,− =2
2
20 0 1< <x , 0 < <t T ,
sujeito as condições de contorno
( ) ( )u t u t0 1 0, , ,= = 0 < <t T ,
e condições iniciais
( ) ( )u x f x, ,0 = 0 1≤ ≤x :
Entrada ponto final l; tempo máximo T; constante α; inteiros m≥3,N≥1.
Saída aproximações w i j, para ( )u x ti j, para i = 1,...,m-1 e j = 1,...,N.
Passo 1) Faça h l m= ;
k T N= ;
λ α= 2 2k h .
Passo 2) Para i = 1,...,m-1 faça ( )w f ihi = . (valores iniciais)
Passo 3) Faça l1 1 2= + λ;
u l1 1= −λ .
Passo 4) Para i = 2,...,m-2 faça l u i1 11 2= + + −λ λ ;
u li = −λ 1 .
![Page 24: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/24.jpg)
237
Passo 5) Faça l um m− −= + +1 21 2λ λ .
Passo 6) Para j = 1,...,N faça passos 7 - 11.
Passo 7) Faça t = jk;
z w l1 1 1= .
Passo 8) Para i = 2,...,m - 1 faça ( )z w z li i i i= + −λ 1 .
Passo 9) Faça w zm m− −=1 1 .
Passo 10) Para i = m - 2,...,1 faça w z u wi i i i= − +1.
Passo 11) SAÍDA(t);
Para i = 1,...,m - 1 faça x = ih; SAÍDA ( )x w i, .
Passo 12) FIM.
10.2.4. Fluxograma
Início
Dados iniciais
Cálculo de h,k e λ
i = 1
wi = f(ih)
Cálculo de l 1 e u1
i = m - 1
No
Yes
i = 2
Cálculo de l 1 e u1
i = m - 2 No
i = i + 1
i = i + 1
Yes
Cálculo de l m-1
j = 1
Cálculo de t e z 1
i = 2
![Page 25: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/25.jpg)
238
Cálculo de zi
i = m -1
No
i = i + 1
Yes
Cálculo de wm-1
i = m - 2
Cálculo de wi
i = 1 No i = i - 1
Yes
SAÍDA (t)
i = 1
Cálculo de x
SAÍDA (x,wi)
i = m -1 No i = i + 1
Yes
j = N
Yes
FIM
No j = j + 1
10.2.5. Exemplo
Para h = 0.1 e k = 0.01, usado para aproximar a equação do calor
( ) ( )∂∂
α∂∂
ut
x tu
xx t, , ,− =2
2
20 0 1< <x , 0 < t,
( ) ( )u t u t0 1 0, , ,= = 0 < t, e ( )u x x, sen ,0 = π 0 1≤ ≤x ,
Os resultados de w i ,50 até ( )u x i , .0 5 onde i = 0,1,...,10 estão listados na tabela
abaixo:
![Page 26: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/26.jpg)
239
x i w i , 50 u(x i, 0.5) | w i , 50 - u(x i, 0.5) |
0 0 0 -
0,1 0,00289802 0,00222241 6,756 x 10-4
0,2 0,00551236 0,00422728 1,285 x 10-3
0,3 0,00758711 0,00581836 1,769 x 10-3
0,4 0,00891918 0,00683989 2,079 x 10-3
0,5 0,00937818 0,00719188 2,186 x 10-3
0,6 0,00891918 0,00683989 2,079 x 10-3
0,7 0,00758711 0,00581836 1,769 x 10-3
0,8 0,00551236 0,00422728 1,285 x 10-3
0,9 0,00289802 0,00222241 6,756 x 10-4
1 0 0 -
10.2.6. Implementação
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<complex.h>
float f(float a1);
void main(void)
{
//declaração de variáveis
float l[4],lfinal,T;
float i,j,t,u[4],w[4]; float lam,h,k,x,z[4]; //constantes const A = 5 ; const m=5; const N=6; //entrada de dados printf("entre com o valor de l: ");
![Page 27: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/27.jpg)
240
scanf("%f",&lfinal); printf("entre com o tempo m ximo T: "); scanf("%f",&T); // PASSO 1 h=lfinal/m; k=T/N; lam = A*A*(k/h*h); w[m]=0; //PASSO 2 for (i=1;i<=(m-1);i++) w[i]=f(i*h); // passo 3-11 resolve um sistema linear tridimensional usando // o algoritmo 6.7.) //PASSO 3 l[1] = 1 + lam; u[1] = -lam/(2*l[1]); //PASSO 4 for (i=2;i<=(m-2);i++) { l[i] = 1+lam+((lam*u[i-1])/2); u[i] = -lam/(2*l[i]); } //PASSO 5 l[m-1] = 1+lam+((lam*u[m-2])/2); //PASSO 6 for (j=1;i<=N;j++) //passos 7-11 { //PASSO 7 t = j*k; z[1] = (((1-lam)*w[1])+((lam/2)*w[2]))/l[1]; //PASSO 8 for (i=2;i<=(m-1);i++) z[i] = (((1-lam)*w[i])+((lam/2)*w[i+1]+w[i-1]+z[i-1]))/l[i]; //PASSO 9 w[m-1] = z[m-1]; //PASSO 10 for (i=(m-2);i<=1;i++)
![Page 28: Capítulo 10. Equações Diferenciais Parcias - rc.unesp.brrc.unesp.br/igce/demac/balthazar/analise/cap10.pdf · Capítulo 10. Equações Diferenciais Parcias ... resolvendo a maioria](https://reader031.vdocuments.mx/reader031/viewer/2022022701/5bc0d49409d3f28e288c4841/html5/thumbnails/28.jpg)
241
w[i] = z[i]-u[i]*w[i]+1; //PASSO 11 // OUTPUT for(i=1;i<=(m-1);i++) { x = i*h; printf("%f","os valores de x w[i]:",x,w[i]); getch(); } } //PASSO 12 //STOP printf("Procedimento completado !"); }//fim do main float f(float a1) { float exponencial; /* definição da função */ exponencial = exp(a1); return(exponencial); }