Vous êtes sur la page 1sur 62

i

Material Suplementar para Acompanhar

] lgebra Linear com Aplicaes


Oitava Edio

Steven J. Leon
University of Massachusetts, Dartmouth

Traduo e Reviso Tcnica

Srgio Gilberto Taboada


Docteur Ingnieur cole Nationale Suprieure de lAronautique et de lEspace Toulouse Frana
Professor Associado II do Centro Federal de Educao Tecnolgica
Celso Suckow da Fonseca (CEFET-RJ)

Este Material Suplementar contm Aplicaes referentes ao livro-texto que podem ser usadas
como apoio para o livro lgebra Linear com Aplicaes, Oitava Edio, 2010. Este material
de uso exclusivo de professores e estudantes da matria.
Material Suplementar: Aplicaes traduzidas do material original:
Applications to accompany Linear Algebra with Applications, Eigth Edition
Portuguese translation copyright 2010 by LTC __ Livros Tcnicos e Cientficos Editora
Ltda. Translated by permission of Pearson Education, Inc., publishing as Prentice Hall.
Copyright 2009 by Pearson Education, Inc. All Rights Reserved.
Obra publicada pela LTC
lgebra Linear com Aplicaes, Oitava Edio
Direitos exclusivos para a lngua portuguesa
Copyright 2010 by
LTC Livros Tcnicos e Cientficos Editora Ltda.
Uma editora integrante do GEN | Grupo Editorial Nacional
Capa do livro: Leonardo Queiroz
Editorao Eletrnica do material suplementar:

Sumrio
Aplicao 1...................................................................................................1
Aplicao 2...................................................................................................8
Aplicao 3.................................................................................................10
Aplicao 4.................................................................................................22
Aplicao 5.................................................................................................29
Aplicao 6.................................................................................................33
Aplicao 7.................................................................................................40
Aplicao 8.................................................................................................48
Aplicao 9.................................................................................................49
Aplicao 10...............................................................................................56

Aplicao 1
Programao Linear
ATENO Este um arquivo muito grande. Se voc est vendo uma figura estranha, acione
EDIT/EXECUTE. Para o professor: a figura mencionada no Projeto 1 muito difcil de ser gerada por estudantes no computador ela pode ser feita mo.
PLANO DE FUNDO: Estes grficos foram usados no Plano de Fundo deste projeto.
> with(plots):with(linalg):
Warning, new definition for norm
Warning, new definition for trace
>
> s1:=spacecurve([t,6,0],t=0..4,color=green):
> s2:=spacecurve([3,t,0], t = 0..7, color=red):
> s3:=spacecurve( [t, 7-t, 0], t=0..4, color=black): display(s1,s2,s3,axes=normal, orientation=

[-90,0],scaling=constrained);m1:=plot3d([x,y,0],x=0..1,y=0..6,color=red):m2:=plot3d([x,t*(7-x),0],
x=1..3,t=0..1,color=red):display(s1,s2,s3,m1,m2,axes=normal,orientation=[-90,0],scaling=
constrained);profit:=plot3d([x, y, 3*x+4*y], x=0..3, y=0..6):display(m1,m2,profit,axes=normal,
orientation=[-90,10],scaling=constrained);
>

2 Aplicao 1

> bubble:=plot3d([x, y, cos((x-1)^2+(y-1)^2)+10 ], x=0..3, y=0..6):display(m1,m2,bubble,axes=

normal);

> profit:=plot3d([x, y, x+y ], x=0..3, y=0..6):wall:=plot3d([x,7-x,z],x=1..3,z=0..8,color=gray):

display(m1,m2,profit,wall,axes=normal,orientation=[-90,10]);

Programao Linear 3
> profit:=plot3d([x,y,3*x+4*y],x=0..3,y=0..6 ):grad:=spacecurve([3*t,4*t, 0],t=0..1.5,color=

black,thickness=3):display(m1,m2,profit,grad,scaling=constrained,view=[0..5,0..5,0..5]);

A curva lucro cresce de forma to abrupta, que este grfico no tem muita utilidade.
> q1:=spacecurve([t,-t,0],t=0..4):q2:=spacecurve([t,-t+2,0],t=0..4): q3:=spacecurve([t, -t+4, 0],

t= 0..4):q4:=spacecurve([t,-t+6,0],t=0..4):q5:=spacecurve([t,-t+7,0],t=0..4,color=black,
thickness=1):display(grad,m1,m2,q1,q2,q3,q4,q5,orientation=[-90,0],scaling=constrained);
>

> m1:=plot3d([x,y,0],x=0..1,y=0..6,color=red,style=patchnogrid):m2:=plot3d([x,t*(7-x),0],x=1..3,

t=0..1,color=red,style=patchnogrid):s1:=spacecurve([1,6,27*t],t=0..1,color=black,thickness=3,
style=patch):display(s1,profit,m1,m2);

4 Aplicao 1

> with(linalg):A:=matrix( [[1,1,1,0,0,7], [1,0,0,1,0,3], [0,1,0,0,1,6] ,[-3,-4,0,0,0,0]]);


Warning, new definition for grad
A := matrix([[1, 1, 1, 0, 0, 7], [1, 0, 0, 1, 0, 3], [0, 1, 0, 0, 1, 6],
[-3, -4, 0, 0, 0, 0]])
> A:= pivot(A,3,2);
A := matrix([[1, 0, 1, 0, -1, 1], [1, 0, 0, 1, 0, 3], [0, 1, 0, 0, 1, 6],
[-3, 0, 0, 0, 4, 24]])
> A:=pivot(A,1,1);
A := matrix([[1, 0, 1, 0, -1, 1], [0, 0, -1, 1, 1, 2], [0, 1, 0, 0, 1, 6],
[0, 0, 3, 0, 1, 27]])

EXEMPLO: Maximize -2x +y com as restries -3x+y < 3, x-3y<4, 4x+7y<40


r 2 -1 1 0 0 4
s -3 1 0 1 0 3
t450016
P -5 3 0 0 0 0

Programao Linear 5
> A:=matrix([[-3,1,1,0,0,3], [1,-3,0,1,0,4], [4,7,0,0,1,40],[2,-3,0,0,0,0] ]);
A := matrix([[-3, 1, 1, 0, 0, 3], [1, -3, 0, 1, 0, 4], [4, 7, 0, 0, 1, 40],
[2, -3, 0, 0, 0, 0]])
> A:=pivot(A,1,2);
A := matrix([[-3, 1, 1, 0, 0, 3], [-8, 0, 3, 1, 0, 13], [25, 0, -7, 0, 1,
19], [-7, 0, 3, 0, 0, 9]])
> A:=pivot(A,3,1);
A := matrix([[0, 1, 4/25, 0, 3/25, 132/25], [0, 0, 19/25, 1, 8/25, 477/25],
[25, 0, -7, 0, 1, 19], [0, 0, 26/25, 0, 7/25, 358/25]])

SUGESTES/RESPOSTAS AO PROJETO
Projeto Parte 1: Maximize P = 2x + 3y sujeito s restries:
3x - y < or = 4
x + y < or = 2
x,y > or = 0.
Ateno para a rotina built-in do Maple:
> with(simplex):
> cnsts := {3*x-y <= 4, x+y <= 2

}:
obj := 2*x+3*y;maximize(obj,cnsts union {x>=0,y>=0,z>=0});
Warning, new definition
Warning, new definition
Warning, new definition
Warning, new definition
Warning, new definition
obj := 2*x+3*y
{y = 2, x = 0, z = z}

for
for
for
for
for

basis
display
maximize
minimize
pivot

> n1:=implicitplot(3*x-y<=4,x=0..10,y=0..10,color=gray):n2:=implicitplot(x+y<=2,x=0..10,y=

0..10,color=red):vectorgrad:=plot([2*t,3*t,t=0..1],color=green):display(n1,n2,vectorgrad,axes=
normal,scaling=constrained,title="STAY ABOVE GRAY, BELOW RED");

6 Aplicao 1

> restart:with(plots):with(linalg):constr1:=evalm(t*[x,3*x-4,0]);
Warning, new definition for norm
Warning, new definition for trace
constr1 := vector([t*x, t*(3*x-4), 0])

Eis a regio possvel:


>
> constr1:=plot3d([t*x, t*(3*x-4), 0],t=0..1,x=3/2..4/3,color=red,style=wireframe):
> constr2:=evalm(t*[x,2-x,0]);
constr2 := vector([t*x, t*(2-x), 0])
> constr2:=plot3d([t*x, t*(2-x), 0],t=0..1,x=0..3/2,color=red,style=wireframe):

grad:=spacecurve([2*t,3*t,0],t=0..0.5,color=green,thickness=3):display(constr1,constr2,grad,
axes=normal,scaling=constrained,orientation=[-90,0]);

Programao Linear 7
> objective:=plot3d(2*x+3*y,x=0..3/2,y=0..2,color=blue,style=wireframe):display(constr1,

constr2,objective,axes=normal,scaling=constrained);
>

Novamente, a funo lucro cresce de forma muito rpida para fornecer uma boa viso.

Aplicao 2
O Modelo Econmico De Leontief
Sugestes/Respostas Ao Projeto
Projeto Parte 1: Resolva o sistema de equaes no Plano de Fundo
> with(linalg):with(plots):
Warning, new definition for norm
Warning, new definition for trace
> E:=matrix([[.4,.3,.1],[.2,.5, .2],[.4,.2,.7]]);
E := matrix([[.4, .3, .1], [.2, .5, .2], [.4, .2, .7]])
> Id:=matrix([[1,0,0],[0,1,0],[0,0,1]]);
Id := matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
> evalm(Id-E);
matrix([[.6, -.3, -.1], [-.2, .5, -.2], [-.4, -.2, .3]])
> rref(%);
matrix([[1, 0, -.4583333334], [0, 1, -.5833333333], [0, 0, 0]])
> soln:=[.458*t,.583*t, t];
soln := [1000.000000, 1272.925764, 2183.406114]

Os preos so [p1, p2,p3] = [0,458t, 0,583t, t]


Projeto Parte 2: As colunas somam zero, j que as colunas de E somam 1 (a matriz estocstica.)
Projeto Parte 3: Se p1 = 1000, ento
> t:=1000/.458;
>
t := 2183.406114
> simplify(soln);
[1000., 1272.925764, 2183.406114]

