Vous êtes sur la page 1sur 26

Uma Introduo ao Maple V

por Jun S. O. Fonseca.


Sumrio
Iniciando ........................................................................................................ 1
lgebra de Matrizes e Vetores ...................................................................... 2
Definir uma matriz A 3 por 4 ............................................................ 2
Encontrando os autovalores de uma matriz quadrada AAT .............. 2
Matrizes Complexas .......................................................................... 3
lgebra de vetores............................................................................. 4
lgebra de matrizes ........................................................................... 5
Soluo de Equaes Algbricas................................................................... 6
Funes e sua Representao Grfica ........................................................... 7
Grficos ............................................................................................. 7
Encontrando Razes e Mnimos......................................................... 9
Comandos de Clculo e de Programao ...................................................... 9
Integrao: ......................................................................................... 9
Diferenciao e Integrao:............................................................... 10
Sries de Fourier:............................................................................... 11
Ajuste de Curvas................................................................................ 11
Exemplos de Mecnica dos Slidos I............................................................ 13
Reaes de Apoio e Deflexo de uma Viga com Carga Distribuda. 14
Outro problema de deflexo de uma viga.......................................... 15
Exemplos de Anlise Estrutural Avanada ................................................... 18
Applicao do Teorema de Castigliano............................................. 18
Uma Aplicao do Mtodo de Rayleigh-Ritz ................................... 18
Segunda Aplicao do Mtodo de Rayleigh-Ritz ............................. 20
Exemplo de um Prtico Plano ........................................................... 22
Exemplos em Anlise Estrutural Avanada .................................................. 23
Exemplo de Flexo: ........................................................................... 25
Iniciando
Para rodar o Maple em um computador em que este programa esteja instalado, deve-se:
procurar seu cone nos menus ou grupos de programas (MS Windows, SGI Irix, HP e
SUN CDE, Apple MacOS, Linux Gnome ou KDE) e clic-lo;
digitar xmaple no prompt em um shell (na maioria dos sistemas Unix, Linux, e
FreeBSD)
Digitar maple no prompt do DOS prompt, se a via (path) estiver certo.
Uma vez que o Maple estiver rodando, digita-se os comandos no prompt >. Um
comando pode ocupar muitas linhas; o final do comando reconhecido pelo caracter de
finalizao ; ou :. A finalizao com dois pontos faz com que o Maple no imprima a
sada do comando. Os resultados dos ltimos comandos so armazenados na memria e
podem ser recuperados com os smbolos %, %%, e %%%.
O comando mais til para os iniciantes o de ajuda. A ajuda pode ser acionada atravs
dos menus ou digitando-se o caracter ?, que no precisa finalizao. Uma boa dica utilizar
os tutoriais. Para conseguir ajuda sobre um comando especfico, como por exemplo solve
pode-se digitar ?solve ou selecionar ajuda com o boto direito do mouse.

Uma Introduo ao Maple V

lgebra de Matrizes e Vetores


A maioria da lgebra linear est includa no pacote de rotinas do Maple chamado
linalg. Desta maneira, antes de comear lidar com matrizes e vetores, deve-se carregar este
pacote com o comando:
> with(linalg):

Este uma linha de comando tpica do Maple. O comando em si o with, que seguido por
seus argumentos entre parnteses (linalg), e por um caracter de finalizao. Este caracter pode
ser tanto dois pontos : ou ponto e vrgula ;, conforme se queira que o Maple imprima ou
no o resultado do comando.
Definir uma matriz A 3 por 4
Pode-se definir um conjunto de nmeros ou smbolos em uma matriz 3x4:
> A:=matrix(3,4,[1,2,3,4,5,4,7,8,-4,-3,-2,-1]);
[ 1
[
A := [ 5
[
[ -4

-3

-2

4 ]
]
8 ]
]
-1 ]

Para imprimir o valor de uma varivel, pode-se usar tanto o comando print
> print(A);

[ 1
[
[ 5
[
[ -4

-3

-2

4 ]
]
8 ]
]
-1 ]

como um dos comandos de avaliao eval. Neste caso, usa-se a avaliao de matrizes evalm.
> evalm(A);

[ 1
[
[ 5
[
[ -4

-3

-2

4 ]
]
8 ]
]
-1 ]

Os comandos de avaliao so muito importantes no Maple. Existem muitos comandos


inertes, isto , comandos que no so executados imediatamente, mas somente quando se pede
ao Maple uma avaliao da expresso. O leitor notar o uso dos comandos inertes ao longo do
texto. Estes comandos normalmente iniciam com letra maiscula.
Encontrando os autovalores de uma matriz quadrada AAT
Calcula-se agora os autovalores de uma matriz quadrada obtida pela multiplicao
T
AA . As maneiras de se fazer isto no Maple so:
> V:=eigenvals(multiply(A,transpose(A)));

ou
> V:=eigenvals(A &* transpose(A));
V := %3 + %2 + 214/3, - 1/2 %3 - 1/2 %2 + 214/3 + 1/2 3
- 1/2 %3 - 1/2 %2 + 214/3 - 1/2 3
%1 :=

I 19226186

1/2

1/2

(%3 - %2) I
1/2

%2 :=

/7442560
\1/3
|------- - 16/3 %1|
\
27
/

%3 :=

/7442560
\1/3
|------- + 16/3 %1|
\
27
/

1/2

(%3 - %2)

Uma Introduo ao Maple V

Esta uma computao simblica, imune a erros de arredondamento. No entanto, este


tipo de computao requer muitas operaes (e muito tempo) de computador. Na maioria das
vezes, mais prtico calcular os autovalores numricamente, especialmente se a matriz for
maior que 4x4. Uma possibilidade converter a matriz para uma matriz de nmeros de
ponto-flutuante ao invs de nmeros exatos usando o comando de avaliao evalf, que far
eigenvals calcular valores de ponto-flutuante:
> k:=eigenvals(evalf(evalm(A &* transpose(A))));
k := 201.8047330, .598203057, 11.59706392

mas isto toma muito tempo. A melhor maneira calcular numricamente desde o incio,
usando o mtodo QR implementado no comando Eigenvals do Maple. Note que este
comando inerte; o clculo acontecer somente com o comando de avaliao.
> k:=evalf(Eigenvals(multiply(A,transpose(A))));
k := [ 201.8047330, .598203057, 11.59706392 ]

Os autovetores de uma matriz tambm podem ser obtidos pelo Maple, atravs do comando
v :=

> v:=eigenvects(multiply(A,transpose(A)));

[%1, 1, {[ - 9/5356 %1

%1 :=

469
4584
2
397
7325
+ ---- %1 - ----, 5/8034 %1 - ---- %1 + ----, 1 ]}]
1339
1339
2678
4017

RootOf(- 1400 + 2468 _Z - 214 _Z

3
+ _Z )

ou numericamente atravs do comando inerte Eigenvals, que tem um argumento adicional


que onde os autovetores sero armazenados:
> k:=evalf(Eigenvals(multiply(A,transpose(A))),vecs));
k := [ 201.8047334, .59820303, 11.59706393 ]

> evalm(vecs);
+ .3917147767

.9183834076

+ -.3342573782

.8136191924

-.3722840080 +

-.1696430687

-.9023780667 +

-.4391516693
-.2531071924

