1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /diag.texi/1.2/Sat Jun 2 00:13:14 2007//
4 * Funções e Variáveis Definidas para diag::
7 @node Funções e Variáveis Definidas para diag, , diag, diag
8 @section Funções e Variáveis Definidas para diag
11 @deffn {Função} diag (@var{lm})
12 Constrói a matriz quadrada com as matrizes de @var{lm} na diagonal. @var{lm} é uma lista de matrizes ou escalares.
18 (%i2) a1:matrix([1,2,3],[0,4,5],[0,0,6])$
20 (%i3) a2:matrix([1,1],[1,0])$
22 (%i4) diag([a1,x,a2]);
36 Para usar essa função escreva primeiramente @code{load("diag")}.
40 @deffn {Função} JF (@var{lambda},@var{n})
41 Retorna a célula de Jordan de ordem @var{n} com autovalor @var{lambda}.
63 Para usar essa função escreva primeiramente @code{load("diag")}.
67 @deffn {Função} jordan (@var{mat})
68 Retorna a forma de Jordan da matriz @var{mat}, mas codificada em uma lista do Maxima.
69 Para pegar a matriz correspondente à codificação, chame a função @code{dispJordan} sando como argumento
76 (%i3) a:matrix([2,0,0,0,0,0,0,0],
82 [-34,7,1,-2,-1,1,2,0],
83 [145,-17,-16,3,9,-2,0,3])$
86 (%o4) [[2, 3, 3, 1], [3, 1]]
105 Para usar essa função escreva primeiramente @code{load("diag")}. Veja também @code{dispJordan} e @code{minimalPoly}.
109 @deffn {Função} dispJordan (@var{l})
110 Retorna a matriz de Jordan associada à codificação fornecida pela lista do Maxima @var{l}, que é a saída fornecida pela função @code{jordan}.
116 (%i2) b1:matrix([0,0,1,1,1],
136 Para usar essa função escreva primeiramente @code{load("diag")}. Veja também @code{jordan} e @code{minimalPoly}.
140 @deffn {Função} minimalPoly (@var{l})
141 Retorna o menor polinômio associado à codificação fornecida pela lista do Maxima @var{l}, que é a saída fornecida pela função @code{jordan}.
147 (%i2) a:matrix([2,1,2,0],
153 (%o3) [[- 1, 1], [1, 3]]
154 (%i4) minimalPoly(%);
156 (%o4) (x - 1) (x + 1)
159 Para usar essa função escreva primeiramente @code{load("diag")}. Veja também @code{jordan} e @code{dispJordan}.
162 @deffn {Função} ModeMatrix (@var{A},@var{l})
163 Retorna a matriz @var{M} tal que @math{(M^^-1).A.M=J}, onde @var{J} é a forma de Jordan de @var{A}. A lista do Maxima @var{l} é a codificação da forma de Jordan como retornado pela função @code{jordan}.
169 (%i2) a:matrix([2,1,2,0],
175 (%o3) [[- 1, 1], [1, 3]]
176 (%i4) M: ModeMatrix(a,%);
190 (%i5) is( (M^^-1).a.M = dispJordan(%o3) );
193 Note que @code{dispJordan(%o3)} é a forma de Jordan da matriz @code{a}.
195 Para usa essa função escreva primeiramente @code{load("diag")}. Veja também @code{jordan} e @code{dispJordan}.
199 @deffn {Função} mat_function (@var{f},@var{mat})
200 Retorna @math{f(mat)}, onde @var{f} é uma função analítica e @var{mat}
201 uma matriz. Essa computação é baseada na fórmula da integral de Cauchy, que estabelece que
202 se @code{f(x)} for analítica e
205 mat=diag([JF(m1,n1),...,JF(mk,nk)]),
211 f(mat)=ModeMatrix*diag([f(JF(m1,n1)),...,f(JF(mk,nk))])*ModeMatrix^^(-1)
214 Note que existem entre 6 ou 8 outros métodos para esse cálculo.
216 Segue-se alguns exemplos.
222 (%i2) b2:matrix([0,1,0], [0,0,1], [-1,-3,-3])$
224 (%i3) mat_function(exp,t*b2);
227 (%o3) matrix([-------- + t %e + %e ,
231 t (- ----- - ----- + %e ) + t (2 %e - -----)
236 + 2 %e , t (%e - -----) + t (----- - -----)
240 + %e ], [- --------, - t (- ----- - ----- + %e ),
245 - t (----- - -----)], [-------- - t %e ,
249 t (- ----- - ----- + %e ) - t (2 %e - -----),
254 t (----- - -----) - t (%e - -----)])
259 [ -------------------- ]
263 (%o4) Col 1 = [ t %e ]
285 Col 3 = [ (t - 2 t) %e ]
286 [ - ---------------- ]
291 [ -------------------- ]
299 (%i5) b1:matrix([0,0,1,1,1],
305 (%i6) mat_function(exp,t*b1);
318 (%i7) minimalPoly(jordan(b1));
321 (%i8) ident(5)+t*b1+1/2*(t^2)*b1^^2;
334 (%i9) mat_function(exp,%i*t*b1);
337 [ 1 0 %i t %i t %i t - -- ]
340 (%o9) [ 0 1 0 %i t %i t ]
347 (%i10) mat_function(cos,t*b1)+%i*mat_function(sin,t*b1);
350 [ 1 0 %i t %i t %i t - -- ]
353 (%o10) [ 0 1 0 %i t %i t ]
364 (%i11) a1:matrix([2,1,0,0,0,0],
371 (%i12) fpow(x):=block([k],declare(k,integer),x^k)$
373 (%i13) mat_function(fpow,a1);
374 [ k k - 1 ] [ k - 1 ]
377 [ k - 1 ] [ k k - 1 ]
378 [ - k 3 ] [ 3 + k 3 ]
382 (%o13) Col 1 = [ ] Col 2 = [ ]
395 [ k k - 1 ] [ k - 1 ]
398 Col 3 = [ k - 1 ] Col 4 = [ k k - 1 ]
399 [ - k 3 ] [ 3 + k 3 ]
412 Col 5 = [ 0 ] Col 6 = [ ]
421 Para usar essa função escreva primeiramente @code{load("diag")}.