Os preos so [p1, p2,p3] = [1000, 1272,92, 2183,40]


Projeto Parte 4: Com E =

calcule P quando D = [100, 100, 150].

> with(linalg):E:=matrix([[.4,.3,.1],[.2,.5, .2],[.3,.1,.6]]);

O Modelo Econmico De Leontief 9


> Id:=matrix([[1,0,0],[0,1,0],[0,0,1]]):DD:=matrix([[100],[100],[150]]);
E := matrix([[.4, .3, .1], [.2, .5, .2], [.3, .1, .6]])
DD := matrix([[100], [100], [150]])
> temp:= evalm(Id-E);
temp := matrix([[.6, -.3, -.1], [-.2, .5, -.2], [-.3, -.1, .4]])
> P:=evalm(temp&*DD);
P := matrix([[15.0], [0], [20.0]])

O vetor de sada [15,0,20] sem eletricidade! Embora esta seja sua resposta, o cenrio
auspicioso, mas no realista!

Aplicao 3
Vislumbres Do Espao 4-D
Vises da Esfera
Erro no texto: Na Parte 1 do Projeto aplicamos a matriz de projeo P a uma esfera
tridimensional. Fixamos um ponto de vista para a projeo da esfera.
E permitimos algum ngulo da esfera (em coordenadas esfricas) variar.
Desta forma, obtemos rotaes da esfera como vista de um plano particular.
> restart:with(plots):Q:=matrix([[cos(t),-sin(t),0],[cos(f)*sin(t),cos(f)*cos(t),-sin(f)]]):
> t:=Pi/4;f:=Pi/4;Q:=matrix([[-cos(t),sin(t),0],[-cos(f)*sin(t),-cos(f)*cos(t),sin(f)]]):sph:=[sin(v)*

cos(u),sin(v)*sin(u),cos(v)]:
t := 1/4*Pi
f := 1/4*Pi
> evalm(Q&*sph);
vector([-1/2*2^(1/2)*sin(v)*cos(u)+1/2*2^(1/2)*sin(v)*sin(u),
-1/2*sin(v)*cos(u)-1/2*sin(v)*sin(u)+1/2*2^(1/2)*cos(v)])
> animate([-1/2*2^(1/2)*sin(v)*cos(u)+1/2*2^(1/2)*sin(v)*sin(u), -1/2*sin(v)*cos(u)-1/2*sin(v)*

sin(u)+1/2*2^(1/2)*cos(v),v=0..2*Pi],u=0..2*Pi,scaling=constrained,color=black,title="ANIMA
TE ME");

> m1:=plot([-1/2*2^(1/2)*sin(v)*cos(Pi/6)+1/2*2^(1/2)*sin(v)*sin(Pi/6), -1/2*sin(v)*cos(Pi/6)-

1/2*sin(v)*sin(Pi/6)+1/2*2^(1/2)*cos(v),v=0..2*Pi],scaling=constrained,color=black):m2:=
plot([-1/2*2^(1/2)*sin(v)*cos(Pi/2)+1/2*2^(1/2)*sin(v)*sin(Pi/2), -1/2*sin(v)*cos(Pi/2)-1/2*
sin(v)*sin(Pi/2)+1/2*2^(1/2)*cos(v),v=0..2*Pi],scaling=constrained,color=black):display(m1,m2,
title="STILL FRAME");

Vislumbres Do Espao 4-D 11

> Q:=matrix([[cos(t),-sin(t),0],[cos(f)*sin(t),cos(f)*cos(t),-sin(f)]]):
> t:=Pi/2;f:=Pi/2;Q:=matrix([[-cos(t),sin(t),0],[-cos(f)*sin(t),-cos(f)*cos(t),sin(f)]]):sph:=[sin(v)*

cos(u),sin(v)*sin(u),cos(v)]:
t := 1/2*Pi
f := 1/2*Pi
> evalm(Q&*sph);
vector([sin(v)*sin(u), cos(v)])
> animate([sin(v)*sin(u), cos(v),v=0..2*Pi],u=0..2*Pi,scaling=constrained,title="ANIMATE ME");

12 Aplicao 3
> m1:=plot([sin(v)*sin(Pi/4), cos(v),v=0..2*Pi], scaling=constrained,color=black):m2:=plot([

sin(v)*sin(Pi/6), cos(v),v=0..2*Pi], scaling=constrained,color=black):m3:=plot([sin(v)*sin(Pi/2),


cos(v),v=0..2*Pi], scaling=constrained,color=black):display(m1,m2,m3,title="STILL FRAME");

> Q:=matrix([[cos(t),-sin(t),0],[cos(f)*sin(t),cos(f)*cos(t),-sin(f)]]):
> t:=Pi/2;f:=0;Q:=matrix([[-cos(t),sin(t),0],[-cos(f)*sin(t),-cos(f)*cos(t),sin(f)]]):sph:=[sin(v)*
cos(u),sin(v)*sin(u),cos(v)]:
t := 1/2*Pi
f := 0
> evalm(Q&*sph);
vector([sin(v)*sin(u), -sin(v)*cos(u)])
> animate([sin(v)*sin(u), -sin(v)*cos(u),v=0..2*Pi],u=0..2*Pi,scaling=constrained,color=blue,

title="ANIMATE ME");

RESULTADOS SURPREENDENTES APARECEM


QUANDO ESTAS IMAGENS SO ANIMADAS!
Usando uma varivel diferente para a animao: voc reconhece estas vistas?

Vislumbres Do Espao 4-D 13


> animate([sin(v)*sin(u), -sin(v)*cos(u),u=0..2*Pi],v=0..2*Pi,scaling=constrained,

color=blue,title="ANIMATE ME");

> m1:=plot([sin(Pi/2)*sin(u), -sin(Pi/2)*cos(u),u=0..2*Pi],scaling=constrained, color=blue):m2:

=plot([sin(Pi/6)*sin(u), -sin(Pi/6)*cos(u),u=0..2*Pi],scaling=constrained, color=blue):display(m1,


m2,title="STILL FRAME");

Mais vistas: uma rotao de uma esfera em 4-D mas somente para diverso!
> restart:with(linalg):sphere:=[sin(u)*sin(v)*cos(w),sin(u)*sin(v)*sin(w),sin(u)*cos(v),cos(u)]:t:

=Pi/2;f:=Pi/6;p:=0;
Warning, new definition for norm
Warning, new definition for trace
t := 1/2*Pi
f := 1/6*Pi
p := 0

14 Aplicao 3
Definindo matrizes de rotao em relao a t, f, p:
> rot_t:=matrix([[cos(t),-sin(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]):
> rot_f:=matrix([[1,0,0,0],[0,cos(f),-sin(f),0],[0,sin(f),cos(f),0],[0,0,0,1]]):
> rot_p:=matrix([[1,0,0,0],[0,1,0,0],[0,0,cos(p),-sin(p)],[0,0,sin(p),cos(p)]]):
> pft:=evalm(rot_p&*rot_f&*rot_t);
pft := matrix([[0, -1, 0, 0], [1/2*3^(1/2), 0, -1/2, 0], [1/2, 0,
1/2*3^(1/2), 0], [0, 0, 0, 1]])
> proj:=matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]]):
> M:=evalm(proj&*pft);
M := matrix([[0, -1, 0, 0], [1/2*3^(1/2), 0, -1/2, 0], [1/2, 0,
1/2*3^(1/2), 0], [0, 0, 0, 0]])
> evalm(M&*sphere);
>
vector([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)1/2*sin(u)*cos(v), 1/2*sin(u)*sin(v)*cos(w)+1/2*3^(1/2)*sin(u)*cos(v), 0])
>
> animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-1/2*sin(u)*cos(v), 1/2*sin(u)*

sin(v)*cos(w)+1/2*3^(1/2)*sin(u)*cos(v)], u=0..2*Pi,v=0..2*Pi,w=0..2*Pi,title="ANIMATE ME");

> animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-1/2*sin(u)*cos(v), 1/2*sin(u)

*sin(v)*cos(w)+1/2*3^(1/2)*sin(u)*cos(v)], w=0..2*Pi,v=0..2*Pi,u=0..2*Pi,title="ANIMATE ME");

Vislumbres Do Espao 4-D 15

> animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-1/2*sin(u)*cos(v), 1/2*

sin(u)*sin(v)*cos(w)+1/2*3^(1/2)*sin(u)*cos(v)], u=0..2*Pi,w=0..2*Pi,v=0..2*Pi,title="ANIMATE
ME");

> plot3d([-sin(u)*sin(Pi/4)*sin(w), 1/2*3^(1/2)*sin(u)*sin(Pi/4)*cos(w)-1/2*sin(u)*cos(Pi/4),

1/2*sin(u)*sin(Pi/4)*cos(w)+1/2*3^(1/2)*sin(u)*cos(Pi/4)], u=0..2*Pi,w=0..2*Pi,title="STILL
FRAME");

16 Aplicao 3

Um novo conjunto de ngulos:


> t:=Pi/2;f:=Pi/6;p:=Pi/3;
t := 1/2*Pi
f := 1/6*Pi
p := 1/3*Pi
> rot_t:=matrix([[cos(t),-sin(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]):
> rot_f:=matrix([[1,0,0,0],[0,cos(f),-sin(f),0],[0,sin(f),cos(f),0],[0,0,0,1]]):
> rot_p:=matrix([[1,0,0,0],[0,1,0,0],[0,0,cos(p),-sin(p)],[0,0,sin(p),cos(p)]]):
> pft:=evalm(rot_p&*rot_f&*rot_t);
pft := matrix([[0, -1, 0, 0], [1/2*3^(1/2), 0, -1/2, 0], [1/4, 0,
1/4*3^(1/2), -1/2*3^(1/2)], [1/4*3^(1/2), 0, 3/4, 1/2]])
> proj:=matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]]):
> M:=evalm(proj&*pft);
M := matrix([[0, -1, 0, 0], [1/2*3^(1/2), 0, -1/2, 0], [1/4, 0,
1/4*3^(1/2), -1/2*3^(1/2)], [0, 0, 0, 0]])
> evalm(M&*sphere);
>
vector([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)1/2*sin(u)*cos(v), 1/4*sin(u)*sin(v)*cos(w)+1/4*3^(1/2)*sin(u)*cos(v)1/2*3^(1/2)*cos(u), 0])
>
> with(plots):animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-

