Académique Documents
Professionnel Documents
Culture Documents
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 ]
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)
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
3
+ _Z )
> 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 ]
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
]
]
]
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);
> evalm(v);
> 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]
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]
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] ]
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] ]
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] ]
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
+ x cos(exp(- x))
1
sin(------)
2
1 + 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;
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);
> 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
+ 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.
> exact:=evalf(Int(f(x),x=-2..2));
exact := 6.870394434
2
= , cos(1) + (- 1 + sin(1)) x + O(x )
= ,
+ 1/2 cos(1) x
4
+ O(x )
Taylor s Series , 6,
= ,
+ 1/2 cos(1) x
/
23
\ 5
6
+ |- --- sin(1) + 1/24 cos(1)| x + O(x )
\ 120
/
> evalm(difference);
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
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
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;
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
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);
> 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
4
8
+ 60.94847872 x
+ 8.475543818 x
5
9
- 38.14224353 x
+ 67.27123875 x
+ 12.25612434 x
- 37.55515556 x
10
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
( Pd x )
xa
V ( x ) = ( Pd a)
axb
( Pd a) Pp b x
Momento :=
> 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);
> plot(subs(SET,Momento),x=0..L,title=`BendingMoment`);
> plot(subs(SET,Cortante),x=0..L,title=`Shear`);
14
w0
Po
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;
> 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
M dx = E I + C ( L ) = 0
dx = y + C y ( L ) = 0
1
15
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
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
> solve(subs(x=0,w)=0,C2);
3
a Heaviside(- a) P
- 1/6 ------------------EI
> C2:=%:
16
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:=%:
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
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
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
18
1 L d 2 w
U = EI 2 dx
2 0
dx
W = ( P )w
L
x=
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
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
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
> 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)
> 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
1 Li M i
i
U* =
ds +
ds
0 EI
0 EA
i =1 2
i
i
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
> 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
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
norm
trace
> readlib(mtaylor):
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)
SF :=
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
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
]
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