Uma matriz chamada vecs (ou qualquer outro nome escolhido) ser criada tendo os
autovetores como colunas. Estas operaes so teis, por exemplo, para o clculo de tenses e
direes principais.
Matrizes Complexas
O Maple define o smbolo I como um sinnimo da raiz de -1 (sqrt(-1)). Pode-se utilizar este
smbolo para definir uma matriz complexa, atravs, por exemplo, de duas matrizes:
> A:=matrix(3,3,[1,2,3,3,2,1,-1,1,-1]);
[
[
[

1
3
-1

2
2
1

3
1
-1

]
]
]

> B:=matrix(3,3,[1,0,1,-1,-1,1,4,1,2]);
[
[
[

1
-1
4

0
-1
1

1
1
2

]
]
]

> AB:=matadd(A,I*B);

or
> AB:=evalm(A+I*B);
[
[
[

1 + I
3 - I
-1 + 4 I

2
2 - I
1 + I

3 + I ]
1 + I ]
-1 + 2 I ]

Pode-se tambm utilizar diretamente os nmeros complexos:


3

Uma Introduo ao Maple V


> AB:=matrix(3,3,[1+I,2,3+I,3-I,2-I,1+I,-1+4*I,1+I,-1+2*I]);
[
[
[

1 + I
3 - I
-1 + 4 I

2
2 - I
1 + I

3 + I ]
1 + I ]
-1 + 2 I ]

Para se extrair a parte real e imaginria de uma matriz complexa, pode-se utilizar o comando
map, que aplica uma operao em todos os termos de uma matriz, e o comando de avaliao
de variveis complexas evalc, e a definio de uma funo ->.
> map(x -> evalc(Re(x)),AB);
[
[
[

1
3
-1

2
2
1

3
1
-1

]
]
]

> map(x -> evalc(Im(x)),AB);


[
[
[

1
-1
4

0
-1
1

1
1
2

]
]
]

lgebra de vetores
Existe um conjunto de operaes no pacote de rotinas linalg que podem ser teis para a
manipulao de vetores. Tem-se, por exemplo, o comando crossprod para produto externo no
R3 e dotprod e innerprod para produtos internos, sendo que este ltimo aceita matrizes
como argumento. Cria-se inicialmente dois vetores:
> v:=vector(3);

v := array(1 .. 3, [])

> w:=vector(3);

w := array(1 ..3, [])

> evalm(v);

[v[1], v[2], v[3])

interessante ressaltar que o comando matrix sempre cria um arranjo bidimensional e o


comando vector sempre um arranjo unidimensional.
> evalm(dotprod(v,w));

v[1] w[1] + v[2] w[2] + v[3] w[3]