1/2*sin(u)*cos(v), 1/4*sin(u)*sin(v)*cos(w)+1/4*3^(1/2)*sin(u)*cos(v)-1/2*3^(1/2)*cos(u)],w=
0..2*Pi,u=0..2*Pi,v=0..2*Pi,title="ANIMATE ME");

Vislumbres Do Espao 4-D 17

> plot3d([-sin(u)*sin(Pi/4)*sin(w), 1/2*3^(1/2)*sin(u)*sin(Pi/4)*cos(w)-1/2*sin(u)*cos(Pi/4),

1/4*sin(u)*sin(Pi/4)*cos(w)+1/4*3^(1/2)*sin(u)*cos(Pi/4)-1/2*3^(1/2)*cos(u)],w=0..2*Pi,u=0..2*Pi,
title="STILL FRAME");

> animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-1/2*sin(u)*cos(v), 1/4*

sin(u)*sin(v)*cos(w)+1/4*3^(1/2)*sin(u)*cos(v)-1/2*3^(1/2)*cos(u)],u=0..2*Pi,v=0..2*Pi,w=0..2*Pi,
title="ANIMATE ME");

18 Aplicao 3

> animate3d([-sin(u)*sin(v)*sin(w), 1/2*3^(1/2)*sin(u)*sin(v)*cos(w)-1/2*sin(u)*cos(v), 1/4*

sin(u)*sin(v)*cos(w)+1/4*3^(1/2)*sin(u)*cos(v)-1/2*3^(1/2)*cos(u)],v=0..2*Pi,w=0..2*Pi,u=0..2*Pi,
axes=normal,title="ANIMATE ME");

Um novo conjunto de ngulos:


> with(linalg):with(plots):t:=Pi/2;f:=Pi/2;p:=Pi/4;
t := 1/2*Pi
f := 1/2*Pi
p := 1/4*Pi
> rot_t:=matrix([[cos(t),-sin(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]):
> rot_f:=matrix([[1,0,0,0],[0,cos(f),-sin(f),0],[0,sin(f),cos(f),0],[0,0,0,1]]):
> rot_p:=matrix([[1,0,0,0],[0,1,0,0],[0,0,cos(p),-sin(p)],[0,0,sin(p),cos(p)]]):

Vislumbres Do Espao 4-D 19


> pft:=evalm(rot_p&*rot_f&*rot_t);
pft := matrix([[0, -1, 0, 0], [0, 0, -1, 0], [1/2*2^(1/2), 0, 0,
-1/2*2^(1/2)], [1/2*2^(1/2), 0, 0, 1/2*2^(1/2)]])
> proj:=matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]]):
> M:=evalm(proj&*pft);
M := matrix([[0, -1, 0, 0], [0, 0, -1, 0], [1/2*2^(1/2), 0, 0,
-1/2*2^(1/2)], [0, 0, 0, 0]])
> sphere:=[sin(u)*sin(v)*cos(w),sin(u)*sin(v)*sin(w),sin(u)*cos(v),cos(u)]:
> evalm(M&*sphere);
vector([-sin(u)*sin(v)*sin(w), -sin(u)*cos(v),
1/2*2^(1/2)*sin(u)*sin(v)*cos(w)-1/2*2^(1/2)*cos(u), 0])
>
> M:=evalm(proj&*pft);
M := matrix([[0, -1, 0, 0], [0, 0, -1, 0], [1/2*2^(1/2), 0, 0,
-1/2*2^(1/2)], [0, 0, 0, 0]])
> evalm(M&*sphere);
>
vector([-sin(u)*sin(v)*sin(w), -sin(u)*cos(v),
1/2*2^(1/2)*sin(u)*sin(v)*cos(w)-1/2*2^(1/2)*cos(u), 0])
> animate3d([-sin(u)*sin(v)*sin(w), -sin(u)*cos(v), 1/2*2^(1/2)*sin(u)*sin(v)*cos(w)-

1/2*2^(1/2)*cos(u)],u=0..2*Pi,v=0..Pi,w=0..Pi,axes=normal,title="ANIMATE ME");

> animate3d([-sin(u)*sin(v)*sin(w), -sin(u)*cos(v), 1/2*2^(1/2)*sin(u)*sin(v)*cos(w)-1/2*

2^(1/2)*cos(u)],u=0..2*Pi,w=0..2*Pi,v=0..2*Pi,axes=normal,title="ANIMATE ME");

20 Aplicao 3

> plot3d([-sin(u)*sin(Pi/4)*sin(w), -sin(u)*cos(Pi/4), 1/2*2^(1/2)*sin(u)*sin(Pi/4)*cos(w)-1/2*

2^(1/2)*cos(u)],u=0..2*Pi,w=0..2*Pi,axes=normal, title="STILL FRAME");

Vistas da Garrafa de Klein


> Klein:=[cos(u)*(5+2* cos(v)), sin(u)*(5+2* sin(v)), 2* sin(v)*cos(u/2), 2* sin(v)*(sin(u/2))^2];
Klein := [cos(u)*(5+2*cos(v)), sin(u)*(5+2*sin(v)), 2*sin(v)*cos(1/2*u),
2*sin(v)*sin(1/2*u)^2]
> with(linalg):with(plots):t:=0;f:=Pi/2;p:=0;
t := 0
f := 1/2*Pi
p := 0

Vislumbres Do Espao 4-D 21


> rot_t:=matrix([[cos(t),-sin(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]):
> rot_f:=matrix([[1,0,0,0],[0,cos(f),-sin(f),0],[0,sin(f),cos(f),0],[0,0,0,1]]):
> rot_p:=matrix([[1,0,0,0],[0,1,0,0],[0,0,cos(p),-sin(p)],[0,0,sin(p),cos(p)]]):
> pft:=evalm(rot_p&*rot_f&*rot_t);
pft := matrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 1]])
> proj:=matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]]):
> M:=evalm(proj&*pft);
M := matrix([[1, 0, 0, 0], [0, 0, -1, 0], [0, 1, 0, 0], [0, 0, 0, 0]])
>
> evalm(M&*Klein);
vector([cos(u)*(5+2*cos(v)), -2*sin(v)*cos(1/2*u), sin(u)*(5+2*sin(v)), 0])
> plot3d([cos(u)*(5+2*cos(v)), -2*sin(v)*cos(1/2*u), sin(u)*(5+2*sin(v))],u=0..2*Pi,v=0..2*Pi,

title="STILL FRAME");

Aplicao 4
O Mtodo dos Mnimos Quadrados
PLANO DE FUNDO: Estas ilustraes foram usadas no Plano de Fundo deste Projeto.
Resolva

> with(linalg):with(plots):
Warning, new definition for norm
Warning, new definition for trace
> A:=matrix( [[1,2], [1,4], [1, 2.5], [1,5] ]);
A := matrix([[1, 2], [1, 4], [1, 2.5], [1, 5]])
> At:=transpose(A);
At := matrix([[1, 1, 1, 1], [2, 4, 2.5, 5]])
> evalm(inverse(At&*A)&*At&*[3,5,3.5,6]);
vector([1.000000001, .9999999989])
> line:=plot( [x,x+1,x=0..5],color=black):point1:=plot([.1*cos(t)+2,.1*sin(t)+3,t=0..2*Pi],color=

red):point2:=plot([.1*cos(t)+4,.1*sin(t)+5,t=0..2*Pi],color=green):point3:=plot([.1*cos(t)+2.5,.1*
sin(t)+3.5,t=0..2*Pi],color=blue):point4:=plot([.1*cos(t)+5,.1*sin(t)+6,t=0..2*Pi],color=brown):
display(line,point1,point2,point3,point4,scaling=constrained);

O Mtodo dos Mnimos Quadrados 23

Usando o pacote estatstico nos dados que se seguem:


xy
15
2 17
0 -4
31
44
> with(stats):

este exemplo usa os padres para ajustar os dados curva y=a*x+b


> fit[leastsquare[[x,y]]]([[1,2,0,3,4],[5,17,-4,1,4]]);evalf(11/5+6/5*x);
y = 11/5+6/5*x
2.200000000+1.200000000*x
> with(linalg):with(plots):
> A:=matrix( [[1,1], [1,2], [1, 0], [1,3], [1,4] ]);
A := matrix([[1, 1], [1, 2], [1, 0], [1, 3], [1, 4]])
> At:=transpose(A);
At := matrix([[1, 1, 1, 1, 1], [1, 2, 0, 3, 4]])
> evalm(inverse(At&*A)&*At&*[5,17, -4,1,4]);
vector([11/5, 6/5])
>
> line:=plot( [x,11/5*x+6/5,x=0..5],color=black):point1:=plot([.1*cos(t)+1,.1*sin(t)+5,t=

0..2*Pi],color=black,thickness=3):point2:=plot([.1*cos(t)+2,.1*sin(t)+17,t=0..2*Pi],color=
black,thickness=3):point3:=plot([.1*cos(t)+0,.1*sin(t)-4,t=0..2*Pi],color=black,thickness=3):
point4:=plot([.1*cos(t)+3,.1*sin(t)+1,t=0..2*Pi],color=black,thickness=3):point5:=plot([.1*
cos(t)+4,.1*sin(t)+4,t=0..2*Pi],color=black,thickness=3):display(line,point1,point2,point3,
point4,point5,scaling=constrained);

24 Aplicao 4

Encontrando o coeficiente de correlao a partir dos dados,


xy
15
2 17
0 -4
31
44
> rho:=dotprod( [1,2,0,3,4],[5,17,-4,1,4])/(norm([1,2,0,3,4],2)*norm([5,17,-4,1,4],2));
rho := 29/5205*30^(1/2)*347^(1/2)
> evalf(rho);
.5684635576

