Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUO ..................................................................................................................... 4
1.7 LIMITES..................................................................................................................... 9
2.3 POSTO DE UMA MATRIZ, PRODUTO ESCALAR, PRODUTO VETORIAL E NORMA DE VETORES ... 15
BIBLIOGRAFIA ................................................................................................................... 49
Introduo
O help uma maneira de conseguir ajuda caso voc saiba exatamente o tpico a
respeito do qual voc necessita de informaes. Existem pelo menos duas formas de
acess-lo:
1 Na aba Help
Exemplo:
>?matrix;
Alguns pacotes disponveis ao usurio so: plots, linalg, DEtools, LinearAlgebra, Students.
a , b
2 -1
3 3
Exerccio:
1. Aplique o comando solve ao sistema de equaes e comente a soluo encontrada.
2 + + = 1
+ 2 + = 0
5 + 4 + 3 = 2
1.4 FUNES
Uma maneira para definirmos uma funo no MAPLE usarmos o operador seta (-
>, isto , sinal de menos seguido do sinal de maior). Por exemplo:
>g:= x ->x^2 + 1;
g := xx21
>g(4);
17
Devemos definir a funo desta maneira porque da forma como atribumos
anteriormente o MAPLE apenas nos daria o valor de f(x), vejamos:
>f(x):=x^2+1*x+1=0;
f( x ) := x2x10
>solve (f(x));
1 1 1 1
I 3 , I 3
2 2 2 2
x2 x-1
2
g :=
x -1x and x1
x3
otherwise
>plot(g,x=-1.5..1.5,thickness=2,scaling=constrained);
Para acessar informaes sobre essas e outras funes no MAPLE, utiliza-se o comando:
>?inifcn
1.5 SOMATRIOS
>Sum(1/n^2, n=1..infinity)=sum(1/n^2, n=1..infinity);
2
2 6
1
n 1 n
1.6 PRODUTRIO
>Product(1/n, n=1..30)=product(1/n, n=1..30);
30
n 265252859812191058636308480000000
1 1
n 1
1.7 LIMITES
>Limit(x^2*sin(1/x), x=0)=limit(x^2*sin(1/x), x=0);
lim x2 sin 0
1
x 0 x
1.8 DERIVADAS
>Diff(x^2*sin(1/x),x$1)=diff(x^2*sin(1/x),x$1);
d 2 1
x sin 2 x sin cos
1 1
dx x x x
A :=
a b c
d e f
>B:=Matrix(3,2,[[1,7],[5,6]]);
1 7
B := 5 6
0 0
>C:=Matrix([[1,2],[4,5]]);
C :=
1 2
4 5
>v:=Vector(3,[a,b,c]);
a
v := b
c
1 0 0
M := 0 1 0
0 0 1
2.1.3 Operaes bsicas
Sejam as matrizes
>with(LinearAlgebra):
>A:=Matrix(2,2,[[4,6],[0,5]]);
A :=
4 6
0 5
>B:=Matrix(2,2,[[1,4],[9,-1]]);
B :=
1 4
9 -1
e os vetores
>v:=Vector(2,[[1],[-1]]);
v :=
1
-1
>u:=Vector(2,[[2],[-3]]);
u :=
2
-3
DETERMINANTE
>Determinant(A);
20
TRAO DA MATRIZ
Soma dos elementos da diagonal
>Trace(A);
9
TRANSPOSTA DE UMA MATRIZ
>Transpose(A);
4 0
6 5
MATRIZ INVERSA
>MatrixInverse(A);
1 -3
4 10
1
0
5
Vamos verificar se esta realmente a matriz inversa
>Multiply(A,MatrixInverse(A));
1 0
0 1
>Multiply(MatrixInverse(A),A);
1 0
0 1
Consideremos a matriz
>C:=Matrix(2,2,[[3,1],[3,1]]);
C :=
3 1
3 1
utilizando o comando para obter a matriz inversa resulta
>MatrixInverse(C);
Error, (in LinearAlgebra:-LA_Main:-MatrixInverse) singular matrix
O MAPLE neste caso acusa que a matriz C singular ou seja seu determinante
zero, o que leva a matriz a no ser inversvel.
>Determinant(C);
0
Vamos agora trabalhar com matrizes cujas entradas so funes de uma varivel
>F:=Matrix(2,2,[[x,1],[x^2-1,0]]);
x 1
F := 2
x 1 0
Caso se queira calcular o valor de cada coordenada quando = 0podemos usar o
comando
>subs(x=0,F);
0 1
-1 0
Comando este que tambm vlido para funes
>f:=x^2+1;
f :=x21
>subs(x=1,f);
2
O comando Mappercorre cada coordenada da matriz realizando nessa a operao
desejada. Vejamos algumas aplicaes deste comando:
Neste exemplo estamos somando 2 a cada coordenada da matriz em questo.
>Map(x->x+2,F);
x2 3
2
x 1 2
Pode-se dessa forma obter tambm a derivada das entradas da matriz
>Map(diff,F,x);
1 0
2x 0
e tambm sua integral
>Map(int,F,x);
x
2
x
2
1 3
x x 0
3
2.3 POSTO DE UMA MATRIZ, PRODUTO ESCALAR, PRODUTO VETORIAL E NORMA DE
VETORES
Dada uma matriz A o posto da matriz pode ser calculado utilizando o comando
Rank(A), no pacote LinearAlgebra. Vejamos alguns exemplos:
>restart:
>with(LinearAlgebra):
>A:=Matrix(3,3,[1,3,2,4,7,1,6,13,5]);
1 3 2
A := 4 7 1
6 13 5
>Rank(A);
2
>B:=Matrix(2,2,[1,4,9,5]);
B :=
1 4
9 5
>Rank(B);
2
>C:=Matrix(2,3,[1,3,5,4,3,7]);
C :=
1 3 5
4 3 7
>Rank(C);
2
Vamos agora apresentar comandos que forneam produto escalar, produto vetorial
norma e ngulo entre dois vetores. Dados dois vetores, , vejamos os comandos
relativos a estas operaes.
>with(LinearAlgebra):
>v:=Vector(3,[1,2,2]);
1
v := 2
2
>w:=Vector(3,[1,2,-1]);
1
w := 2
-1
2.3.1 PRODUTO ESCALAR
>DotProduct(v,w);
3
2.3.2 PRODUTO VETORIAL
>CrossProduct(v,w);
-6
3
0
2.3.3 NORMA DE UM VETOR
>VectorNorm(v,2);
3
>VectorNorm(w,2);
6
2.3.4 NGULO ENTRE DOIS VETORES
O ngulo entre dois vetores pode ser encontrado a partir do produto interno como:
=
||
O MAPLE possui um comando especfico para calcular o ngulo dado por:
>theta:=VectorAngle(v,w);
6
:=arccos
6
Resultado que confere com a frmula para dada acima.
A :=
4 2
3 -1
>Determinant(A-lambda*IdentityMatrix(2));
1032
Ou simplesmente
>p(lambda):=CharacteristicPolynomial(A,lambda);
p() :=1032
2.4.1 AUTOVALORES
>Eigenvalues(A);
5
-2
Caso queira o primeiro ou o segundo autovalor separadamente, podemos usar o
comando a seguir
>Eigenvalues(A)[1];
5
>Eigenvalues(A)[2];
-2
Utilizar o comando Eigenvalues equivalente a encontrarmos as razes do
polinmio caracterstico de .
2.4.2 AUTOVETORES
5 2
-1
v, e := , 3
-2 1 1
Aqui o vetor nos fornece os autovalores de e a matriz os autovetores de de
forma que a i-sima coluna de autovetor associado i-simo elemento de . Ou seja,
1
3 2
para este exemplo, 1 = autovetor associado ao autovalor -2, e 2 =
1 1
autovetor associado ao autovalor 5.
O uso do comando Eigenvectors equivalente a resolvermos o sistema
= 0,
no qual autovalor e autovetor.
Exerccio:
1. Verifique se as solues encontradas satisfazem = .
Soluo:
>v1:=DeleteColumn(e,2);
v1 :=
2
1
>Multiply(A,v1);
10
5
>v2:=DeleteColumn(e,1);
-1
v2 := 3
1
>Multiply(A,v2);
2
3
-2
>restart:
>with(LinearAlgebra):
>A:=Matrix(2,2,[[1,2],[3,6]]);
A :=
1 2
3 6
>NullSpace(A);
{ }
-2
1
Nullspace de o ncleo de , e o comando Nullspace(A) nos d uma base para
o ncleo de .
Outro exemplo:
>B:=Matrix(3,3,[[1,1,2],[2,2,4],[3,3,6]]);
1 1 2
B := 2 2 4
3 3 6
>NullSpace(B);
-2 -1
0, 1
1
0
>restart:
>with(LinearAlgebra):
>vv:=Vector(4,a);
a( 1)
a( 2)
vv :=
a( 3)
a( 4)
Declaramos os vetores
>v[1]:=Vector(4,[[1],[1],[1],[1]]):
>v[2]:=Vector(4,[[1],[2],[4],[5]]):
>v[3]:=Vector(4,[[1],[-3],[-4],[-2]]):
>ord:=GramSchmidt([v[1],v[2],v[3]]);
8
5
-2
1 -17
1 -1
ord :=
10
, ,
1 1 -13
1 2
10
7
5
Observao:
Cabe aqui lembrar que uma matriz diagonalizvel se o polinmio minimal mnico.
>Eigenvectors(T);
-1
4, 1 2
1 1 1
3 1 -1
Exerccio: Verifique se a matriz T := 2 2 -1 diagonalizvel, calculando os
2 2 0
polinmios minimal e caracterstico da matriz do operador. Em seguida calcule a forma
cannica de Jordan.
>restart:
>with(LinearAlgebra):
>T:=Matrix(3,3,[3,1,-1,2,2,-1,2,2,0]);
3 1 -1
T := 2 2 -1
2 2 0
>p(x):=factor(CharacteristicPolynomial(T,x));
1 1 0
Exerccio: Dada a matriz T := -1 3 0 calcule o polinmio caracterstico e minimal,
-1 1 2
conclua se a matriz diagonalizvel. E ento calcule a Forma Cannica de Jordan.
>restart:
>with(LinearAlgebra):
>T:=Matrix(3,3,[1,1,0,-1,3,0,-1,1,2]);
1 1 0
T := -1 3 0
-1 1 2
>p(x):=factor(CharacteristicPolynomial(T,x));
p(x) :=(x2)3
>m(x):=factor(MinimalPolynomial(T,x));
m(x) :=(x2)2
>J:=JordanForm(T);
2 1 0
J := 0 2 0
0 0 2
> restart:with(LinearAlgebra):
> B:=Matrix(2,3,[1,2,3,1,3,2]);
B :=
1 2 3
1 3 2
> GaussianElimination(B);
1 2 3
0 1 -1
> C:=Matrix(2,2,[1,2,5,2]);
C :=
1 2
5 2
> GaussianElimination(C);
1 2
0 -8
Modelando situaes reais podemos nos deparar com diferentes tipos de sistemas.
Aqui sero abordados alguns mtodos para resoluo de sistemas lineares.
Exemplo:
(Fuvest 2008) Joo entrou na lanchonete BOG e pediu 3
hambrgueres, 1 suco de laranja e 2 cocadas, gastando R$
21,50. Na mesa ao lado, algumas pessoas pediram 8
hambrgueres, 3 sucos de laranja e 5 cocadas, gastando R$
57,00. Sabendo-se que o preo de um hambrguer, mais o de
um suco de laranja, mais o de uma cocada totaliza R$ 10,00,
calcule o preo de cada um desses itens.
Para resolver esse problema escrevemos cada afirmao como uma equao
matemtica. Assim se chamarmos de 1 o preo do hambrguer, 2 o preo do suco de
laranja e 3 o preo da cocada temos o seguinte sistema de equaes.
31 + 2 + 23 = 21,50
81 + 32 + 53 = 57
1 + 2 + 3 = 10
3 1 2 1 21,5
= 8 3 5 2 = 57
1 1 1 3 10
sendo
3 1 2 21,5 1
= 8 3 5 , = 57 e = 2
1 1 1 10 3
Sabemos que o sistema tem uma nica soluo se o determinante da matriz for
diferente de zero. Vejamos:
>restart:
>with(LinearAlgebra):
>A:=Matrix([[3,1,2],[8,3,5],[1,1,1]]);
3 1 2
A := 8 3 5
1 1 1
>b:=Vector([[21.5],[57],[10]]);
21.5
b := 57
10
>Determinant(A);
1
Como det 0 sabe-se que a matriz inversvel, desta forma podemos calcular:
>x:=Multiply(MatrixInverse(A),b);
4.
x :=2.50000000000000000
3.50000000000000000
1 = 4, 2 = 2,5 e 3 = 3,5
4.
2.50000000000000000
3.50000000000000000
2.9.1 Fatorao LU
=
=
>(p,L,U):=LUDecomposition(A,method='GaussianElimination');
1 0 0
3 1 2
1 0 0 8
0 -1
0,
1 1
p, L, U := 0 , 0
3
1 3
3
1
0 1 0
0 1
2 0 1
3
A matriz p, chamada matriz de permutao, determina o pivoteamento realizado.
Agora vamos resolver os sistemas determinados pela fatorao:
>Pb:=Multiply(p,b);
21.5
Pb := 57.
10.
>y:=LinearSolve(L,Pb);
21.5000000000000000
y :=-0.333333333333330151
3.49999999999999422
>x:=LinearSolve(U,y);
4.00000000000000266
x :=
2.50000000000000356
3.49999999999999422
Para declarar uma EDO precisamos identificar a ordem de cada derivada presente
na equao. Por exemplo, se quisermos declarar a derivada de ordem de uma
funono MAPLE, escrevemos:
>diff(y(t),t$n);
dn
y( t )
dtn
Dessa forma, para declararmos uma equao diferencial no MAPLE escrevemos:
> edo:=diff(y(t),t$2)-5*y(t)=2*cos(t);
d
2
edo := 2 y( t ) 5 y( t )2 cos ( t )
dt
ics := y( 0 )1, D( y )( 1 )0
Em geral, o comando para resolver uma EDO o dsolve. Agora resolvendo o
Problema de Valor Inicial acima citado:
> with(DEtools):
> edo:=diff(y(t),t$2)-5*y(t)=2*cos(t):
> ics:=y(0)=1,(D@@(1))(y)(1)=(0):
> dsolve({edo,ics},y(t));
( 5 t) ( 5) ( 5 t ) ( 5) ( 5)
1 e 5 ( 4 5 sin( 1 ) e ) 1 e e ( 20 e 5 sin( 1 ) )
y( t ) 2
2
15 ( 5) 15 ( 5)
(e ) 1 (e ) 1
1
cos( t )
3
Utilizando o comando dsolve obtemos uma soluo para a equao diferencial,
porm este comando no identifica o mtodo utilizado. Para isso utiliza-se o comando
infolevel. O valor identificado no comando infolevel varia nos nveis:
- Nvel 2,3: informaes gerais, incluindo a tcnica ou algoritmo usado.
- Nvel 4,5: informaes mais detalhadas sobre como o problema est sendo resolvido.
Exemplo 1: Utilizando a Equao Diferencial + 5 = 2 cos .
> with(DEtools):
> edo:=diff(y(t),t$1)-5*y(t)=2*cos(t):
> infolevel[dsolve]:=4:
> dsolve(edo,y(t));
5 1 (5 t )
y( t ) cos ( t ) sin( t )e _C1
13 13
3+4+2
Exemplo 2: Utilizando a Equao Diferencial = 2(1 .
)
> with(DEtools):
> edo:=diff(y(x),x$1)=(3*x^2+4*x+2)/(2*(1-y(x))):
> infolevel[dsolve]:=4:
> dsolve(edo,y(x));
> with(DEtools):
> edo:=diff(y(t),t)=(1-2*t)/y(t);
d 12 t
edo := y( t )
dt y( t )
> separablesol(edo,y(t));
{ y( t ) 2 t2 t 22 _C1 , y( t ) 2 t2 t 22 _C1 }
> with(DEtools):
> edo:= diff(y(x),x$1)=(x^2+x*y(x)+y(x)^2)/x^2;
d x 2x y( x )y( x ) 2
edo := y( x )
dx x2
> genhomosol(edo,y(x));
> with(DEtools):
> edo:=diff(y(x),x$1)= exp(2*x)+y(x)-1;
d (2 x )
edo := y( x )e y( x )1
dx
> exactsol(edo,y(x));
2
{ y( x )( e x ) 1_C1 e x }
> with(DEtools):
> edo:=x^2* diff(y(x),x$1)+y(x)^2=x*y(x);
edo := y( x ) x 2y( x ) 2x y( x )
d
dx
> bernoullisol(edo,y(x));
x
{ y( x ) }
ln( x )_C1
> restart:
with(DEtools):
edo:=diff(p(t),t)=0.5*p(t)-450:
dfieldplot(edo,{p(t)},t=-
3..3,p=800..1000,color=green,title=`Campo de direes da
equao diferencial`);
> DEplot(edo,y(t),t=-3..3,[[y(0)=1]],y=-3..3);
> restart:
> with(DEtools):
> edo:=diff(y(x),x)=(-((4*x)+(3*y(x)))/((2*x)+(y(x))));
d 4 x3 y( x)
edo := y( x)
dx 2 xy( x)
> dfieldplot(edo,{y(x)},x=-3..3,y=-
3..3,color=green,dirgrid=[50,50],title=`Campo de direes da
equao diferencial`);
> DEplot(edo,y(x),x=-7..7,[[y(0)=1]],linecolor=[blue],
y=-5..5);
> restart:
> with(DEtools):
> phaseportrait(Pi*diff(y(x),x)=y(x)-x,y(x),x=-2.5..1.4,
[[y(0)=1]],y=-4..5,stepsize=.05);
Nesta seo vamos obter os planos de fase da equao do pndulo. Para isso
consideraremos as seguintes situaes: pndulo no amortecido, com pequenas
oscilaes e com oscilaes maiores e o pndulo amortecidos. Para cada caso ser
construdo o plano de fase com uma animao em relao ao tempo.
>restart:
>with(DEtools):
>with(plots):
>sistema1:=[diff(x(t),t)=y(t),diff(y(t),t)=-x(t)];
DEplot(sistema1,{x(t),y(t)},t=-2..2,x=-6..6,[[x(0)=k,y(0)=k] $
k=-10..10],y=-
6..6,color=brown,dirgrid=[20,20],linecolour=blue);
sistema1:=
d d
dt x( t )y( t ), dt y( t )x( t )
>DEplot([diff(x(t),t)=y(t),diff(y(t),t)=-
x(t)],[x(t),y(t)],t=0..10,[[x(0)=0,y(0)=.5],[x(0)=0,y(0)=1],[x
(0)=0,y(0)=1.8],
[x(0)=5,y(0)=1],[x(0)=-4,y(0)=1],[x(0)=-Pi,y(0)=1],
[x(0)=Pi,y(0)=1], [x(0)=-2*Pi,y(0)=1],[x(0)=2*Pi,y(0)=.5],
[x(0)=-2*Pi,y(0)=2.1],[x(0)=2*Pi,y(0)=-2.1]],title=`Plano de
fase`,dirfield=300,color=magnitude,linecolor=blue,animate=true
);
Para o caso com oscilaes maiores temos a equao (1) que pode ser
representada como o sistema de equaes de primeira ordem,
=
= sin ()
>restart:
>with(DEtools):
>with(plots):
>sistema1:=[diff(x(t),t)=y(t),diff(y(t),t)=-sin(x(t))];
sistema1:= x( t )y( t ), y( t )sin( x( t ) )
d d
dt dt
>g1:=DEplot(sistema1,{x(t),y(t)},t=-10..10,x=-
12..12,[[x(0)=k/1,y(0)=0] $ k=-20..20],y=-
5..5,color=gray,dirgrid=[20,20],linecolour=blue):
>g2:=DEplot(sistema1,{x(t),y(t)},t=-10..10,x=-
12..12,[[x(0)=2*k,y(0)=-2] $ k=-10..10],y=-
5..5,color=gray,dirgrid=[20,20],linecolour=blue):
>g3:=DEplot(sistema1,{x(t),y(t)},t=-10..10,x=-
12..12,[[x(0)=2*k,y(0)=2] $ k=-10..10],y=-
5..5,color=gray,dirgrid=[20,20],linecolour=blue):
>display([g1,g2,g3],thickness=4,title=`Plano de fase`);
>DEplot([diff(x(t),t)=y(t),diff(y(t),t)=-
sin(x(t))],[x(t),y(t)],t=0..10,[[x(0)=0,y(0)=.5],[x(0)=0,y(0)=
1],[x(0)=0,y(0)=1.8],[x(0)=-
2*Pi,y(0)=1],[x(0)=2*Pi,y(0)=.5],[x(0)=-
2*Pi,y(0)=2.1],[x(0)=2*Pi,y(0)=-2.1]],title=`plano de
fase`,dirfield=300,color=magnitude,linecolor=blue,animate=true
);
3.4.2 Pndulo com amortecimento
s2 :=12
s3 :=13
n2 :=4
n3 :=6
n4 :=8
n5 :=10
n6 :=12
n7 :=14
n8 :=16
n9 :=18
n10 :=20
n2 :=5
n3 :=7
n4 :=9
n5 :=11
n :=1
> restart:with(LinearAlgebra):
> A:=Matrix(2,2,[2,4,-1,9]):
> B:=Matrix(2,2,a):
> for i from 1 to 2 do
for j from 1 to 2 do
if A[i,j]<=0 then
B[i,j]:=0;
else
B[i,j]:=A[i,j];
fi;
od;
od;
print(B);
2 4
0 9
4.1.3 Comando: while
Com o comando while permite tambm criarmos uma espcie de loop. Para
este comando utilizamos a seguinte estrutura.
while do b od;
onde:
: condio;
b: comando a ser executado.
Vejamos um pequeno exemplo:
> s:=0:
> while s<10 do
s:=s+2
od;
s :=2
s :=4
s :=6
s :=8
s :=10
At este momento vimos algumas estruturas simples amplamente utilizadas em
programao. Vamos agora criar alguns programas que exemplifiquem procedimentos
implementados no MAPLE.
> modulo(2);
2
> modulo(-2);
2
Exemplo 2: Calcular a mdia aritmtica para trs valores dados:
> restart:
aritmetica:=proc(v1,v2,v3)
(v1+v2+v3)/3
end:
> aritmetica(7,8,9);
8
Exemplo 3: Calcular a mdia geomtrica para 4 valores dados.
> restart:
geometrica:=proc(v1,v2,v3,v4)
evalf(v1*v2*v3*v4)^(1/4)
end:
> geometrica(6,5,7,8);
6.402171746
Exemplo 4: Somar os primeiros nmeros naturais.
> restart:
> soma:=proc(n)
local s,i;
s:=0;
for i from 1 to n do
s:=s+i
od;
end:
Neste caso o comando local declara as variveis que sero utilizadas no interior do
programa.
> soma(100);
5050
, < 2
Exemplo 5: Declarar a funo = + 1, 2 < 0
2
, 0
> restart:
> f:=proc(x)
if x<-2 then x
else
if -2<=x and x<0 then x+1
else x^2
fi;
fi;
end:
> f(2);
4
Exemplo 6: Criar um programa que permita calcular o n-simo termo da sequncia de
Fibonacci dado pela recursivamente por:
0, = 0
= 1, = 1
1 + 2 , 2
> restart:
> SeqFibonacci:=proc(n,integer)
if n=0 then 0
else
if n=1 then 1
else SeqFibonacci(n-1)+SeqFibonacci(n-2)
fi;
fi;
end:
> SeqFibonacci(11);
89
Exemplo 7: Calcular as matriz transposta conjugada de uma matriz de ordem .
> restart:
> transpostaconjugada:=proc(A,m,n)
local At, i,j;
with(LinearAlgebra):
At:=matrix(n,m,a);
for i from 1 to n do
for j from 1 to m do
At[i,j]:=conjugate(A[j,i])
od;
od;
print(At);
end:
> m:=2:
n:=3:
> A:=Matrix(m,n,[[I,2,-2*I],[4,0,2]]);
A :=
I 2 -2I
4 0 2
> transpostaconjugada(A,m,n);
I 4
2 0
2 I 2