Palombo Capítulo 8. Método de Rayleigh-Ritz · 170 Grupo : Gustavo de Souza Routman; Luís...
Transcript of Palombo Capítulo 8. Método de Rayleigh-Ritz · 170 Grupo : Gustavo de Souza Routman; Luís...
170
Grupo : Gustavo de Souza Routman; Luís Fernando Hachich de Souza; Alex Pascoal
Palombo
Capítulo 8. Método de Rayleigh-Ritz
8.1. Introdução
Nos problemas de aproximação por diferenças finitas, para aproximar a solução
para um problema de valor limite (borda), nós trocamos a operação contínua de
diferenciação por operações de discretização de diferenças finitas.
O método Raileigh-Ritz ataca o problema de uma forma diferente. O problema de
valor limite é primeiramente reformulado para um problema de escolha. Entre todo o
conjunto de funções diferenciáveis que satisfazem as condições de limite, escolhe-se as
funções que minimizam uma certa integral. Então, o conjunto de funções viáveis fica
reduzido, para resultar em uma solução para o problema de minimização e,
consequentemente, numa solução para o problema de valor limite.
8.2. Motivação
Um importante problema linear com valor limite de dois pontos na análise
“beam-stress” é dada pela equação diferencial
(1.32) − ���
��� + =d
dxp x
dydx
q x y f x( ) ( ) ( ) para 0 1≤ ≤x ,
com as condições limites
(1.33) y y( ) ( )0 1 0= = .
171
Esta equação diferencial descreve o desvio y x( ) em um raio de extensão com
uma secção de cruzamento representada por q x( ) . Este desvio é devido às tensões
p x( ) e f x( ) .
Na discussão seguinte assumiremos p C∈ 1 0 1[ , ] e q f C, [ , ]∈ 0 1 .Mais adiante,
exigimos que lá exista uma constante δ > 0 tal como
p x( ) ≥ >δ 0 para 0 1≤ ≤x
e que q x( ) ≥ 0 para 0 1≤ ≤x .
Essas suposições são suficientes para garantir que o problema com o valor limite
(1.32) e (1.33) tenha uma solução única.
Como no caso de muitos problemas com valor limite que descrevem um
fenômeno físico, a solução para equação raio satisfaz uma propriedade variante. O
princípio variante para a equação raio é fundamental para o desenvolvimento do método
Rayleigh-Ritz e caracteriza a solução para a equação de raio como a função que minimiza
uma certa integral em todas as funções em C02 0 1[ , ] , o conjunto destas funções u em
C2 0 1[ , ] com a propriedade que u u( ) ( )0 1 0= = . O teorema seguinte dá a
caracterização. A prova deste teorema, por enquanto não difícil, é extensa; pode ser
encontrada em Schultz[77].
8.3. Método
Teorema 1.5 Seja p C q f C∈ ∈1 0 1 0 1[ , ], , [ , ] , e
172
(1.34) p x( ) ≥ >δ 0, q x( ) ≥ 0 para 0 1≤ ≤x .
A função y C∈ 02 0 1[ , ] é a única solução para a equação diferencial
(1.35) − ���
��� + =d
dxp x
dydx
q x y f x( ) ( ) ( ) , 0 1≤ ≤x
se e somente se y for a única função em C02 0 1[ , ] que minimiza a integral
(1.36) I u p x u x q x u x f x u x dx[ ] { ( )[ ( )] ( )[ ( )] ( ) ( )},
= + −�2 2
0
1
2 .
No procedimento Rayleigh-Ritz a integral I não é minimizada em todas as funções
em C02 0 1[ , ] , mas em um conjunto menor de funções consistindo de combinações
lineares de certas funções de base φ φ φ1 2, ,..., n . As funções de base { }φ i in=1 devem
ser linearmente independente e satisfazerem
φ φi i( ) ( )0 1 0= = para cada i n= 1 2, ,..., .
Uma aproximação φ φ( ) ( )x c xiin
i= =� 1 para a solução y x( ) da Eq.(1.35)
é obtida pelas constantes constantes descobertas c c cn1 2, ,..., para minimizar
I ciin
i[ ]=� 1 φ .
Da Eq.(1.36),
173
(1.37) I I ci ii
n[ ] [ ]φ φ=
=�
1 =
{ ( )[ ( )] ( )[ ( )]},p x c x q x c xi iin
i ii
nφ φ=
=� �� +1
2
10
1
e, na ordem para um mínimo ocorrer é necessário, considerando I uma função de
c c cn1 2, ,..., , ter
(1.38) ∂∂
Ic j
= 0 para cada j n= 1 2, ,..., .
Diferenciando (1.37) dá
∂∂
φ φ φ φ φIc
p x c x x q x c x x f x x dxj
i i ji
n
i i ji
n
j= + −�
� �= =
� �� 2 2 21 10
1
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ,
e substituindo na Eq.(1.38) produz
(1.39)
00
1
11
0
1
= +�
��
�
�� −�� �
={ ( ) ( ) ( ) ( ) ( ) ( )} ( ) ( ), ,p x x x q x x x dx c f x x dxi j i j
i
n
jφ φ φ φ φ
para cada j n= 1 2, ,..., .
A primeira escolha das funções de base que discutiremos envolve polinômios
lineares de intervalos convenientes. O primeiro passo é formar uma partição em [ , ]0 1
escolhendo pontos x x xn0 1 1, ,..., + com
174
0 10 1 1= < < < < =+x x x xn n... .
Permitindo h x xi i i= −+1 para cada i n= 0 1, ,..., , definimos as funções de
base φ φ φ1 2( ), ( ),..., ( )x x xn por
(1.40) φi
i
i
i
i
x
x xh
x xh
( )
,( )
( )
,
=
−
−
���
�
���
−
−
+
0
0
1
1
1
0
1
1
1
1
1
≤ ≤
≤ ≤
≤ ≤
≤ ≤
−
−
+
+
x x
x x x
x x x
x x
i
i i
i i
i
,
,
,
,
para cada i n= 1 2, ,..., .
A partir do momento que as funções φi são intervalos lineares convenientes, as
derivadas φi,, enquanto não contínuos são constantes no subintervalo aberto
( , )x xi i− +1 1 para cada j n= 0 1, ,..., .
Então temos
(1.41) φii
i
xh
h
,( )
,
,
=−
���
�
���
−
01
1
0
1
0
1
1
1
1
1
< <
< <
< <
< <
−
−
+
+
x x
x x x
x x x
x x
i
i i
i i
i
,
,
,
,
para cada i n= 1 2, ,..., .
175
Porque φi e φi, são não nulo somente em ( , )x xi i− +1 1 , o sistema linear (1.39)
reduz para um n n× o sistema linear tridiagonal:
(1.42) Ac b= .
As entradas não nulas em são dadas por
a p x x q x x dxii i i= +�{ ( )[ ( )] ( )[ ( )] }, ,φ φ2 2
0
1
=�
��
�
��� +
−���
�
��� +
−−
+1 1
1
2 2
1
1
hp x dx
hp x dx
ix
x
ix
x
i
i
i
i
( ) ( )
+1 1
1
2
12
2
12
1
1
hx x q x dx
hx x q x dx
ix
x
iix
x
ii
i
i
i
−− +
�
��
�
��� − +
�
��
�
��� −
−
+( ) ( ) ( ) ( )
para cada i n= 1 2, ,..., ;
a p x x x q x x x dxi i i i i i,, ,{ ( ) ( ) ( ) ( ) ( ) ( )}+ + += +�1 1 1
0
1φ φ φ φ
= −�
��
�
��� +
�
��
�
��� − −
+ +
+1 11 1
2 2
1hp x dx
hx x x x q x dx
ix
x
ix
x
i ii
i
i
i
( ) ( )( ) ( )
para cada i n= −1 2 1, ,..., ;e
a p x x x q x x x dxi i i i i i,, ,{ ( ) ( ) ( ) ( ) ( ) ( )}− − −= +�1 1 1
0
1φ φ φ φ
= −�
��
�
��� +
�
��
�
��� − −
−− −−
−
1 1
11
2
1
2
11h
p x dxh
x x x x q x dxix
x
ix
x
i ii
i
i
i
( ) ( )( ) ( )
176
para cada i n= 2,..., . As entradas em b são dadas por
b f x x dxi i= � ( ) ( )φ0
1
= � − + −�−
− +−
+1 1
11 1
1
1
hx x f x dx
hx x f x dx
ix
x
ii
ix
x
i
i
i
i
( ) ( ) ( ) ( )
para cada i n= 1 2, ,..., . As entradas em c são os coeficientes desconhecidos
c c cn1 2, ,..., da qual a aproximação Rayleigh-Ritz φ dada por
φ φ( ) ( )x c xi ii
n= �
=1
é construída.
O algoritmo seguinte estabelece o sistema linear tridiagonal e incorpora o
Algoritmo Tridiagonal 6.7 para resolver o sistema. Nos passos 3, 4 e 5 as integrações
devem ser executadas, então uma fórmula quadratura deve ser incluída. É recomenda que
a quadratura seja realizada interpolando p, q e f com os intervalos polinomiais
convenientes φ φi n,..., , a menos que estes valores possam ser avaliados facilmente.
Para a resolução de integrais foi utilizado o método de Simpson.
8.4. Algorítmo
Para aproximar a solução ao problema de valor limite
− ���
��� + =d
dxp x
dydx
q x y f x( ) ( ) ( ) para 0 1≤ ≤x , y y( ) ( )0 1 0= =
177
com a função linear
φ φ( ) ( ):x c xi ii
n= �
=1
Entrada: n, x x x xn n0 1 10 1= < < < < =+... .
Saída: coeficientes c cn1,... .
Passo 1: Para i n= 0,..., estabeleça h x xi i i= −+1
Passo 2: Para i n= 0,..., defina o intervalo conveniente base linear φi por
φi
i
i
i
i
x
x xh
x xh
( )
,( )
( )
,
=
−
−
���
�
���
−
−
+
0
0
1
1
1
0
1
1
1
1
1
≤ ≤
≤ ≤
≤ ≤
≤ ≤
−
−
+
+
x x
x x x
x x x
x x
i
i i
i i
i
,
,
,
,
Passo 3: Para cada i = 1, 2,..., n-1 computar
Q
hx x x x q x dxi i i
x
x
i
i
1
1
2
11 1
, ( )( ) ( )=�
��
�
�� − −+
+
�
Q
hx x q x dxi
i
i
x
x
i
i
2
1
2
121
1
, ( ) ( )=�
��
�
�� −
−
−
−
�
Q
hx x q x dxi
i
i
x
x
i
i
3
2
121 1
, ( ) ( )=�
��
�
�� −+
+
�
178
Q
hp x dxi
i x
x
i
i
4
1
21
1
, ( )=�
��
�
��
− −
�
Q
hx x f x dxi
i x
x
i
i
i
51
11
1
, ( ) ( )= −−
−
−
�
Q
hx x f x dxi
ii
x
x
i
i
6 11 1
, ( ) ( )= −+
+
�
Passo 4: Para cada i = 1, 2,..., n - 1 estabeleça
α i i i i iQ Q Q Q= + + ++4 4 1 2 3, , , ,
β i i iQ Q= − +1 4 1, ,
b Q Qi i i= +5 6, ,
Passo 5: Estabeleça
α n n n n nQ Q Q Q= + + ++4 4 1 2 3, , , ,
b Q Qn n n= +5 6, ,
Passo 6: Estabeleça
a1 1= α
ζβα1
1
1=
Passo 7: Para i = 2,...., n-1 estabeleça
ai i i i= − − −α β ζ1 1
179
ζβ
ii
ia=
Passo 8: Estabeleça an n n n= − − −α β ζ1 1
Passo 9: Estabeleça zba1
1
1=
Passo 10: Para i = 2,..., n estabeleça
zb z
aii i i
i=
− − −( )β 1 1
Passo 11: estabeleça
c zn n=
Saída(cn )
Passo 12: Para i = n-1,...,1 estabeleça
c z ci i i i= − +ζ 1
Saída(ci)
Passo 13: Pare
8.5. Fluxograma
180
Início
Para i = 0até n hi = xi+1 - xi
Para i = 1até n
Para cada i= 1,2...,n-1
Q1,i Q2,i Q3,1 Q4,iQ5,i Q6,i
Yes
No
Yes
No
Definição dointervalo
convenientebase linear
No
Yes
Para cada i= 1,2...,n-1
Ai = Q4,i+Q4,i+1+Q2,i+Q3,i Bi = Q1,i - Q4,i+1 bi = Q5,i + Q6,i
an = Q4,n+ Q4,n+1+ Q2,n + Q3,nbn = Q5,n + Q6,n
a1 = A1C1 = B1 / A1
Para cada i= 2...,n-1
a1 = A1 - Bi-1*Ci-1Ci = Bi / Ai
an = An- Bn-1*Cn-1
Yes
No
Yes
No
181
z1 = b1 / a1
Para cada i= 2...,n zi = (bi - Bi-1*zi-1) / ai
cn = zn
Display(cn)
Para cada i= n-1,...,1 ci = z1 - Ci*ci+1
Display(cn)
Pare
No
Yes
Yes
No
8.6. Implementação
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <trigon.h>
#include <math.h>
#include <graphics.h>
#include <stdlib.h>
#define n 9
double sqr(double);
182
double func(double x);
double simpson();
double inter;
double intsimp;
double qx,fx;
double tipofuncaos;
char tipofuncao[15],teste[10];
void Plota_Tabela(void);
void Passo1(void);
void Passo2(void);
void Passo3(void);
void Passo4(void);
void Passo5(void);
void fim (void);
void grafico(void);
typedef float vetor[n+1];
vetor h,Fii,alfa,beta,gama,b,a,z,c;
float x[]={.0,.1,.2,.3,.4,.5,.6,.7,.8,.9};
double X,IOLD1,IOLD2,INEW1,INEW2,INEW3,INEW4,INEW5,INEW6;
int i;
void main(void) {
183
clrscr();
Passo1();
Passo2();
Passo3();
Passo4();
Passo5();
if (tipofuncaos==1) {
a[1]=alfa[1];
gama[1]=beta[1]/alfa[1];
for (i=2; i<=n-1; i++) {
a[i]=alfa[i]-(beta[i-1]*gama[i-1]);
gama[i]=beta[i]/a[i];
}
a[n]=alfa[n]-(beta[n-1]*gama[n-1]);
z[1]=b[1]/a[1];
for (i=2; i<=n-1; i++)
z[i]=(b[i]-(beta[i-1]*z[i-1]))/a[i];
c[n]=z[n];
printf("%f",c[n]);
for (i=n-1; i>=1; i++) {
c[i]=z[i]-(gama[i]*c[i+1]);
printf("%f",c[i]);
}
getch();
184
Plota_Tabela();
}
}
double simpson() {
int m=50;
double result;
double valor;
qx=(sqr(3.141597));
fx=2*qx*(sin(3.141597*X));
int i;
intsimp=0;
if ((strcmp(tipofuncao,"IOLD1")==0) || (strcmp(tipofuncao,"IOLD2")==0)) {
inter=(x[1]-x[0])/m;
valor=x[0];
}
else if (strcmp(tipofuncao,"INEW5")==0) {
inter=(x[i]-x[i-1])/m;
valor=x[i-1];
}
else if (strcmp(tipofuncao,"INEW51")==0) {
inter=(x[n]-x[n-1])/m;
valor=x[n-1];
}
185
else if ((strcmp(tipofuncao,"INEW11")==0) ||
(strcmp(tipofuncao,"INEW31")==0) ||
(strcmp(tipofuncao,"INEW61")==0)) {
inter=(x[n+1]-x[n])/m;
valor=x[n];
}
else {
inter=(x[i+1]-x[i])/m;
valor=x[i];
}
for (i=0; i<m; i++) {
intsimp=(inter/6) * (func(valor) + 4*func((2*valor +inter)/2) +
func(valor+inter)) + intsimp;
valor=valor+inter;
}
return(intsimp);
}
double func(double X) {
double y;
if (strcmp(tipofuncao, "IOLD1")==0)
y=1;
186
if (strcmp(tipofuncao, "IOLD2")==0)
y=(sqr(X-x[0]))*qx;
if (strcmp(tipofuncao, "INEW1")==0)
y=1;
if (strcmp(tipofuncao, "INEW11")==0)
y=1;
if (strcmp(tipofuncao, "INEW2")==0)
y=(sqr(X-x[i]))*qx;
if (strcmp(tipofuncao, "INEW3")==0)
y=(sqr(x[i+1]-X))*qx;
if (strcmp(tipofuncao, "INEW31")==0)
y=(sqr(x[n+1]-X))*qx;
if (strcmp(tipofuncao, "INEW4")==0)
y=(x[i+1]-X)*(X-x[i])*qx;
if (strcmp(tipofuncao, "INEW5")==0)
y=(X-x[i-1])*fx;
187
if (strcmp(tipofuncao, "INEW51")==0)
y=(X-x[n-1])*fx;
if (strcmp(tipofuncao, "INEW6")==0)
y=(x[i+1]-X)*fx;
if (strcmp(tipofuncao, "INEW61")==0)
y=(x[n+1]-X)*fx;
return (y);
}
double sqr(double T) {
T=T*T;
return(T);
}
void Passo1(void) {
for (i=0; i<=n; i++)
h[i]=x[i+1]-x[i];
}
void Passo2(void) {
tipofuncaos=0;
188
for (i=1; i<=n-1; i++) {
if ((X >= 0.0) && (X <= x[i-1]))
Fii[i] = 0.0;
else if (X <= x[i])
Fii[i] = (X-x[i-1])/h[i-1];
else if (X <= x[i+1])
Fii[i]=(x[i+1]-X)/h[i];
else if (x<=(float *)1)
Fii[i]=0.0;
}
}
void Passo3(void) {
strcpy(tipofuncao,"IOLD1");
IOLD1=(sqr(1/h[0]))*simpson();
strcpy(tipofuncao,"IOLD2");
IOLD2=(sqr(1/h[0]))*simpson();
}
void Passo4(void) {
if (tipofuncaos==1) {
for (i=0; i<=n-1; i++) {
strcpy(tipofuncao,"INEW1" );
189
INEW1=(sqr(1/h[i]))*simpson();
strcpy(tipofuncao,"INEW2" );
INEW2=(sqr(1/h[i]))*simpson();
strcpy(tipofuncao,"INEW3" );
INEW3=(sqr(1/h[i]))*simpson();
strcpy(tipofuncao,"INEW4" );
INEW4=(sqr(1/h[i]))*simpson();
strcpy(tipofuncao,"INEW5" );
INEW5=(1/h[i-1])*simpson();
strcpy(tipofuncao,"INEW6" );
INEW6=(1/h[i])*simpson();
alfa[i]=IOLD1+INEW1+IOLD2+INEW3;
beta[i]=-INEW1+INEW4;
b[i]=INEW5+INEW6;
IOLD1=INEW1;
IOLD2=INEW2;
}
}
}
void Passo5(void) {
strcpy(tipofuncao,"INEW11" );
INEW1=(sqr(1/h[n]))*simpson();
strcpy(tipofuncao,"INEW31" );
190
INEW3=(sqr(1/h[n]))*simpson();
strcpy(tipofuncao,"INEW51" );
INEW5=(1/h[n-1])*simpson();
strcpy(tipofuncao,"INEW61" );
INEW6=(1/h[n])*simpson();
alfa[n]=IOLD1+INEW1+IOLD2+INEW3;
beta[n]=INEW5+INEW6;
result();
}
void Plota_Tabela(void) {
int i;
char s[20];
if (tipofuncaos==1) {
settextstyle(0,0,0);
line(460,90,460,450);
line(540,90,540,450);
line(620,90,620,450);
for (i=0;i<=30;i++)
line(460,90+12*i,620,90+12*i);
outtextxy(510,43,"Tabela");
outtextxy(210,65,"i");
191
outtextxy(465,77,"(Ton/cm2)");
outtextxy(300,65,"xi");
outtextxy(560,77,"x1000");
for (i=0;i<=29;i++) {
sprintf(s,"%2.4f",i);
outtextxy(210,93+12*i,s);
if (i<7)
sprintf(s,"%2.4f",x[i]);
else if (i<14)
sprintf(s,"%2.3f",Fii[i]);
else if (i<21)
sprintf(s,"%2.2f",fx);
else sprintf(s,"%2.1f",Fii[i]-fx);
outtextxy(300,93+12*i,s);
}
}
}
8.7. Exemplo
O exemplo seguinte usa o algoritmo acima.
Modelo: Considerar o problema de valor limite
192
− ′′+ =y y sin xπ π π2 22 ( ) 0 1≤ ≤x , y y( ) ( )0 1 0= =
Façamos h hi = = 01. tal que x ii = 01. para cada i = 0 1 9, , . . . . . As integrais são
Q i x x i dxi
i
i
12
2
01
01 01
100 01 01 0160
,
.
. .
( . . )( . )= + − − =+
� π π
Q x i dxi
i
i
22 2
2
01 01
01
100 01 0130
,
. .
.
( . . )= − + =−� π π
Q i x dxi
i
i
32 2
2
01
01 01
100 01 0130
,
.
. .
( . . )= + − =+
� π π
Q dxi
i
i
4
01 01
01
100 10,
. .
.
= =−�
Q x i sin xdxi
i
i
52
0 1 0 1
0 1
10 01 01 2,
. .
.
( . . )= − + =−� π π
= − + − −2 01 20 01 01 01π π π πcos . [ ( . ) (( . . ) )]i sin i sin i
Q i x sin xdxi
i
i
62
0 1
0 1 0 1
10 01 01 2,
.
. .
( . . )= + − =+
� π π
= − + −2 0 1 20 0 1 0 1 0 1π π π πcos . [ (( . . ) ( . )]i sin i sin i
O sistema linear Ac b= has
193
a ii i, , , ...= + =2015
1 2 92π
para cada
a ii i, , , ...+ = − + =1
2
1060
1 2 8π
para cada
a ii i, , , ...− = − + =1
2
1060
2 3 9π
para cada
bi sin i i= − =40 0 1 1 0 1 1 2 9( . )[ cos . ], , , ... .π π para cada
A solução para o sistema linear tridiagonal é
c9 0 3102866742= . c4 0 9549641893= .
c8 0 5902003271= . c3 0 8123410598= .
c 7 0 8123410598= . c2 0 5902003271= .
c 6 0 9549641893= . c1 0 3102866742= .
c5 1 004108771= .
O intervalo da aproximação linear é
φ φ( ) ( )x c xi i
i
==�
1
9
A atual solução para o problema do valor limite é
y x sin x( ) = π