xyz
124
2 3 -1
359
618
4 7 12
> A:=matrix( [[1,1,2],[1,2,3],[1,3,5],[1,6,1],[1,4,7]]);At:=transpose(A);
A := matrix([[1, 1, 2], [1, 2, 3], [1, 3, 5], [1, 6, 1], [1, 4, 7]])
At := matrix([[1, 1, 1, 1, 1], [1, 2, 3, 6, 4], [2, 3, 5, 1, 7]])
> evalm(inverse(At&*A)&*At&*[4,-1,9,8,12]);
vector([-722/245, 386/245, 293/245])

O Mtodo dos Mnimos Quadrados 25


> with(stats):

este exemplo usa os padres para ajustar os dados curva y=a*x+b


> fit[leastsquare[[x,y,z]]]([[1,2,3,6,4],[2,3,5,1,7],[4,-1,9,8,12]]);
z = -722/245+386/245*x+293/245*y
> planeplot:=plot3d(-722/245+386/245*x+293/245*y,x=0..5,y=0..8,color=green):
> point1:=plot3d([.1*sin(f)*cos(t)+1,.1*sin(f)*sin(t)+2,.1*cos(f)+4],t=0..2*Pi,f=

0..Pi,color=red,thickness=3):
> point2:=plot3d([.1*sin(f)*cos(t)+2,.1*sin(f)*sin(t)+3,.1*cos(f)-1],t=0..2*Pi,f=0..Pi,color=

red ):point3:=plot3d([.1*sin(f)*cos(t)+3,.1*sin(f)*sin(t)+5,.1*cos(f)+9],t=0..2*Pi,f=0..Pi,color=red ):
point4:=plot3d([.1*sin(f)*cos(t)+6,.1*sin(f)*sin(t)+1,.1*cos(f)+8],t=0..2*Pi,f=0..Pi,color=red ):
point5:=plot3d([.1*sin(f)*cos(t)+4,.1*sin(f)*sin(t)+7,.1*cos(f)+11],t=0..2*Pi,f=0..Pi,color=red):
display(planeplot,point1,point2,point3,point4,point5,axes=normal);

Sugestes/Respostas ao Projeto
Projeto Parte 1: Para a tabela de pontos direita encontre a melhor aproximao por regresso
linear, utilizando os mtodos ilustrados na Demonstrao. Trace um grfico de sua linha resultante, juntamente com os pontos. Encontre o coeficiente de correlao. Quando um ponto de dados
muito incomum, ele pode ser chamado de valor discrepante. Voc v alguns bvios valores
discrepantes aqui?
> with(linalg):with(plots):
> A:=matrix([[1,1],[1,2],[1,0],[1,-1],[1,-3]]);
A := matrix([[1, 1], [1, 2], [1, 0], [1, -1], [1, -3]])
> A := matrix([[1, 1], [1, 2], [1, 0], [1, -1], [1, -3]]);
A := matrix([[1, 1], [1, 2], [1, 0], [1, -1], [1, -3]])
> At:=transpose(A);
At := matrix([[1, 1, 1, 1, 1], [1, 2, 0, -1, -3]])

26 Aplicao 4
> evalm(inverse(At&*A)&*At&*[-1,1,2.5,3,20]);
vector([4.331081081, -3.844594595])
> line:=plot([x,4.331081081-3.844594595*x,x=-5..5],color=black):
> display(line,scaling=constrained);

Encontraremos agora o coeficiente de correlao, rho.


> rho:=dotprod([1,2,0,-1,-3],[-1,1,2.5,3,20])/((norm([1,2,0,-1,-3],2)*norm([-1,1,2.5,3,20],2)));
rho := -.2023495569*15^(1/2)
> evalf(rho);
-.7836964639

Projeto Parte 2: Para a tabela de pontos que representam [x,y,z], encontre a melhor aproximao
por ajuste linear (plano), utilizando os mtodos ilustrados na Demonstrao. Trace um grfico de
seu plano resultante. Ou inclua no grfico os pontos como na demonstrao anterior, ou coloque-os
em sua impresso Maple com lpis ou caneta.
> with(stats):with(linalg):with(plots):
> B:=matrix([[1,0,2],[1,1,3],[1,2,5],[1,3,1],[1,4,7]]);
B := matrix([[1, 0, 2], [1, 1, 3], [1, 2, 5], [1, 3, 1], [1, 4, 7]])

Esta matriz representa a tabela de pontos coincidentes com [x,y,z]. Com esta matriz, bem como as suas
transposta e inversa, vamos tentar encontrar a melhor aproximao por ajuste linear.
> Bt:=transpose(B);
Bt := matrix([[1, 1, 1, 1, 1], [0, 1, 2, 3, 4], [2, 3, 5, 1, 7]])
> evalm(inverse(Bt&*B)&*Bt&*[1,-1,4,4,1]);
vector([164/105, 169/210, -8/21])

O Mtodo dos Mnimos Quadrados 27

Este o vetor resultante, que ser representado graficamente como um plano, que mostra a melhor
aproximao por ajuste linear para os pontos de dados.
> planeplot:=plot3d(164/105+(169/210)*x+(-8/21)*y,x=0..5,y=0..8,color=yellow):
> display(planeplot);

Os pontos so desenhados mo.


Projeto Parte 3: possvel encontrar a parbola que melhor se ajusta atravs dos pontos, se voc
pensa que esta ser dada por:
y = a + b x + c x2. Encontre a parbola que melhor se ajusta atravs dos pontos: [1,3], [2,3], [0,4],
[-1,4], [-3,10]

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

Mais uma vez estamos usando os pontos dados e colocando-os em uma matriz. Vamos agora tentar
encontrar a parbola que melhor se ajusta atravs dos pontos de dados da matriz, a sua transposta e a sua
inversa.
> Ct:=transpose(C);
Ct := matrix([[1, 1, 1, 1, 1], [1, 2, 0, -1, -3], [1, 4, 0, 1, 9]])
> evalm(inverse(Ct&*C)&*Ct&*[3,3,4,4,10]);
vector([2293/679, -1247/1358, 561/1358])

Depois de avaliar, obtemos esse vetor, que ser desenhado como a parbola que melhor se ajusta atravs
dos pontos.
> parabola:=plot(2293/679-(1247/1358)*x+(561/1358)*x^2,x=-5..5,color=red):
> display(parabola);

28 Aplicao 4

Eis nossa parbola resultante. Os pontos sero desenhados mo.


Respostas para a parte terica.
# 1.) No mtodo dos mnimos quadrados, encontramos r, a soluo para r = (A^T A)^-1 A^T b.
Explique por que usamos a teoria A para ser a matriz com 1 em toda a primeira coluna, e x em
toda a segunda.
# 2.) Explicar por que A^T A inversvel. Voc pode (entre outros mtodos) mostrar que tem o
mesmo posto que A tendo o mesmo ncleo. Quando ser o posto de A menor que o nmero de
linhas ou seja, que dados de informao podem fazer que seja esse o caso?
> restart:with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> E:=matrix([[1,2,3],[4,5,6],[7,8,9]]);
E := matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
> F:=transpose(E);
F := matrix([[1, 4, 7], [2, 5, 8], [3, 6, 9]])
> kernel(E);
{vector([1, -2, 1])}
> kernel(F);
{vector([1, -2, 1])}
> kernel(E&transpose(F));
{}

Aplicao 5
Sequncias De Fibonacci (Uma Relao De Recorrncia)
PLANO DE FUNDO: Estas ilustraes foram usadas no Plano de Fundo deste Projeto.
Resolva
> with(plots):with(linalg):
Warning, the name changecoords has been redefined
> restart:v := array(1..40):

v[1]:=1: v[2]:=1:for i from 1 to 38 do v[i+2]:= v[i]+v[i+1] end do:


print(v);
fib:={1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,
17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309,
3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155};
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711,
28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578,
5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155]
fib 5 {1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,
17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309,
3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155}
> fib[39];Digits:=20:for i from 1 to 38 do num=evalf(fib[i+1]/fib[i]); end do;

30 Aplicao 5

Sequncias De Fibonacci (Uma Relao De Recorrncia) 31

Calculando a mdia urea para demonstrar que ela o fim da sequncia.


>
> (1+sqrt(5))/2;

> evalf(%);

Warning, the name changecoords has been redefined

Sugestes/Respostas ao Projeto
Projeto Parte 1: Encontre os autovetores e os autovalores da matriz A =. Faa isso mo, em primeiro lugar encontrando as razes da equao caracterstica. Agora use o Maple para encontrar
os autovetores e autovalores. Voc pode tentar o comando evalf no Maple para certificar-se de que
os resultados do Maple so os mesmos que os calculados mo. Diagonalize A para encontrar o
k-simo termo da sequncia de Fibonacci, seguindo o processo descrito no plano de fundo. (Se
voc no pode usar o Maple para encontrar o k-simo termo, encontre alguns termos grandes e
generalize.) Qual a inclinao do autovetor com o maior autovalor? D uma outra explicao
para a relao f(k +1)/f(k) se aproximar da relao urea. Encontre o e-nsimo termo da sequncia
de Fibonacci.
> restart:with(linalg):A:=matrix([[1,1],[1,0]]): eigenvectors(A);evalf(%);
Warning, new definition for norm
Warning, new definition for trace
[1/2+1/2*5^(1/2), 1, {vector([1/2+1/2*5^(1/2), 1])}] [1/2-1/2*5^(1/2), 1,
{vector([1/2-1/2*5^(1/2), 1])}]
[1.618033989, 1., {vector([1.618033989, 1.])}] [-.6180339890, 1.,
{vector([-.6180339890, 1.])}]
> J := jordan(A, P): print(P);P:=evalf(matrix([[-1/10*5^(1/2)+1/2, 1/10*5^(1/2)+1/2],

[-1/5*5^(1/2), 1/5*5^(1/2)]]));J:=matrix([[r1,0],[0,r2]]);
matrix([[1/10*5^(1/2)+1/2, -1/10*5^(1/2)+1/2], [1/5*5^(1/2),
-1/5*5^(1/2)]])
P := matrix([[.2763932022, .7236067978], [-.4472135956, .4472135956]])
J := matrix([[r1, 0], [0, r2]])

Temos r1 = (1+sqrt(5))/2 e r2 = (1-sqrt(5))/2. Usamos 50 para k.