> evalm(crossprod(v,w);

[ v[2] w[3] - v[3] w[2], v[3] w[1] - v[1] w[3], v[1] w[2] - v[2] w[1] ]

> evalm(innerprod(v,matrix(3,3,[1,0,2,0,3,0,2,0,2]),w));

v[1] w[1] + 2 v[3] w[1] + 3 v[2] w[2] + 2 v[1] w[3] + 2 v[3] w[3]

Algumas operaes termo a termo no esto implementadas diretamente no Maple, e


devem ser programadas pelo usurio atravs de comandos de laos ou mapeamento. Por
exemplo, se for necessrio dividir cada termo de um vetor pelo termo correspondente de
outro, pode-se escrever
>
>
>
>
>

u:=vector(3);
for i from 1 to 3 do
u[i]:=v[i]/w[i]
od:
evalm(u);

u := array(1 .. 3, [])
v[1] v[2] v[3]
[ ----, ----, ---- ]
w[1] w[2] w[3]

Pode-se, alternativamente, implementar-se esta operao diretamente na definio do


vetor, operando-se sobre o ndice:
> t:=vector(3,i->v[i]/w[i]);
t :=

v[1] v[2] v[3]


[ ----, ----, ---- ]
w[1] w[2] w[3]

Uma Introduo ao Maple V

lgebra de matrizes
O Maple usa smbolos diferentes para operaes com nmeros e com matrizes.
Entretanto, alguns dos operadores normais funcionam dentro do comando evalm, com a
excesso do operador de multiplicao * , reservado para a multiplicao por escalar. A
multiplicao de matrizes no-comutativa representada pelo operador &*.
> A:=matrix(3,3):
> evalm(A);

> B:=matrix(3,3):
> evalm(B);

[ A[1, 1]
[
[ A[2, 1]
[
[ A[3, 1]

A[1, 2]

[ B[1, 1]
[
[ B[2, 1]
[
[ B[3, 1]

B[1, 2]

A[2, 2]
A[3, 2]

B[2, 2]
B[3, 2]

A[1, 3] ]
]
A[2, 3] ]
]
A[3, 3] ]

B[1, 3] ]
]
B[2, 3] ]
]
B[3, 3] ]

> matadd(A,B); or > evalm(A + B);


[ A[1, 1] + B[1, 1]
[
[ A[2, 1] + B[2, 1]
[
[ A[3, 1] + B[3, 1]

A[1, 2] + B[1, 2]
A[2, 2] + B[2, 2]
A[3, 2] + B[3, 2]

A[1, 3] + B[1, 3] ]
]
A[2, 3] + B[2, 3] ]
]
A[3, 3] + B[3, 3] ]

> multiply(A,B); or > evalm(A &* B);

[A[1, 1] B[1, 1] + A[1, 2] B[2, 1] + A[1, 3] B[3, 1],


A[1, 1] B[1, 2] + A[1, 2] B[2, 2] + A[1, 3] B[3, 2],
A[1, 1] B[1, 3] + A[1, 2] B[2, 3] + A[1, 3] B[3, 3]]
[A[2, 1] B[1, 1] + A[2, 2] B[2, 1] + A[2, 3] B[3, 1],
A[2, 1] B[1, 2] + A[2, 2] B[2, 2] + A[2, 3] B[3, 2],
A[2, 1] B[1, 3] + A[2, 2] B[2, 3] + A[2, 3] B[3, 3]]
[A[3, 1] B[1, 1] + A[3, 2] B[2, 1] + A[3, 3] B[3, 1],
A[3, 1] B[1, 2] + A[3, 2] B[2, 2] + A[3, 3] B[3, 2],
A[3, 1] B[1, 3] + A[3, 2] B[2, 3] + A[3, 3] B[3, 3]]

> multiply(A,inverse(B)); or > evalm(A / B);

[(A[1, 1] B[2, 2] B[3, 3] - A[1, 1] B[2, 3] B[3, 2] - A[1, 2] B[2, 1] B[3, 3]


+ A[1, 2] B[2, 3] B[3, 1] + A[1, 3] B[2, 1] B[3, 2] - A[1, 3] B[2, 2] B[3, 1]
)/%1, - (A[1, 1] B[1, 2] B[3, 3] - A[1, 1] B[1, 3] B[3, 2]
- A[1, 2] B[1, 1] B[3, 3] + A[1, 2] B[1, 3] B[3, 1] + A[1, 3] B[1, 1] B[3, 2]
- A[1, 3] B[1, 2] B[3, 1])/%1, (A[1, 1] B[1, 2] B[2, 3]
- A[1, 1] B[1, 3] B[2, 2] - A[1, 2] B[1, 1] B[2, 3] + A[1, 2] B[1, 3] B[2, 1]
+ A[1, 3] B[1, 1] B[2, 2] - A[1, 3] B[1, 2] B[2, 1])/%1]
[(A[2, 1] B[2, 2] B[3, 3] - A[2, 1] B[2, 3] B[3, 2] - A[2, 2] B[2, 1] B[3, 3]
+ A[2, 2] B[2, 3] B[3, 1] + A[2, 3] B[2, 1] B[3, 2] - A[2, 3] B[2, 2] B[3, 1]
)/%1, - (A[2, 1] B[1, 2] B[3, 3] - A[2, 1] B[1, 3] B[3, 2]
- A[2, 2] B[1, 1] B[3, 3] + A[2, 2] B[1, 3] B[3, 1] + A[2, 3] B[1, 1] B[3, 2]
- A[2, 3] B[1, 2] B[3, 1])/%1, (A[2, 1] B[1, 2] B[2, 3]
- A[2, 1] B[1, 3] B[2, 2] - A[2, 2] B[1, 1] B[2, 3] + A[2, 2] B[1, 3] B[2, 1]
+ A[2, 3] B[1, 1] B[2, 2] - A[2, 3] B[1, 2] B[2, 1])/%1]

Uma Introduo ao Maple V

[(A[3, 1] B[2, 2] B[3, 3] - A[3, 1] B[2, 3] B[3, 2] - A[3, 2] B[2, 1] B[3, 3]


+ A[3, 2] B[2, 3] B[3, 1] + A[3, 3] B[2, 1] B[3, 2] - A[3, 3] B[2, 2] B[3, 1]
)/%1, - (A[3, 1] B[1, 2] B[3, 3] - A[3, 1] B[1, 3] B[3, 2]
- A[3, 2] B[1, 1] B[3, 3] + A[3, 2] B[1, 3] B[3, 1] + A[3, 3] B[1, 1] B[3, 2]
- A[3, 3] B[1, 2] B[3, 1])/%1, (A[3, 1] B[1, 2] B[2, 3]
- A[3, 1] B[1, 3] B[2, 2] - A[3, 2] B[1, 1] B[2, 3] + A[3, 2] B[1, 3] B[2, 1]
+ A[3, 3] B[1, 1] B[2, 2] - A[3, 3] B[1, 2] B[2, 1])/%1]
%1 := B[1, 1] B[2, 2] B[3, 3] - B[1, 1] B[2, 3] B[3, 2] - B[2, 1] B[1, 2] B[3, 3]
+ B[2, 1] B[1, 3] B[3, 2] + B[3, 1] B[1, 2] B[2, 3] - B[3, 1] B[1, 3] B[2, 2]

Similarmente algebra de vetores, muitas operaes termo a termo em matrizes tem que ser
definidas pelo usurio. Por exemplo, uma diviso termo a termo de uma matriz por outra
poderia que ser definida por
> C:=matrix(3,3,(i,j)->A[i,j]/B[i,j]);
[
[
[
[
[
C := [
[
[
[
[
[

A[1, 1]
------B[1, 1]

A[1, 2]
------B[1, 2]

A[2, 1]
------B[2, 1]

A[2, 2]
------B[2, 2]

A[3, 1]
------B[3, 1]

A[3, 2]
------B[3, 2]

A[1, 3] ]
------- ]
B[1, 3] ]
]
A[2, 3] ]
------- ]
B[2, 3] ]
]
A[3, 3] ]
------- ]
B[3, 3] ]

Pode-se extrair o numerador e o denominador dos termos desta matriz usando o comando map
para mapear os comandos numer e denom para cada termo:
> map(x->numer(x),C);

[ A[1, 1]
[
[ A[2, 1]
[
[ A[3, 1]

> map(x->denom(x),C);

[ B[1, 1]
[
[ B[2, 1]
[
[ B[3, 1]

A[1, 2]
A[2, 2]
A[3, 2]
B[1, 2]
B[2, 2]
B[3, 2]

A[1, 3] ]
]
A[2, 3] ]
]
A[3, 3] ]
B[1, 3] ]
]
B[2, 3] ]
]
B[3, 3] ]

Soluo de Equaes Algbricas


Pode-se resolver um sistema de equaes simultneas lineares (e no-lineares em alguns
casos) simbolicamente no Maple utilizando o comando solve. Define-se as equaes (ou
conjunto de equaes) e as variveis a serem resolvidas:
> solve({a11*x1+a12*x2=b1,
a21*x1+a22*x2=b2},{x1,x2});

a12 b2 - b1 a22
a11 b2 - a21 b1
{x1 = - -----------------, x2 = -----------------}
a11 a22 - a21 a12
a11 a22 - a21 a12

Se o Maple conseguir encontrar a soluo, ele devolve um conjunto de identidades que podem
ser aplicadas s variveis atravs do comando assign, ou substituda em alguma expresso
com o comando subs, por exemplo
> a:=%:
> f:= subs(a,2*x1+x2);

a12 b2 - b1 a22
a11 b2 - a21 b1
f := - 2 ----------------- + ----------------a11 a22 - a21 a12
a11 a22 - a21 a12

Uma Introduo ao Maple V

Funes e sua Representao Grfica


Funes podem ser definidas de duas maneiras no Maple. Para funes simples, pode ser
conveniente utilizar o operador seta ->, para uma definio direta,
> f:=x -> x-2*x+x^2+x*cos(exp(-x));
f := x -> - x + x

+ x cos(exp(- x))

> g:=y -> y+y^2*sin(1/(1+y^2));


g := y -> y + y

1
sin(------)
2
1 + y

> h:=(x,y) -> f(x*y)+g(x+y);

h := (x,y) -> f(x y) + g(x + y)

Funes mais complicadas podem ser definidas utilizando o comando proc como a seguir,
> f1:=proc(x)
if x>3 then
x^2
else if x <= 3 then
x-5
fi
fi
end;

f1 := proc(x) if 3 < x then x^2 else if x <= 3 then x-5 fi fi end

H muitos comandos para manipulao de expresses. Por exemplo, pode-se reescrever uma
funo de muitas varivies organizando-as pelas potncias de x ou y,
> collect(h(x,y),x);

/ 2
1
\ 2
|y + sin(------------)| x
|
2 |
\
1 + (x + y) /
/
1
\
+ |y cos(exp(- x y)) + 1 - y + 2 y sin(------------)| x + y
|
2 |
\
1 + (x + y) /
+ y

1
sin(------------)
2
1 + (x + y)

Grficos
Maple tem vrios comandos implementados para traar grficos, e muitas opes para
controlar a aparncia. Os mais simples so plot e plot3d. Para um grfico simples em duas
dimenses, pode-se digitar
> plot(f,-4..4);> plot(g,-4..4);

Pode-se traar grficos paramtricos, tais como

Uma Introduo ao Maple V


> plot([f(t),g(t),t=-4..4]);

Os grficos tridimensionais so feitos de forma similar. possvel especificar muitas das


opes dos comandos grficos diretamente no comando plot3d, mas normalmente mais fcil
mudar os parmetros de visualizao diretamente nos menus da janela grfica. Por exemplo,
pode-se mudar as opes posio do observador e ligar as curvas de nvel para fazer o
segundo grfico abaixo.
> fg:=(p,q)->f(p*q)*g(1+p-q);
> plot3d(fg,-2..2,-2..2);

Existem centenas de outras opes de plotagem no pacote de rotinas plots. Estes


comandos adicionais permitem a gerao de uma rica gama de figuras, tais quais as
espetaculares figuras de capas de livros de matemtica.
8

Uma Introduo ao Maple V

Encontrando Razes e Mnimos


possvel encontrar razes de uma equao no-linear definida por uma funo utilizando o
comando solve (que busca uma soluo simblica e normalmente no encontra) ou fsolve
(que busca uma soluo numrica e normalmente s encontra se houver um bom palpite da
localizao). Por exemplo, se o objetivo for encontrar na funo abaixo um valor de x para o
qual a funo valha 5, faz-se
> f:=x->x-2*x+x^2+x*cos(exp(-x)):
> fsolve(f(x)=5,x,1..3);
2.238906646

> fsolve(f(x)=5,x,-3..1);

-1.994108139

Para se encontrar extremos (mximos e mnimos) de uma funo, utiliza-se o mtodo que
deveria ter sido aprendido em Clculo. Normalment uma combinao de plots e fsolves
funciona melhor para localizar o extremo.
> b:=fsolve(diff(f(x),x),x,-4.1..-4); evalf(f(b));
b := -4.034475437
16.27951972

Comandos de Clculo e de Programao


Depois de definir uma funo qualquer, pode-se imprim-la em uma variedade de
formatos. O Maple tem muitas opes, desde o horrvel modo texto usado neste documento
at as formas visveis na tela do computador ou no formato PostScript. Abaixo se usou as
formas inerte Int e Diff para que o Maple imprima sem avaliar.
> f:=x->x-2*x+x^2+cos(exp(-x)); Int(f(x),x=0..x2); Diff(y,x);

possvel tambm converter as expresses do Maple para as linguagens FORTRAN e C, para


uma possvel incluso em um programa de computador, ou na linguagem LaTEX para
processadores de textos cientficos. Para direcionar a sada de um comando para um arquivo
ao invs da tela, algo bastante til nos casos acima, utiliza-se os comandos write e writeto.
> f:=x->x-2*x+x^2+cos(exp(-x));
f := x -> - x + x

+ cos(exp(- x))

> fortran (f(x)); readlib(C): C(f(x));


t0 = -x+x**2+cos(exp(-x))
t0 = -x+x*x+cos(exp(-x));

> latex(f(x));

-x+x^{2}+\cos({e^{-x}})

Integrao:
Pode-se usar a integrao analtica ou numrica. O operador de integrao tem duas
formas diferentes, a forma ativa int, e a inerte Int. Para se utilizar uma integrao
completamente nmerica, deve-se mandar o Maple avaliar em ponto flutuante (evalf) a forma
inerte da integral.

Uma Introduo ao Maple V

Existem vrios comandos de controle de execuo no Maple, para auxiliar na


computao de procedimentos repetitivos. Laos de execuo, por exemplo, so definidos
com os comandos for ... from ... to ... by ... do { } od: .
Apresenta-se agora uma srie de comandos de sries que fizeram a fama do Maple. O
comando taylor gera uma srie de Taylor's com uma preciso especificada. Note que uma
srie, com seu termo de ordem, uma entidade completamente diferente de um polinmio.
Deve-se convert-la para um polinmio para manipulao e avaliao.
> difference:=array(1..3);

difference := array(1 .. 3, [])

> exact:=evalf(Int(f(x),x=-2..2));

exact := 6.870394434

> for i from 1 to 3 do


>
FI:=taylor(f(x),x=0,2*i):
>
print(`Taylor s Series `,2*i,` = `,FI);
>
Poly:=convert(FI,polynom):
>
difference[i]:=evalf(exact - int(Poly,x=-2..2));
> od:
Taylor s Series , 2,
Taylor s Series , 4,

2
= , cos(1) + (- 1 + sin(1)) x + O(x )

= ,

cos(1) + (- 1 + sin(1)) x + (1 - 1/2 cos(1) - 1/2 sin(1)) x

+ 1/2 cos(1) x

4
+ O(x )
Taylor s Series , 6,

= ,

cos(1) + (- 1 + sin(1)) x + (1 - 1/2 cos(1) - 1/2 sin(1)) x


+ (5/24 sin(1) - 1/4 cos(1)) x

+ 1/2 cos(1) x

/
23
\ 5
6
+ |- --- sin(1) + 1/24 cos(1)| x + O(x )
\ 120
/

> evalm(difference);

[ 4.709185210, 3.060580653, 2.545625406 ]

Diferenciao e Integrao:
O Maple pode realizar integrao analtica se for preciso; mas deve-se considerar que
esta operao bastante demorada. Podemos comparar a diferena entre a integrao analtica
e numrica. Estes resultados podem ser melhorados aumentando a preciso do comando evalf.
>
>
>
>
>
>

diff(f(x),x);
int(f(x),x=0..1);
fiexact:=%;
fiquadrat:=evalf(Int(f(x),x=0..1));
fiquad20:=evalf(Int(f(x),x=0..1),20);
evalf(fiexact-fiquadrat);evalf(fiexact-fiquad20,20);
- 1 + 2 x + sin(exp(- x)) exp(- x)
- 1/6 - Ci(exp(-1)) + Ci(1)
fiexact := - 1/6 - Ci(exp(-1)) + Ci(1)
fiquadrat := .6271651970
fiquad20 := .62716519698330620506
-.1*10
-.2*10

-9
-19

10

Uma Introduo ao Maple V

Sries de Fourier:
Pode-se calcular os coeficientes de uma expanso em srie de Fourier atravs da definio
bsica. Para isto, utiliza-se a capacidade de integrao do Maple. Para fins de comparao,
calculamos agora a expanso em srie de Fourier da funo de Heaviside (degrau unitrio),
que pr-pogramada no Maple.
> f:=t->Heaviside(t);

f := Heaviside

> fsn:=(int(f(x),x=-Pi..Pi))/(2*Pi)+sum(int(f(x)*sin((2*k-1)*x),x=Pi..Pi)*sin((2*k-1)*x)/Pi,k=1..5);

sin(x)
sin(3 x)
sin(5 x)
sin(7 x)
sin(9 x)
fsn := 1/2 + 2 ------ + 2/3 -------- + 2/5 -------- + 2/7 -------- + 2/9 -------Pi
Pi
Pi
Pi
Pi

> plot(fsn,x=-Pi..Pi,title=`Fourier series`);

Poderia-se alternativamente ter definido a funo degrau por proc(x) if x<0 then f:=x> 0 else if x>=0 then f:=x->1 fi fi end:.
Ajuste de Curvas
Usando o Maple, pode-se fazer ajuste de curvas sobre um conjunto de dados discretos.
Pode-se por exemplo simular um conjunto de 100 pontos usando a avaliao de funes e
depois realizar um ajuste utilizando uma base de funes conhecidas. Os coeficientes de cada
termo da base podem ser encontrados por mnimos quadrados:
> with(linalg):
> n:=100;

Warning: new definition for


Warning: new definition for

norm
trace
n := 100

Inicialmente usamos uma funo para simular os dados experimentais (xi,yi), que so
armazenados na matriz A.
> f:=x->exp(x)*sin(2*Pi*x);
> A:=[[evalf((2*i-2)/n-1),evalf(f((2*i-2)/n-1))] $i=1..100]:
f := x -> exp(x) sin(2 Pi x)

Aproxima-se agora estes dados com um ajuste dos coeficientes da funo base. Testa-se
inicialmente a base L={ex, sin x, x, x2, x3}. Uma matriz Bij=Lj(xi), e um vetor vi=yi, so
montados e ento acha-se a soluo o atravs da soluo do problema de mnimos quadrados
min [B]{o}-{v}.
> L:=x-> [exp(x),sin(x),x,x^2,x^3];
> B:=matrix(n,5,(i,j)->L(A[i][1])[j]):

11

Uma Introduo ao Maple V


> v:=vector(n,i->A[i][2]):

2
3
L := x -> [exp(x), sin(x), x, x , x ]

> o:=leastsqrs(B,v);
o := [ .1494524053, 1948.933331, -1944.782168, -1.05926618, 305.0439764 ]

> fapp:=x->sum(o[i]*L(x)[i],i=1..5);
> print(fapp(x));
> plot({A,fapp},-1..1,title=`5 function base`);
5
----\
fapp := x ->
)
o[i] L(x)[i]
/
----i = 1
.1494524053 exp(x) + 1948.933331 sin(x) - 1944.782168 x - 1.05926618 x
+ 305.0439764 x

Uma vez que a escolha da base foi ineficaz, aumenta-se a ordem dos polinmios at
dez.,
LA={1,x,x2,x3,x4,x5,x6,x7,x8,x9,x10}.
> LA:=x->[x^i $i=0..10];
> LA(x);
> C:=matrix(n,11,(i,j)->LA(A[i][1])[j]):
i
LA := x -> [x $(i = 0 .. 10)]

2
3
4
5
6
7
8
9
10
[1, x, x , x , x , x , x , x , x , x , x ]

> o1:=leastsqrs(C,v);

o1 := [ .0015856111, 6.280157300, 6.161396755, -38.14224353, -38.72205101,


60.94847872, 67.27123875, -37.55515556, -46.95928062, 8.475543818,
12.25612434 ]

> fapp2:=x->sum(o1[i]*LA(x)[i],i=1..11);
> print(fapp2(x));
> plot({A,fapp2},-1..1,title=`10th order polynomial approximation`);

12

Uma Introduo ao Maple V


11
----\
fapp2 := x ->
)
o1[i] LA(x)[i]
/
----i = 1
.0015856111 + 6.280157300 x + 6.161396755 x
- 38.72205101 x
- 46.95928062 x

4
8

+ 60.94847872 x
+ 8.475543818 x

5
9