32 Aplicao 5
> simplify(evalm(P&*J^50&*inverse(P)&*[1,0]));
vector([.2763932022*r1^50+.7236067978*r2^50,
-.4472135956*r1^50+.4472135956*r2^50])

Ento, fk a segunda componente deste vetor, ou seja,


fk = ((1+sqrt(5))/2) ^k (1/sqrt(5) - ((1-sqrt(5))/2) ^k (1/sqrt(5)).
A inclinao do autovetor x/y se compara com f(k +1)/f(k), que a inclinao do primeiro autovetor. Como ns escrevemos potncias sucessivas de A, o maior autovalor domina, e como estes
autovetores formam uma base, os vetores [f (k +1), f (k)] comeam a abraar o autovetor como
uma assntota. Assim, a inclinao f(k)/f(k +1) a de um autovetor.
>
slope := .6180469716
>

Ento, fk a segunda componente deste vetor, ou seja,


fk = ((1+sqrt(5))/2) ^k (1/sqrt(5) - ((1-sqrt(5))/2) ^k (1/sqrt(5)).
Projeto Parte 2: A mesma coisa com a sequncia de Lucas.
>
> simplify(evalm(P&*J^50&*inverse(P)&*[1,0]));
vector([1/10*5^(1/2)*r1^50+1/2*r1^50-1/10*5^(1/2)*r2^50+1/2*r2^50,
1/5*5^(1/2)*r1^50-1/5*5^(1/2)*r2^50])

O segundo termo representa o 50o termo da Sequncia de Lucas. O k-simo termo encontrado
de forma anloga.
Projeto Parte 3: Quando tentamos isso com a relao de recorrncia dada por dn = 2 d(n-1) - d(n-2),
os autovetores no formam uma base e esse procedimento no funciona.
> with(linalg):A:=matrix([[2,-1],[1,0]]);
A := matrix([[2, -1], [1, 0]])
> J:=jordan(A,'P'):print(J);print(P);
matrix([[1, 1], [0, 1]])
matrix([[1, 1], [1, 0]])
> eigenvalues(A);eigenvectors(A);
1/2+1/2*5^(1/2) 1/2-1/2*5^(1/2)
[1/2+1/2*5^(1/2), 1, {vector([1/2+1/2*5^(1/2), 1])}] [1/2-1/2*5^(1/2), 1,
{vector([1/2-1/2*5^(1/2), 1])}]

O autovetor [1,1] tem multiplicidade 2 e no pode formar uma base. De fato, a soluo d(n) =
(1.5)n.

Aplicao 6
Modelos Populacionais e Processos de Markov
PLANO DE FUNDO: Este trabalho foi utilizado na explicao do Plano de Fundo deste Projeto.
> with(linalg):with(plots):
Warning, the protected names norm and trace have been redefined and unprotected
> A:=matrix([[.5,.6,.2],[.4,0,0],[0,.2,0]]);

> evalm(A&*A);

> A3:=evalm(A&*A&*A);

> evalm(A3&*A3);

34 Aplicao 6

Sugestes/Respostas ao Projeto
Projeto Parte 1: Para as matrizes dadas, determine a estabilidade.
(1.) A:=matrix([[.6,.6,.1],[.8,0,0],[0,.3,0]]);
(2.) B:=matrix([[.2,.59,.1],[.7,0,0],[0,.3,0]]);
(3.) C:=matrix([[.559,.6,.1],[.7,0,0],[0,.3,0]]);
> with(linalg):
> A:=matrix([[.6,.6,.1],[.8,0,0],[0,.3,0]]);

B:=matrix([[.2,.59,.1],[.7,0,0],[0,.3,0]]);
C:=matrix([[.559,.6,.1],[.7,0,0],[0,.3,0]]);

>
> eigenvectors(A);

[2.05396817524, 1, {[2.0161833862, .2398952451, 21.333537274]}], [1.069698787, 1,


{[.789753448, .5906361356, .1656455473]}], [2.4157306123, 1, {[.3887292694, 2.7480406953,
.5398019825]}]
O maior valor absoluto de autovetor maior que 1. Instvel.
> eigenvectors(B);

[2.05253505993, 1, {[.0156820608, [2.2089546002, 1.193229438]}], [.7709973544, 1,


{[.7162777848, .6503192875, .2530433930]}], [2.5184622926, 1, {[2.5397965417, .7288043584,
2.4217111075]}]
O maior valor absoluto de autovetor menor que 1. Estvel.

Modelos Populacionais e Processos de Markov 35


> eigenvectors(C);

[2.0543065884, 1, {[.01385940719, 2.1786447135, .9868676263]}], [1.000000001,


1,{[.807371037, .5651597251, .1695479176]}], [2.3866934102, 1, {[.5517117915, 2.9987195102,
.7748149940]}]
O maior valor absoluto de autovetor igual a 1. Estabilidade neutra.
Projeto Parte 2: Usando a matriz de transio (detalhes no texto).
restart:with(plots):with(linalg):
Warning, the name changecoords has been redefined
Warning, the protected names norm and trace have been redefined and unprotected
> restart:with(linalg):A:=matrix([[.86, .08],[-.12,1.14]]);
Warning, new definition for norm
Warning, new definition for trace
A := matrix([[.86, .8e-1], [-.12, 1.14]])
> eigenvectors(A);
[.9000000000, 1, {vector([-.8944271910, -.4472135955])}] [1.100000000, 1,
{vector([-.4472135955, -1.341640787])}]
> eig1:=[-.4472135955, -1.341640786];eig2:=[.8944271910, .4472135955];
eig1 := [-.4472135955, -1.341640786]
eig2 := [.8944271910, .4472135955]
> origvec:=[1000,1000];
origvec := [1000, 1000]
>
> origvec:=evalm(c1*eig1+c2*eig2);
origvec := vector([-.4472135955*c1+.8944271910*c2, -1.341640786*c1+
.4472135955*c2])
> B:=matrix([[-.4472135955,.8944271910,1000], [-1.341640786,.4472135955,1000]]);
B := matrix([[-.4472135955, .8944271910, 1000], [-1.341640786, .4472135955,
1000]])
> rref(B);
matrix([[1, 0, -447.2135957], [0, 1, 894.4271909]])
> c1:=-447.2135957;c2:=894.4271909;check:=evalm(c1*eig1+c2*eig2);
c1 := -447.2135957
c2 := 894.4271909
check := vector([1000.000000, 1000.000000])

36 Aplicao 6
> result_of_many_A_applications:=evalm((1.1)^t*c1*eig1+(.9)^t*c2*eig2);
result_of_many_A_applications := vector([200.0000001*1.1^t+799.9999999*.9^t,
600.0000000*1.1^t+400.0000000*.9^t])
> restart:with(linalg):with(plots):eig1:=[-.4472135955, -1.341640786];eig2:=[.8944271910,

.4472135955];origvec2:=[600,200];origvec:=evalm(c1*eig1+c2*eig2);
Warning, new definition for norm
Warning, new definition for trace
eig1 := [-.4472135955, -1.341640786]
eig2 := [.8944271910, .4472135955]
origvec2 := [600, 200]
origvec := vector([-.4472135955*c1+.8944271910*c2, -1.341640786*c1+
.4472135955*c2])
> B:=matrix([[-.4472135955,.8944271910,600], [-1.341640786,.4472135955,200]]);
B := matrix([[-.4472135955, .8944271910, 600], [-1.341640786, .4472135955,
200]])
> rref(B);
matrix([[1, 0, 89.4427192], [0, 1, 715.5417529]])
> c1:=89.4427;c2:=715.54;check:=evalm(c1*eig1+c2*eig2);
c1 := 89.4427
c2 := 715.54
check := vector([599.9984407, 199.9992418])
> result_of_many_A_applications:=evalm((1.1)^t*c1*eig1+(.9)^t*c2*eig2);
>
>
result_of_many_A_applications := vector([39.99999146*1.1^t+639.9984322*.9^t, -119.9999743*1.1^t+319.9992161*.9^t])
> with(plots):m2:=plot([t*.3162277661, t*.9486832979,t=0..2000],color=blue,thickness=3):

m3:=plot([t*.8944271910, t*.4472135955,t=0..2000],color=blue,thickness=3): m1:=


plot([200.0000001*1.1^t+799.9999999*.9^t, 600.0000000*1.1^t+400.0000000*.9^t,t=-10..10],
color=black): m4:=plot([-39.99999146*1.1^t+639.9984322*.9^t, -119.9999743*1.1^t+319.9992161*
.9^t,t=-10..10],color=black):display(m1,m2,m3,m4,scaling=constrained,color=black);

Modelos Populacionais e Processos de Markov 37

>

A situao com outras condies iniciais se segue de maneira similar.

Projeto Parte 4: Matrizes de Markov (detalhes no texto).


M = [0,2; 0,7], [0,8; 0,3]
(a) Encontre o nico autovetor, u, associado com o autovalor 1.
(b) Descubra o que acontece quando voc aplica a centsima potncia de M a um vetor inicial [0,2,
0,8], representando as probabilidades de que as pessoas nos grupos (1) e (2) tenham a doena.
(c) Aplique a centsima potncia de M a alguns diferentes vetores de probabilidades iniciais.
(d) Ajuste u da parte (a) para que a soma dos componentes seja 1 (e u se torne um vetor de probabilidades). Suponha que u ajustado seja [u1, u2]. Ento podemos concluir que u1*100% do Grupo 1 e
u2*100% do Grupo 2 tero a doena (no importa que proporo tinha a doena para comear).
> restart:with(linalg):with(plots):M:=matrix([[.2,.7],[.8,.3]]);
Warning, new definition for norm
Warning, new definition for trace
M := matrix([[.2, .7], [.8, .3]])
> Digits:=6;eigenvectors(M);
Digits := 6
[1.00000, 1, {vector([-.659966, -.754248])}] [-.500000, 1, {vector([.707107, .707107])}]

38 Aplicao 6
> u:=[-.659966, -.754248];
u := [-.659966, -.754248]
> evalm(M^10000&*[.7,.3]);
vector([.466667, .533333])
> evalm(M^10000&*[.4,.6]);
vector([.466667, .533333])
> evalm(M^10000&*[1,0]);
vector([.466667, .533333])

Escalonando u;
> .66+.75;
1.41
> u1:=-1/1.41*u;
u1 := [.468061, .534928]

Ento, 47% das pessoas com a doena esto no Grupo 1 e 53% no Grupo 2.
Para diverso:
> A:=evalm(P&*Diag&*inverse(P));
A := matrix([[1.250000000, -.7500000000], [-.7500000000, 1.250000000]])
>
> evalf(eigenvectors(A));
[.5000000000, 1., {vector([.7071067810, .7071067810])}] [2.000000000, 1.,
{vector([-.7071067810, .7071067810])}]
> eigval1:= 2:eigval2:=1/2:
> eigvec1:=normalize([-.7069, .7069]);eigvec2:=normalize([.7069, .7069]);
eigvec1 := vector([-.7071067812, .7071067812])
eigvec2 := vector([.7071067812, .7071067812])
>
>
> Digits:=4:result:=array(1..5):

die:=rand(-10..10):
for i from 1 to 5 do x:=die():y:=die(): result[i]:=evalf(evalm(eigval1^t*dotprod([x,y],eigvec1)*
eigvec1+ eigval2^t*dotprod([x,y],eigvec2)*eigvec2)):od;

Modelos Populacionais e Processos de Markov 39


x := -4
y := 7
result[1]
x := 8
y := 10
result[2]
x := -6
y := -8
result[3]
x := -5
y := 7
result[4]
x := 6
y := -6
result[5]

:= vector([-5.500*2.^t+1.500*.5000^t, 5.500*2.^t+1.500*.5000^t])

:= vector([-.9998*2.^t+9.001*.5000^t, .9998*2.^t+9.001*.5000^t])

:= vector([.9998*2.^t-7.000*.5000^t, -.9998*2.^t-7.000*.5000^t])

:= vector([-6.000*2.^t+.9998*.5000^t, 6.000*2.^t+.9998*.5000^t])

:= vector([6.000*2.^t, -6.000*2.^t])

> m00:=plot([t,t, t=-10..10],color=black,thickness=3):m01:=plot([-t,t,t=-10..10],color=black,

thickness=3):m1:=plot([-7.000*2.^t-3.000*.5000^t, 7.000*2.^t-3.000*.5000^t,t=-10..10],color=
yellow,thickness=3):m2:=plot([-4.000*2.^t-6.000*.5000^t, 4.000*2.^t-6.000*.5000^t,t=-10..10],color=
red,thickness=3):m3:=plot([-5.000*2.^t+2.000*.5000^t, 5.000*2.^t+2.000*.5000^t,t=-10..10],
color=blue,thickness=4):m4:=plot([-1.500*2.^t+2.500*.5000^t, 1.500*2.^t+2.500*.5000^t,t=10..10],color=green,thickness=3):m5:=plot([-4.000*2.^t+1.001*.5000^t, 4.000*2.^t+1.001*.5000^t,t=10..10],color=cyan,thickness=3): :display(m00,m01,m2,m3,m4,m5,scaling=constrained,view=[15..15,-15..15],axes=normal);

Aplicao 7
Equaes Diferenciais com Autovetores
Sugestes/Respostas ao Projeto
ATENO Este um arquivo muito grande. Se voc est vendo uma figura estranha, acione
EDIT/EXECUTE.
Os seguintes comandos (no documentados) foram usados para o resultado do Projeto Parte 3.
Os restantes comandos Maple mostram como gerar uma srie de retratos de fase.
Primeiro observe as muitas coisas que o Maple pode fazer com Equaes Diferenciais!
> restart:with(DEtools);with(plots):with(linalg):
[DEnormal, DEplot, DEplot3d, DEplot_polygon, DFactor, Dchangevar, GCRD,
LCLM, PDEchangecoords, RiemannPsols, abelsol, adjoint, autonomous,
bernoullisol, buildsol, buildsym, canoni, chinisol, clairautsol,
constcoeffsols, convertAlg, convertsys, dalembertsol, de2diffop, dfieldplot,
diffop2de, eigenring, endomorphism_charpoly, equinv, eta_k, eulersols,
exactsol, expsols, exterior_power, formal_sol, gen_exp, generate_ic,
genhomosol, hamilton_eqs, indicialeq, infgen, integrate_sols, intfactor,
kovacicsols, leftdivision, liesol, line_int, linearsol, matrixDE,
matrix_riccati, moser_reduce, mult, newton_polygon, odeadvisor, odepde,
parametricsol, phaseportrait, poincare, polysols, ratsols, reduceOrder,
regular_parts, regularsp, riccati_system, riccatisol, rightdivision,
separablesol, super_reduce, symgen, symmetric_power, symmetric_product,
symtest, transinv, translate, untranslate, varparam, zoom]
Warning, new definition for adjoint
Warning, new definition for norm
Warning, new definition for trace
> restart:with(linalg):with(plots):A:=matrix([[4,3],[3,7]]);
Warning, new definition for norm
Warning, new definition for trace
A := matrix([[4, 3], [3, 7]])
> t:=trace(A);eigenvectors(A);
t := 11
[11/2+3/2*5^(1/2), 1, {vector([-1/2+1/2*5^(1/2), 1])}] [11/2-3/2*5^(1/2),
1, {vector([-1/2-1/2*5^(1/2), 1])}]
> dd:=det(A);t^2-4*dd;evalf(eigenvectors(A));
dd := 19
45
[8.854101967, 1., {vector([1., 1.618033989])}] [2.145898033, 1.,
{vector([1., -.6180339890])}]
> Di:=matrix([[8.85^k,0],[0,2.14^k]]);
Di := matrix([[8.85^k, 0], [0, 2.14^k]])

Equaes Diferenciais com Autovetores 41


> P:=transpose(matrix([[.6180339890, 1.],[-1.618033989, 1.]]));
P := matrix([[.6180339890, -1.618033989], [1., 1.]])
> evalf(evalm(P&*Di&*inverse(P)&*[2,1]));evalf(evalm( P &*Di&*inverse(P)&*[1,2]));

evalf(evalm(P&*Di&*inverse(P)&*[.6,1]));evalf(evalm( P&*Di&*inverse(P)&*[.6,1]));evalf(
evalm( P &*Di&*inverse(P)&*[-1.6,1]));evalf(evalm(P&*Di&*inverse(P)&*[5,1]));evalf(evalm(
P &*Di&*inverse(P)&*[-2,-1]));evalf(evalm(P&*Di&*inverse(P)&*[.5,-3])); evalf(evalm(P&*
Di&*inverse(P)&*[1,0]));
>
vector([1.000000000*8.85^k+.9999999994*2.14^k, 1.618033989*8.85^k.6180339885*2.14^k])
vector([1.170820394*8.85^k-.1708203935*2.14^k, 1.894427190*8.85^k+
.1055728092*2.14^k])
vector([.6130495171*8.85^k-.130495170e-1*2.14^k,
.9919349549*8.85^k+.80650451e-2*2.14^k])
vector([.6130495171*8.85^k-.130495170e-1*2.14^k,
.9919349549*8.85^k+.80650451e-2*2.14^k])
vector([.49844720e-2*8.85^k-1.604984472*2.14^k, .80650451e2*8.85^k+.9919349549*2.14^k])
vector([1.829179608*8.85^k+3.170820393*2.14^k, 2.959674775*8.85^k1.959674775*2.14^k])
vector([-1.000000000*8.85^k-.9999999994*2.14^k, -1.618033989*8.85^k+
.6180339885*2.14^k])
vector([-1.203444186*8.85^k+1.703444186*2.14^k, -1.947213595*8.85^k1.052786405*2.14^k])
vector([.2763932023*8.85^k+.7236067977*2.14^k, .4472135954*8.85^k.4472135954*2.14^k])
> m1:=plot([1.000000000*8.85^k+.9999999994*2.14^k, 1.618033989*8.85^k-

.6180339885*2.14^k ,k=-4..4],color=black):
> m2:=plot([1.170820394*8.85^k-.1708203935*2.14^k, 1.894427190*8.85^k+.1055728092*

2.14^k,k=-4..4],color=blue):
> m3:=plot([.6130495171*8.85^k-.130495170e-1*2.14^k, .9919349549*8.85^k+.80650451e-2-

*2.14^k ,k=-4..4]):
> m4:=plot([.6130495171*8.85^k-.130495170e-1*2.14^k, .9919349549*8.85^k+.80650451e-2-

*2.14^k,k=-4..4]):
> m5:=plot([.49844720e-2*8.85^k-1.604984472*2.14^k, .80650451e-2-

*8.85^k+.9919349549*2.14^k,k=-4..4],color=green):
> m6:=plot([1.829179608*8.85^k+3.170820393*2.14^k, 2.959674775*8.85^k-

1.959674775*2.14^k,k=-4..4],color=black):
> m7:=plot([-1.000000000*8.85^k-.9999999994*2.14^k, -1.618033989*8.85^k+.6180339885*

2.14^k,k=-4..4]):
> m8:=plot([-1.203444186*8.85^k+1.703444186*2.14^k, -1.947213595*8.85^k-

1.052786405*2.14^k,k=-4..4]):

42 Aplicao 7
> m9:=plot([.2763932023*8.85^k+.7236067977*2.14^k, .4472135954*8.85^k-

.4472135954*2.14^k,k=-4..4]):
> eig1:=plot([k, 1.618033989*k ,k=-10..10],color=blue,thickness=3):eig2:=plot([-1.618033989*k,

1*k,k=-10..10],color=blue,thickness=3):
> display(m1,m2,m3,m4,m5,m6,m7,m8,m9,eig1,eig2,view=[-10..10,-10..10]);

Aqui experimentamos uma variedade de constantes


para criar retratos de fase.
> restart:with(DEtools):with(plots):
> phaseportrait([D(x)(t)=2*x(t)-1.2*y(t)*x(t),D(y)(t)=-y(t)+.95*x(t)*y(t)],\

[x(t),y(t)],t=-4..4,[[x(0)=1,y(0)=1]],stepsize=.05, \
scene=[x(t),y(t)],linecolour=sin(t*Pi/2),method=classical[foreuler]);

> A:=matrix([[-2,0],[0,-5]]);eigenvectors(A);phaseportrait([D(x)(t)=-2*x(t),D(y)(t)= -5*y(t)],\

[x(t),y(t)],t=-4..4,[[x(0)=1,y(0)=1],[x(0)=-1,y(0)=-1],[x(0)=-1,y(0)=1],[x(0)=1,y(0)=-1],
[x(0)=0,y(0)=1]],stepsize=.05, \
scene=[x(t),y(t)],linecolour=sin(t*Pi/2),method=classical[foreuler],linecolor=black);
A := matrix([[-2, 0], [0, -5]])
eigenvectors(A)

Equaes Diferenciais com Autovetores 43

> with(linalg):with(DEtools):with(plots):A:=matrix([[0,1],[1,0]]);eigenvectors(A);

phaseportrait([D(x)(t)=y(t),D(y)(t)=-x(t)],\
[x(t),y(t)],t=-10..10,[[x(0)=1,y(0)=0 ]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],linecolor=black);
Warning, new definition for adjoint
Warning, new definition for norm
Warning, new definition for trace
Warning, new definition for adjoint
A := matrix([[0, 1], [1, 0]])
[-1, 1, {vector([1, -1])}] [1, 1, {vector([1, 1])}]

> A:=matrix([[1,0],[0,-1]]);eigenvectors(A);phaseportrait([D(x)(t)=x(t),D(y)(t)=-y(t)],\

[x(t),y(t)],t=0..1,[[x(0)=1,y(0)=1 ],[x(0)=-1,y(0)=1 ],[x(0)=1,y(0)=-1 ],[x(0)=-1,y(0)=-1 ],


[x(0)=0,y(0)=1 ],[x(0)=1,y(0)=1 ]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],color=black,linecolor=black);
A := matrix([[1, 0], [0, -1]])
[1, 1, {vector([1, 0])}] [-1, 1, {vector([0, 1])}]

44 Aplicao 7

> restart:with(DEtools):with(plots):with(linalg):A:=matrix([[1,-2],[2,1]]);t:=trace(A):dd:=

det(A):t^2-4*dd;eigenvectors(A);
Warning, new definition for adjoint
Warning, new definition for norm
Warning, new definition for trace
A := matrix([[1, -2], [2, 1]])
-16
[1+2*I, 1, {vector([1, -I])}] [1-2*I, 1, {vector([1, I])}]
> restart:with(DEtools):with(plots):phaseportrait([D(x)(t)=x(t)-2*y(t),D(y)(t)=2*x(t)+y(t)],\

[x(t),y(t)],t=-10..10,[[x(0)=1,y(0)=1 ],[x(0)=-1,y(0)=1 ],[x(0)=1,y(0)=-1 ],[x(0)=-1,y(0)=-1 ],


[x(0)=0,y(0)=1 ],[x(0)=1,y(0)=1 ]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],linecolor=black);

> A:=matrix([[-1,2],[2,1]]);eigenvectors(A);phaseportrait([D(x)(t)=-x(t)+2*y(t),

D(y)(t)=2*x(t)+y(t)],\
[x(t),y(t)],t=-1..1,[[x(0)=1,y(0)=1 ],[x(0)=-1,y(0)=2 ],[x(0)=2,y(0)=-2 ],[x(0)=-1 ,y(0)=
2 ],[x(0)=2,y(0)=1 ],[x(0)=1,y(0)=1] ,[x(0)=2 ,y(0)=1],[x(0)=-3 ,y(0)=-1]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],linecolor=black);
A := matrix([[-1, 2], [2, 1]])
eigenvectors(A)

Equaes Diferenciais com Autovetores 45

>

with(DEtools):with(linalg):A:=matrix([[0,1],[0,2]]);eigenvectors(A);phaseportrait([D(x)(t)=
y(t),D(y)(t)=2*y(t)],\
[x(t),y(t)],t=-1..1,[[x(0)=1,y(0)=1 ],[x(0)=-1,y(0)=2 ],[x(0)=2,y(0)=-2 ],[x(0)=-1 ,y(0)=2 ],
[x(0)=2,y(0)=1 ],[x(0)=1,y(0)=1] ,[x(0)=2 ,y(0)=1],[x(0)=-3 ,y(0)=-1]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],linecolor=black);
>
>
Warning, new definition for adjoint
Warning, new definition for norm
Warning, new definition for trace
A := matrix([[0, 1], [0, 2]])
[2, 1, {vector([1, 2])}] [0, 1, {vector([1, 0])}]

> with(DEtools):with(plots):with(linalg):A:=matrix([[0,1],[-10,-7]]):eigenvectors(A);

phaseportrait([D(x)(t)= y(t),D(y)(t)= -10*x(t)-7*y(t)],\


[x(t),y(t)],t=0..1,[[x(0)=2,y(0)=2],[x(0)=1,y(0)=1],[x(0)=-1,y(0)=1],[x(0)=1,y(0)=-1],
[x(0)=0,y(0)=2],[x(0)=1,y(0)=-2],[x(0)=1,y(0)=-5],[x(0)=-1,y(0)=5],[x(0)=1,y(0)=-3],
[x(0)=1,y(0)=-7],[x(0)=-.5,y(0)=-3],[x(0)=-1,y(0)=5]],stepsize=.05, \
scene=[x(t),y(t)],method=classical[foreuler],color=black,linecolor=black);
Warning, new definition for adjoint
Warning, new definition for adjoint
[-2, 1, {vector([1, -2])}] [-5, 1, {vector([1, -5])}]

46 Aplicao 7

> A:=matrix([[-2,-3],[3,1]]);eigenvectors(A);
A := matrix([[-2, -3], [3, 1]])
[-1/2+3/2*I*3^(1/2), 1, {vector([1, -1/2-1/2*I*3^(1/2)])}] [-1/23/2*I*3^(1/2), 1, {vector([1, -1/2+1/2*I*3^(1/2)])}]
> phaseportrait([D(x)(t)=-2*x(t)-3*y(t),D(y)(t)= 3*x(t)-2*y(t)],\

[x(t),y(t)],t=-40..40,[[x(0)=1,y(0)=1],[x(0)=-1,y(0)=-1],[x(0)=-1,y(0)=-1],[x(0)=1,y(0)=-1],
[x(0)=0,y(0)=1]],stepsize=.05, \
scene=[x(t),y(t)],linecolour=sin(t*Pi/2),method=classical[foreuler],linecolor=black);

> with(linalg):A:=matrix([[0,1],[-10,-7]]);
A := matrix([[0, 1], [-10, -7]])
> eigenvectors(A);
[-2, 1, {vector([1, -2])}] [-5, 1, {vector([1, -5])}]
> a:=phaseportrait([D(x)(t)= y(t),D(y)(t)= -10*x(t)-7*y(t)],\

[x(t),y(t)],t=-.2..0.2,[[x(0)=2,y(0)=2],[x(0)=-1,y(0)=-2 ],[x(0)=-2,y(0)=2],[x(0)=1,y(0)=-2],
[x(0)=1.5,y(0)=1]],stepsize=.5, \
scene=[x(t),y(t)],method=classical[foreuler],color=black,linecolor=black):b:=plot([-exp(5*t)+2*exp(-2*t), 5*exp(-5*t)-4*exp(-2*t),t=-1..1],color=red,thickness=4):display(a,b);

Equaes Diferenciais com Autovetores 47

Aplicao 8
Uma Pequena Teoria dos Grafos com
o Polinmio Caracterstico
A maior parte deste projeto autoexplicativa e/ou exige demonstraes.
Sugestes/Respostas ao Projeto
Projeto Parte 1: Clculo das potncias da matriz de adjacncia.
> with(linalg):A:=matrix([[1,1,0,1],[1,0,0,0],[0,0,0,0],[1,0,0,0]]);
A := matrix([[1, 1, 0, 1], [1, 0, 0, 0], [0, 0, 0, 0], [1, 0, 0, 0]])
> evalm(A^2);
matrix([[3, 1, 0, 1], [1, 1, 0, 1], [0, 0, 0, 0], [1, 1, 0, 1]])
> evalm(A^3);
matrix([[5, 3, 0, 3], [3, 1, 0, 1], [0, 0, 0, 0], [3, 1, 0, 1]])
> evalm(A^50);
matrix([[750599937895083, 375299968947541, 0, 375299968947541],
[375299968947541, 187649984473771, 0, 187649984473771], [0, 0, 0, 0],
[375299968947541, 187649984473771, 0, 187649984473771]])

O terceiro vrtice parece inatingvel. Continua a haver simetria, etc.

Aplicao 9
A Transformao de Lorentz-Einstein
ATENO Este um arquivo muito grande. Se voc est vendo uma figura estranha, acione
EDIT/EXECUTE/WORKSHEET.
PLANO DE FUNDO: Estes grficos foram usados no Plano de Fundo deste Projeto.
> restart:with(linalg):A:=matrix([[1,-.5],[0,1]]);
Warning, new definition for norm
Warning, new definition for trace
A := matrix([[1, -.5], [0, 1]])
> evalm(A&*[x,y]);
vector([x-.5*y, y])
> with(plots):m1:=plot3d([x,y,0],x=0..1,y=0..1):m2:=plot3d([x-.5*y,y,0],x=0..1,y=0..1):

display(m2, orientation=[-90,0],scaling=constrained,axes=normal);

> with(linalg):evalm(inverse(A)&*[x,y]);
vector([x+.5*y, y])
> plot3d([x+.5*y, y,0],x=0..1,y=0..1,orientation=[-90,0],scaling=constrained,axes=normal);

Embora esta no seja uma resposta completa ao projeto, explicamos alguns passos. A matriz A
para a transformao direta construda com
v = 0.4 c.

50 Aplicao 9
> with(linalg):v:=.5*c;k:=1/sqrt(1-v^2/c^2);A:=matrix([[k,-k*v],[-k*v/c^2,k]]):c:=1:
Warning, new definition for norm
Warning, new definition for trace
v := .5*c
k := 1.154700538

A matriz A agora aplicada s coordenadas (x,t) do plano e aos vetores da base [1,0] e [0,1].
> evalm(A&*[x,t]);
vector([1.154700538*x-.5773502690*t, -.5773502690*x+1.154700538*t])
> evalm(A&*[1,0]);
vector([1.154700538, -.5773502690])
> evalm(A&*[0,1]);
vector([-.5773502690, 1.154700538])

O resultado da transformao traado a seguir.


> with(plots):m1:=plot([1.154700538*t, -.5773502690*t ,t=0..1],color=red):m2:=plot([-

.5773502690*t, 1.154700538*t,t=0..1],color=blue):display(m1,m2,axes=normal,
scaling=constrained);

(Alis, se quisermos completar o diagrama, nos movemos em 3 dimenses. Somente assim o Maple
pode fazer o sombreamento.)

A Transformao de Lorentz-Einstein 51
> evalm(u*[1.154700538, -.5773502690] + v*[-.5773502690, 1.154700538]);
vector([1.154700538*u-.5773502690*v, -.5773502690*u+1.154700538*v])
> plot3d([1.154700538*u-.5773502690*v, -.5773502690*u+1.154700538*v,0],u=0..1,v=0..1,

orientation=[-90,0],scaling=constrained,axes=normal);

Agora calculamos as projees dos vetores vermelho e azul eles podem ser facilmente vistos
como [0, 1,15] e [1,15, 0]. Colocamos pequenos crculos nas pontas desses vetores para efeito
dramtico.
> n1:=plot([.02*cos(t)+1.15, .02*sin(t)-.577,t=0..2*Pi],color=black,thickness=4):

n2:=plot([.02*cos(t)-.577, .02*sin(t)+1.15,t=0..2*Pi],color=black,thickness=4):n3:=
plot([.02*cos(t)+1.15, .02*sin(t), t=0..2*Pi],color=black,thickness=4):
> n4:=plot([.02*cos(t), .02*sin(t)+1.15,t=0..2*Pi],color=black,thickness=4):display(m1,m2,n1,

n2,n3,n4, scaling=constrained);
> display(m1,m2,n1,n2,n3,n4, scaling=constrained);

52 Aplicao 9
Vemos que parece que o sistema mvel de (vermelho, azul) ou (x,t) encolheu, quando medido
pelas projees sobre os eixos (pretos), (x,t).

Agora encontramos a transformao inversa, a que chamamos de B esta a inversa de A.


> B:=inverse(A);
B := matrix([[1.154700539, .5773502696*c], [.5773502696/c, 1.154700539]])
> evalm(B&*[1,0]);evalm(B&*[0,1]);
vector([1.154700539, .5773502696])
vector([.5773502696, 1.154700539])
> m1:=plot([1.154700539*t, .5773502696*t,t=0..1],color=red):m2:=plot([.5773502696*t,

1.154700539*t, t=0..1],color=blue):display(m1,m2);

E parece, olhando para as projees, que o sistema estacionrio (vermelho, azul) ou (x,t) encolheu quando medido por suas projees sobre a referncia (x,t).

> evalm(u*[1.154700539, .5773502696]+v*[.5773502696, 1.154700539]);


vector([1.154700539*u+.5773502696*v, .5773502696*u+1.154700539*v])
> plot3d([1.154700539*u+.5773502696*v, .5773502696*u+1.154700539*v,0],u=0..1,v=0..1,

scaling=constrained,orientation=[-90,0],axes=normal);

A Transformao de Lorentz-Einstein 53

REVERSA E DIRETA com k = 0.5


Comparemos agora as transformaes direta e reversa.
DIRETA
> evalm(A&*[x,t]);
vector([1.154700538*x-.5773502690*t, -.5773502690*x+1.154700538*t])

E REVERSA;
> evalm(B&*[xprime,tprime]);
vector([1.154700539*xprime+.5773502696*tprime, .5773502696*xprime+
1.154700539*tprime])

Observamos simplesmente uma troca de sinal nessas comparaes. Tentemos os mesmos clculos
com variveis genricas:
> v:='v':k:='k':c:='c': k:=1/sqrt(1-v^2/c^2);A:=matrix([[k,-k*v],[-k*v/c^2,k]]): B:=inverse(A);
k := 1/(1-v^2/c^2)^(1/2)
B := matrix([[1/((c^2-v^2)/c^2)^(1/2), 1/((c^2-v^2)/c^2)^(1/2)*v], [1/
((c^2-v^2)/c^2)^(1/2)*v/c^2, 1/((c^2-v^2)/c^2)^(1/2)]])
> direct:=evalm(A&*[x,t]);reverse:=evalm(B&*[xprime,tprime]);
direct := vector([1/(1-v^2/c^2)^(1/2)*x-1/(1-v^2/c^2)^(1/2)*v*t, -1/(1-v^2/
c^2)^(1/2)*v/c^2*x+1/(1-v^2/c^2)^(1/2)*t])
reverse := vector([1/((c^2-v^2)/c^2)^(1/2)*xprime+1/((c^2-v^2)/
c^2)^(1/2)*v*tprime, 1/((c^2-v^2)/c^2)^(1/2)*v/c^2*xprime+1/((c^2-v^2)/
c^2)^(1/2)*tprime])

54 Aplicao 9
(Simplificando isto mo, encontramos o mesmo padro que vimos quando k era uma constante especificada. As transformaes DIRETA e REVERSA realmente se assemelham.)
O caso em que v = 0.
> restart:with(linalg):v:=0;k:=1/sqrt(1-v^2/c^2);A:=matrix([[k,-k*v],[-k*v/c^2,k]]):
Warning, new definition for norm
Warning, new definition for trace
v := 0
k := 1
> evalm(A&*[x,t]);evalm(A&*[1,0]):
vector([x, t])
> inverse(A);
matrix([[1, 0], [0, 1]])
> B:=matrix([[1,-v],[0,1]]);
B := matrix([[1, 0], [0, 1]])
> evalm(B&*[x,t]);
vector([x, t])
> evalm(A&*[1,0]);
>
vector([1, 0])
> evalm(A&*[0,1]);
vector([0, 1])
> with(plots):m1:=plot([1.00*t,0*t,t=0..1],color=red,thickness=3):m2:=plot([0*t, 1.000*t,t=0..1],

color=blue,thickness=3):display(m1,m2,axes=normal);

A Transformao de Lorentz-Einstein 55

Calculando a transformao inversa:


> restart:with(linalg):A:=matrix([[k,-k*v],[-k*v/c^2,k]]):inverse(A);
Warning, new definition for norm
Warning, new definition for trace
matrix([[-1/k/(-c^2+v^2)*c^2, -1/k*v/(-c^2+v^2)*c^2], [-1/k*v/(-c^2+v^2),
-1/k/(-c^2+v^2)*c^2]])
> simplify(evalm(inverse(A)&*[xprime,tprime]));
vector([-c^2*(xprime+v*tprime)/k/(-c^2+v^2), -(v*xprime+c^2*tprime)/k/
(-c^2+v^2)])

Nota: estas equaes deveriam ser muito mais simplificadas do que o Maple se preocupa em fazer. Na
forma simplificada elas se assemelham s transformaes diretas.

Aplicao 10
Imagens Fractais
A explicao, embora breve, dada no projeto. Aqui mostramos os passos em Maple.
> with(plots):with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> Triangl:=linalg[matrix](3,6,[[.5,0,0,.5,1,1],[.5,0,0,.5,50,1],[.5,0,0,.5,50,50]]);
Triangl := matrix([[.5, 0, 0, .5, 1, 1], [.5, 0, 0, .5, 50, 1], [.5, 0, 0,
.5, 50, 50]])
> Square:=linalg[matrix](4,6,[[.5,0,0,.5,1,1],[.5,0,0,.5,50,1],[.5,0,0,.5,1,50],[.5,0,0,.5,50,50]]);
Square := matrix([[.5, 0, 0, .5, 1, 1], [.5, 0, 0, .5, 50, 1], [.5, 0, 0,
.5, 1, 50], [.5, 0, 0, .5, 50, 50]])
> Fern:=linalg[matrix](4,6,[[0,0,0,.16,0,0],[.85,.04,-.04,.85,0,1.6],[.2,-.26,.23,.22,0,1.6],

[-1.5,.28,.26,.24,0,.44]]);
Fern := matrix([[0, 0, 0, .16, 0, 0], [.85, .4e-1, -.4e-1, .85, 0, 1.6],
[.2, -.26, .23, .22, 0, 1.6], [-1.5, .28, .26, .24, 0, .44]])
> Dragon:=linalg[matrix](2,6,[[.824074, .281482, -.212346, .864198, -1.882290,

-0.110607],[.088272, .520988, -.463889, -.377778, 0.785360, 8.095795]]);


Dragon := matrix([[.824074, .281482, -.212346, .864198, -1.882290,
-.110607], [.88272e-1, .520988, -.463889, -.377778, .785360, 8.095795]])

Abaixo segue o programa de gerao de fractais.


> #FRACTAL GENERATOR
> ifs_frac:=proc(m1::matrix,NumIterat::integer,Rank::integer)
> local x,y,s,i,k,newx,newy;
>
>
> x:=0;
> y:=0;
> s:={};
> for i from 1 to NumIterat do
> krand:=rand(1..Rank);

Imagens Fractais 57
> k:=krand();
> newx:=m1[k,1]*x+m1[k,2]*y+m1[k,5];
> newy:=m1[k,3]*x+m1[k,4]*y+m1[k,6];
> x:=newx;
> y:=newy;
> if i > 10 then
> s:=s union{[x,y]};
> fi;
>
> od;
>
> plot([op(s)], style=POINT, symbol=POINT,color=black);
>
>
>
> end;
Warning, `krand` is implicitly declared local
ifs_frac := proc (m1::matrix, NumIterat::integer, Rank::integer)
local x, y, s, i, k, newx, newy, krand; x := 0; y := 0; s := {};
for i to NumIterat do krand := rand(1 .. Rank); k := krand(); newx :=
m1[k,1]*x+m1[k,2]*y+m1[k,5]; newy := m1[k,3]*x+m1[k,4]*y+m1[k,6];
x := newx; y := newy; if 10 < i then s := `union`(s,{[x, y]}) fi od;
plot([op(s)],style = POINT,symbol = POINT,color = black) end
>
>
> ifs_frac(Triangl,1000,3);

58 Aplicao 10

> ifs_frac(Fern,3000,4);

> ifs_frac(Square,1000,4);

> ifs_frac(Dragon,1000,2);

Vous aimerez peut-être aussi