- 38.14224353 x

+ 67.27123875 x
+ 12.25612434 x

- 37.55515556 x

10

Como (no) se pode ver, a aproximao agora bem efetiva.


Exemplos de Mecnica dos Slidos I
Utiliza-se agora o Maple para resolver problemas em Mec. Sol. I. Como primeiro
exemplo, constri-se os diagramas de momento fletor e fora cortante da viga em balano
abaixo sujeita ao carregamento mostrado. A fora distribuda de 3 kN/m extende-se sobre 8m
da viga e uma carga concentrada de 10kN est aplicada sobre a viga curta acoplada.

Usaremos a funo pr-programada de Heaviside (degrau unitrio) para definir o


carregamento. fcil notar que o momento fletor dado por

x
xa
( Pd x )
2

M ( x ) = ( Pd a) x a +
axb

Pd a x a + a + Pp c Pp x a b b x
(
)
)

(
2
e as foras cortantes por

13

Uma Introduo ao Maple V

( Pd x )
xa

V ( x ) = ( Pd a)
axb
( Pd a) Pp b x

que podem ser escritas em termos de funes de singularidade por


> Momento:=(1-Heaviside(x-a))*
(-Pd*x*x/2)
>
+(1-Heaviside(x-b-a))*Heaviside(x-a)*
(-Pd*a*(x-a+a/2))
>
+Heaviside(x-b-a)*
(-Pd*a*(x-a+a/2)+Pp*c-Pp*(x-a-b));

Momento :=

- 1/2 (1 - Heaviside(x - a)) Pd x

- (1 - Heaviside(x - b - a)) Heaviside(x - a) Pd a (x - 1/2 a)


+ Heaviside(x - b - a) (- Pd a (x - 1/2 a) + Pp c - Pp (x - b - a))

> Cortante:=(1-Heaviside(x-a))*
>
+(1-Heaviside(x-b-a))*Heaviside(x-a)*
>
+Heaviside(x-b-a)*

Cortante :=

(-Pd*x)
(-Pd*a)
(-Pd*a-Pp);

- (1 - Heaviside(x - a)) Pd x - (1 - Heaviside(x - b - a)) Heaviside(x - a) Pd a


+ Heaviside(x - b - a) (- Pd a - Pp)

Definimos agora um conjunto de dados para traar um grfico:


> SET:={a=8,b=3,c=2,d=3,Pd=3,Pp=10}:
> L:=subs(SET,a+b+c+d);
L := 16

> plot(subs(SET,Momento),x=0..L,title=`BendingMoment`);
> plot(subs(SET,Cortante),x=0..L,title=`Shear`);

Reaes de Apoio e Deflexo de uma Viga com Carga Distribuda


Uma vez que a soluo deste problema simples, pode-se usar diretamente a
integrao analtica de equaes diferenciais dsolve do Maple. Para resolver-se a reao
redundante, utiliza-se o princpio da superposio diretamente, aps a soluo da viga em
balano.

14

Uma Introduo ao Maple V

w0

Po

Escreve-se o momento fletor considerando a reao de apoio Ra incgnita. Da


resolve-se a equao diferencial da deflexo da viga utilizando-se apenas as condies de
contorno da extremidade engastada.
d2 y
EI = M y( L) = 0, y'( L) = 0
dx 2
Utiliza-se depois a condio do lado apoiado para descobrir-se a reao desconhecida.
> restart;
> Momento:=Ra*x-(1/2*(wo*x/L)*x)*x/3;

3
wo x
Momento := Ra x - 1/6 ----L

> deq1:=(D@@2)(y)(x)*EI;
deq1 := D

(2)

(y)(x) EI

> dbound:=y(L)=0,D(y)(L)=0;

dbound := y(L) = 0, D(y)(L) = 0

> solution1:=dsolve({deq1=Momento,dbound},y(x));
solution1 :=
5
3
3
2
wo x
Ra x
L (wo L - 10 Ra)
L (wo L - 12 Ra) x
y(x) = - 1/120 ----- + 1/6 ----- - 1/30 ----------------- + 1/24 ------------------EI L
EI
EI
EI

> solve(subs(x=0,rhs(solution1))=0,Ra);
1/10 wo L

Outro problema de deflexo de uma viga


Define-se o carregamento em termos de funes de Heaviside (degrau unitrio) ao
invs de defin-lo como uma funo com if. Isto evita a integrao por intervalo. Obtm-se
a soluo pela integrao das equaes diferenciais da viga e apliao das condies de
contorno.
d2y
EI = M
dx 2

M dx = E I + C ( L ) = 0
dx = y + C y ( L ) = 0
1

15

Uma Introduo ao Maple V

a
L

Define-se a fora cortante e obtm-se o momento pela diretamente por integrao, uma vez
que no h momentos concentrados aplicados. (alternativamente poderia-se definir o
carregamento por funes de Dirac)
> V:=Ra-P*Heaviside(x-L/2);

V := Ra - P Heaviside(x - a)

> M:=int(V,x);

M := Ra x - (x - a) Heaviside(x - a) P

As rotaes so obtidas integrando uma vez o momento. Aplica-se as condies de rotao


nula no lado engastado para determinar a constante de integrao.
> theta:=int(M,x)/EI+C1;

2
2
1/2 Ra x - 1/2 (x - a) Heaviside(x - a) P
theta := ------------------------------------------- + C1
EI

> solve(subs(x=L,theta)=0,C1);

2
2
2
Ra L
Heaviside(L - a) P L
Heaviside(L - a) P L a
Heaviside(L - a) P a
- 1/2 ----- + 1/2 --------------------- - ---------------------- + 1/2 --------------------EI
EI
EI
EI

> C1:=%:
> print(theta);

2
2
2
2
1/2 Ra x - 1/2 (x - a) Heaviside(x - a) P
Ra L
Heaviside(L - a) P L
------------------------------------------- - 1/2 ----- + 1/2 --------------------EI
EI
EI
2
Heaviside(L - a) P L a
Heaviside(L - a) P a
- ---------------------- + 1/2 --------------------EI
EI

A seguir integra-se novamente para se obter os deslocamentos. Aplica-se a outra condio de


contorno para resolver-se para a outra constante de integrao.
> w:=int(theta,x)+C2;
3
3
2
1/6 Ra x - 1/6 (x - a) Heaviside(x - a) P
Ra L x
w := ------------------------------------------- - 1/2 ------EI
EI
2
2
Heaviside(L - a) P L x
Heaviside(L - a) P L a x
Heaviside(L - a) P a x
+ 1/2 ----------------------- - ------------------------ + 1/2 ----------------------EI
EI
EI
+ C2

> solve(subs(x=0,w)=0,C2);

3
a Heaviside(- a) P
- 1/6 ------------------EI

> C2:=%:

16

Uma Introduo ao Maple V

Utiliza-se agora a condio de deslocamento nulo no apoio para obter a reao redundante
desconhecida:
> solve(subs(x=L,w)=0,Ra);
3
2
3
Heaviside(L - a) P L
Heaviside(L - a) P L a
Heaviside(L - a) P a
3 (1/3 --------------------- - 1/2 ----------------------- + 1/6 --------------------EI
EI
EI
3
a Heaviside(- a) P
/ 3
- 1/6 -------------------) EI / L
EI
/

> Ra:=%:

Define-se um conjunto de funes para se traar o grfico:


>
>
>
>

SET3:={P=1,L=1,EI=1}:
plot(subs(SET3,w),x=0..1,title=`Deflections`);
plot(subs(SET3,theta),x=0..1,title=`Angle`);
plot(subs(SET3,M),x=0..1,title=`Moment`);

17

Uma Introduo ao Maple V

Exemplos de Anlise Estrutural Avanada


Applicao do Teorema de Castigliano
Considera-se aqui o mesmo exemplo de uma viga estaticamente indeterminada. Esta
viga est submetica uma carga distribuda triangular e tem um apoio na extremidade esquerda
e um engaste na direita. Neste exemplo, obtem-se a reao indeterminada e a rotao no apoio
utilizando o segundo teorema de Castigliano. A reao no apoio obtida da deflexo zero em
x=0.

U
1 L 2
1 L M
y (0 ) =
=
M ( x )dx =
M
dx = 0

Ra Ra 2 E I 0
Ra
E I 0
1
x2 x
M = Ra x wo
L3
2
w0

Po

> M:=Ra*x-((1/2)*w0*(x/L)*x)*(x/3);

3
w0 x
M := Ra x - 1/6 ----L

> ya:=int(M*diff(M,Ra)/EI,x=0..L);

3
L (- w0 L + 10 Ra)
ya := 1/30 ------------------EI

> solve(ya=0,Ra);
> a:=Ra=%;

1/10 w0 L
a := Ra = 1/10 w0 L

A rotao em x=0 determinada aplicando-se um momento fictcio neste ponto, e depois da


integrao este momento igualado a zero.
> M:=-M0+M;

3
w0 x
M := - M0 + Ra x - 1/6 ----L

> theta0:=subs({M0=0,a},int(M*diff(M,M0)/EI,x=0..L));
3
L w0
theta0 := - 1/120 ----EI

Uma Aplicao do Mtodo de Rayleigh-Ritz


Obtem-se a deflexo de uma viga apoiada-engastada, sujeita a uma carga centrada,
caso j resolvido anteriormente por integrao direta, mas nesta seo utiliza-se um dos mais
importantes ferramentas da Mecnica, o Mtodo de Rayleigh-Ritz. Calcula-se uma soluo

18

Uma Introduo ao Maple V

aproximada, bastante prxima da soluo exata, baseado no princpio da Mnima Energia


Potencial, que enuncia que a o deslocamento que minimiza a energia potencial de uma
estrutura satisfaz as condies de equilbrio. A Energia Potencial Total consiste na soma da
energia de deformao com o potencial do carregamento aplicado.
F = U +W
2

1 L d 2 w
U = EI 2 dx
2 0
dx
W = ( P )w

L
x=

A deflexo w no equilbrio aquela que minimiza a energia potencial. Aproxima-se a soluo


w por um polinmio. Este polinmio escolhido de modo a satisfazer as condies de
contorno de deflexo nula em ambos os lados e de rotao nula no engaste, tal como
2
w( x ) = x( x L) C1 + C2 x + C3 x 2 , onde os primeiros termos satisfazem as condies de

contorno e o termo final uma expanso em srie de potncias truncada no termo quadrtico,
de modo que h trs incgnitas.
Busca-se agora os coeficientes C1, C2 e C3 que minimize o potencial F. As condies para a
F
F
F
minimizao a de derivadas primeiras nulas
= 0,
=0 e
=0.
C1
C2
C3
P

a
L

> w:=x*(x-L)^2*(c1+c2*x+c3*x^2);
w := x (x - L)

2
(c1 + c2 x + c3 x )

> U:=int(EI/2*(diff(w,x,x))^2,x=0..L);
U := 2/35 EI L

(7 L

c2

> W:=P*subs(x=L/2,w);
W := 1/8 P L
F :=

+ 3 L

c3

+ 35 c1

+ 7 L

(c1 + 1/2 L c2 + 1/4 L

c2 c3)

c3)

> F:=expand(U+W);

2/5 EI L

+ 1/8 P L

c2
3

+ 6/35 EI L

c1 + 1/16 P L

7
4

c3

+ 2 EI L

c2 + 1/32 P L

c1
5

+ 2/5 EI L

c2 c3

c3

> solve({diff(F,c1)=0,diff(F,c2)=0,diff(F,c3)=0},{c1,c2,c3});
P
P
{c2 = - 5/64 ----, c1 = - 1/32 ----, c3 = 0}
EI L
EI

> w:=subs(%,w);
w := x (x - L)

2 /
P
P x\
| - 1/32 ---- - 5/64 ----|
\
EI
EI L/

> plot(subs({P=1,L=1,EI=1},w),x=0..1);

19

Uma Introduo ao Maple V

Segunda Aplicao do Mtodo de Rayleigh-Ritz


Aplica-se o mtodo de Rayleigh-Ritz a uma viga bi-engastada, sujeita a um carregamento
uniformemente distribudo sobre metade de seu comprimento. Assim como no caso anterior,
utiliza-se uma aproximao polinomical que satisfaz os deslocamentos e rotaes nulas em
2
ambos os lados, neste caso w( x ) = x 2 ( x L) C1 + C2 x + C3 x 2 . O trabalho das foras

externas dado neste caso por W =

L /2

Pd w dx .
Pd

L/2
L

> w:=x^2*(x-L)^2*(c1+c2*x+c3*x^2+c4*x^3);
w := x

> W:=int(-Pd*w,x=L/2..L);
W := - 1/840 Pd L

(x - L)

(c1 + c2 x + c3 x

(28 c1 + 5 c4 L

+ 1/215040 Pd L
U :=

+ 8 L

(3584 c1 + 185 c4 L

2
3

3
+ c4 x )

c3 + 14 L c2)
+ 464 L

c3 + 1232 L c2)

> U:=int(EI/2*(diff(w,x,x))^2,x=0..L);

1/1155 EI L

(165 L

+ 198 L

c1 c4 + 462 L c1 c2 + 220 L

c2 c4 + 297 L

c2 c3 + 462 c1

2
2
2 6
4
2
5
c2 + 264 L c1 c3 + 100 c4 L + 132 L c3 + 220 c4 c3 L )

> F1:=subs({c2=0,c3=0,c4=0},U+W);
F1 := 2/5 EI L

> solve(diff(F1,c1)=0,c1);

c1

- 1/60 Pd L

Pd
1/48 ---EI

> w1:=subs({c1=%,c2=0,c3=0,c4=0},w);

2
2
x (x - L) Pd
w1 := 1/48 -------------EI

20

c1

Uma Introduo ao Maple V


> w1:=subs({L=1,EI=1,Pd=1},w1);
w1 := 1/48 x

> F2:=subs({c3=0,c4=0},U+W);
F2 := 1/1155 EI L

(462 L c1 c2 + 462 c1

+ 1/215040 Pd L

+ 198 L

(x - 1)

2
5
c2 ) - 1/840 Pd L (28 c1 + 14 L c2)

(3584 c1 + 1232 L c2)

> solve({diff(F2,c1)=0,diff(F2,c2)=0},{c1,c2});

Pd
Pd
{c2 = 7/384 ----, c1 = 3/256 ----}
EI L
EI

> subs(%,subs({c3=0,c4=0},w));
x

(x - L)

> w2:=subs({L=1,EI=1,Pd=1},%);
w2 := x

2 /
Pd
Pd x\
|3/256 ---- + 7/384 ----|
\
EI
EI L/

(x - 1)

(3/256 + 7/384 x)

> F3:=U+W;
F3 :=
1/1155 EI L

(165 L

+ 462 c1
+ 264 L

c1 c4 + 462 L c1 c2 + 220 L

+ 198 L

c2

+ 132 L

(28 c1 + 5 c4 L

+ 1/215040 Pd L

c2 c4 + 297 L

c2 c3

c1 c3 + 100 c4

- 1/840 Pd L

+ 8 L

(3584 c1 + 185 c4 L

c3
2
3

5
+ 220 c4 c3 L )

c3 + 14 L c2)
+ 464 L

c3 + 1232 L c2)

>
solve({diff(F3,c1)=0,diff(F3,c2)=0,diff(F3,c3)=0,diff(F3,c4)=0},{c1,c2,c
3,c4});
Pd
33
Pd
11
Pd
83
Pd
{c2 = 1/256 ----, c3 = ---- -----, c4 = - --- -----, c1 = ---- ----}
EI L
1024
2
512
3
6144 EI
EI L
EI L

> subs(%,w);
x

/
2
3\
2 | 83
Pd
Pd x
33 Pd x
11 Pd x |
(x - L) |---- ---- + 1/256 ---- + ---- ----- - --- -----|
|6144 EI
EI L
1024
2
512
3|
\
EI L
EI L /

> w3:=subs({L=1,EI=1,Pd=1},%);
w3 := x

(x - 1)

2 / 83
33
2
11 3\
|---- + 1/256 x + ---- x - --- x |
\6144
1024
512
/

> plot({w1,w2,w3},x=0..1);

21

Uma Introduo ao Maple V

Exemplo de um Prtico Plano


Ao contrrio dos exemplos anteriores, que podem ser resolvidos facilmente pela Mecnica
dos Slidos elementar, o prtico abaixo requer tcnicas mais avanadas. Este prtico consiste
em trs vigas iguais, com engaste no ponto A e apoio no ponto D, com uma carga
uniformemente distribuda P0 aplicada sobre a viga AB. Sero considerados apenas os efeitos
de flexo pura e deformao longitudinal; o cisalhamento ser desprezado e no h toro.
Obter-se-o as duas componentes da reao de apoio em D utilizando-se o segundo teorema
de Castigliano. Observando que no h deslocamentos no ponto F, pode-se escrever que
U *
U *
x =
e y =
, onde a energia de deformao complementar deve ter o mesmo valor
R x
Ry
que a energia total de deformao para esta estrutura elstica linear:
2
2
n
Li N

1 Li M i
i
U* =
ds +
ds
0 EI
0 EA
i =1 2
i
i

Aqui n o nmero total de membros da estrutura, Ni e EAi so as foras e rigidezes, Mi e EIi


so os momentos fletores e rigidezes flexo. Pode-se facilmente notar que as foras axiais
em cada membro so -Ry em CD, Rx em BC e Ry em AB; e os momentos fletores so (-Rx s)
em CD, (-Rx L -Ry s) em BC e (-Rx L-Ry L+Rx s+P0 s s/2) em AB.
p0
B

Rx

Ry

>
>
>
>
>
>

N1:=-Ry;
M1:=-Rx*s;
N2:=Rx;
M2:=-Rx*L-Ry*s;
N3:=Ry;
M3:=-Rx*L-Ry*L+Rx*s+(p0*s)*s/2;

22

Uma Introduo ao Maple V


N1 := - Ry
M1 := - Rx s
N2 := Rx
M2 := - Rx L - Ry s
N3 := Ry
M3 := - Rx L - Ry L + Rx s + 1/2 p0 s

> UN:=(int(N1^2,s=0..L)+int(N2^2,s=0..L)+int(N3^2,s=0..L))/(2*EA);
> UM:=(int(M1^2,s=0..L)+int(M2^2,s=0..L)+int(M3^2,s=0..L))/(2*EI);
2
2
2 Ry L + Rx L
UN := 1/2 --------------EA

UM := 1/2 (2/3 Rx

- 1/12 Rx p0 L

L
4

3
3
3 3
L (Rx + Ry)
Rx L
2 5
3
+ 1/3 ------------- - 1/3 ------ + 1/20 p0 L + Rx Ry L
Ry
Ry
- 1/3 p0 Ry L

+ Ry

3
L )/EI

> deltax:=simplify(diff(UN+UM,Rx));

2
2
3
L (24 Rx EI + 40 L EA Rx + 24 L EA Ry - L EA p0)
deltax := 1/24 --------------------------------------------------EA EI

> deltay:=simplify(diff(UN+UM,Ry));

2
2
3
L (12 Ry EI + 6 L EA Rx + 8 L EA Ry - L EA p0)
deltay := 1/6 ------------------------------------------------EA EI

> solve({deltax=0,deltay=0},{Rx,Ry});

3
2
3
2
L EA p0 (- 3 EI + 4 L EA)
L EA p0 (12 EI + 17 L EA)
{Rx = - 1/4 --------------------------------, Ry = 1/8 --------------------------------}
4
2
2
2
4
2
2
2
11 L EA + 18 EI + 42 EI L EA
11 L EA + 18 EI + 42 EI L EA

Exemplos em Anlise Estrutural Avanada


Faz-se uma anlise do erro de interpolao de um elemento finito quadrilateral para
problemas bidimensional utilizando a expanso em srie de Taylor de uma funo arbitrria
g no Maple:
2
2
i+ j g
i
j 1
3
3
g(s0 , t 0 ) = (s0 s) (t 0 t )
+ O (s0 s) (t 0 t ) .
i
j
i ! j ! s t
i =0 j =0

Usa-se o elemento standard bilinear isoparamtrico de 4 ns:


1
1
N 1 = (1 s)(1 t ) , N 2 = (1 + s)(1 t )
4
4

1
1
N 3 = (1 + s)(1 + t ) , N 4 = (1 s)(1 + t )
4
4
As primeiras derivadas do erro de interpolao podem ser
representadas por
4
4
e I
N g
e I
N g
= g 2 (si , t i ) i
,
= g 2 (si , t i ) i
s
s s
t
t
t
i =1
i =1
3

23

Uma Introduo ao Maple V


> with(linalg):

Warning: new definition for


Warning: new definition for

norm
trace

> readlib(mtaylor):

Expanso de Taylor's para a funo arbitrria g


> gT2:=convert(mtaylor(g(s0,t0),[s0=s,t0=t],3),polynom);
gT2 := g(s, t) + D[1](g)(s, t) (s0 - s) + D[2](g)(s, t) (t0 - t)
+ 1/2 D[1, 1](g)(s, t) (s0 - s)
+ 1/2 D[2, 2](g)(s, t) (t0 - t)

+ (s0 - s) D[1, 2](g)(s, t) (t0 - t)

Define-se um conjunto com os valores em cada n desta expanso


>
>
>
>
>

g1:=subs({s0=-1,t0=-1},gT2):
g2:=subs({s0= 1,t0=-1},gT2):
g3:=subs({s0= 1,t0= 1},gT2):
g4:=subs({s0=-1,t0= 1},gT2):
gv:=[g1,g2,g3,g4];

2
gv := [g(s, t) + D[1](g)(s, t) (- 1 - s) + D[2](g)(s, t) (- 1 - t) + 1/2 %3 (- 1 - s)
2
+ (- 1 - s) %2 (- 1 - t) + 1/2 %1 (- 1 - t) ,
g(s, t) + D[1](g)(s, t) (1 - s) + D[2](g)(s, t) (- 1 - t) + 1/2 %3 (1 - s)

2
+ (1 - s) %2 (- 1 - t) + 1/2 %1 (- 1 - t) ,
g(s, t) + D[1](g)(s, t) (1 - s) + D[2](g)(s, t) (1 - t) + 1/2 %3 (1 - s)

2
+ (1 - s) %2 (1 - t) + 1/2 %1 (1 - t) ,
g(s, t) + D[1](g)(s, t) (- 1 - s) + D[2](g)(s, t) (1 - t) + 1/2 %3 (- 1 - s)
+ (- 1 - s) %2 (1 - t) + 1/2 %1 (1 - t)

%1 :=

D[2, 2](g)(s, t)

%2 :=

D[1, 2](g)(s, t)

%3 :=

D[1, 1](g)(s, t)

Definindo as funes de interpolao e suas derivadas


> SF:=[(1-s)*(1-t)/4,(1+s)*(1-t)/4,(1+s)*(1+t)/4,(1-s)*(1+t)/4];
> DSFs:=map(x->diff(x,s),SF);
> DSFt:=map(x->diff(x,t),SF);

SF :=

[1/4 (1 - s) (1 - t), 1/4 (1 + s) (1 - t), 1/4 (1 + s) (1 + t), 1/4 (1 - s) (1 + t)]


DSFs := [- 1/4 + 1/4 t, 1/4 - 1/4 t, 1/4 + 1/4 t, - 1/4 - 1/4 t]
DSFt := [- 1/4 + 1/4 s, - 1/4 - 1/4 s, 1/4 + 1/4 s, 1/4 - 1/4 s]

A derivada deste erro em relao coordenada s


> deds:=simplify((dotprod(gv,DSFs,'orthogonal'))-D[1](g)(s,t));
deds := - D[1, 1](g)(s, t) s

Similarmente a respeito de t
> dedt:=simplify((dotprod(gv,DSFt,'orthogonal'))-D[2](g)(s,t));
dedt := - D[2, 2](g)(s, t) t

24

Uma Introduo ao Maple V

Exemplo de Flexo:
Para a geometria descrita pela figura abaixo, considera-se um caso de flexo pura
caracterizada pela configurao deformada mostrada com linha slida na figura. Calcula-se as
deformaes deste movimento, assim como as energias de deformao Ix, Iy e Ixy
normalizadas em relao a E/(1-2). Obtidas estas energias, traa-se um grfico da razo
Ixy/Ix em relao razo de aspecto hy/hx.
y
4

hy

1
hx

> DSF:=concat(DSFs,DSFt);

[ - 1/4 + 1/4 t
[
[ 1/4 - 1/4 t
DSF := [
[ 1/4 + 1/4 t
[
[ - 1/4 - 1/4 t

> xv:=[0,hx,hx,0]:
> yv:=[0,0,hy,hy]:
> coor:=concat(xv,yv);

[ 0
[
[ hx
coor := [
[ hx
[
[ 0

> Jac:=evalm(transpose(coor)*DSF);
[ 1/2 hx
Jac := [
[
0

- 1/4 + 1/4 s ]
]
- 1/4 - 1/4 s ]
]
1/4 + 1/4 s ]
]
1/4 - 1/4 s ]

0 ]
]
0 ]
]
hy ]
]
hy ]
]
]
1/2 hy ]

> Jacinv:=inverse(Jac);

[
2
[ ---[ hx
Jacinv := [
[
[
0
[

> jacobian:=det(Jac);

]
]
]
]
2 ]
---- ]
hy ]
0

jacobian := 1/4 hx hy

> displace:=matrix(4,2,[-a,0,a,0,-a,0,a,0]);
[ - a
[
[ a
displace := [
[ - a
[
[ a

0 ]
]
0 ]
]
0 ]
]
0 ]

> Ddispl:=evalm(transpose(displace)*DSF);
[ - a t
Ddispl := [
[
0

> Ddispx:=evalm(Ddispl*Jacinv);

25

- a s ]
]
0
]

Uma Introduo ao Maple V


[
a t
[ - 2 --Ddispx := [
hx
[
[
0

a s ]
- 2 --- ]
hy ]
]
0
]

> ex:=Ddispx[1,1];
> ey:=Ddispx[2,2];
> gxy:=Ddispx[1,2]+Ddispx[2,1];

a t
ex := - 2 --hx
ey := 0

a s
gxy := - 2 --hy

> Ix:=int(int(ex^2*jacobian,s=-1..1),t=-1..1);
> Iy:=int(int(ey^2*jacobian,s=-1..1),t=-1..1);
> Ixy:=int(int(gxy^2*jacobian,s=-1..1),t=-1..1);
2
a hy
Ix := 4/3 ----hx
Iy := 0
2
a hx
Ixy := 4/3 ----hy

> d33:=subs(nu=3/10,(1-nu)/2);

d33 := 7/20

> SET:={hy=x*hx,a=1}:
> plot(subs(SET,d33*Ixy/Ix),x=.5..4);

26

Vous aimerez peut-être aussi