!header

!if $compute != yes
 Dada una matriz (introduzca sus elementos línea a línea, separando los mismos por
 comas).
 !form reply
 <center><table border=0>
 <tr><td><font size=+2> A = <td>
 <textarea name=matrix rows=7 cols=30>$matrix</textarea></table></center>
 <input type=submit value="Calcular"> :
 <ul>
  <li><input type=checkbox checked name=show value=invariant>rango,
   determinante, traza, signatura.
  <li><input type=checkbox name=show value=square>A<sup>2</sup>. &nbsp;
   <input type=checkbox name=show value=cube>A<sup>3</sup>. &nbsp;
   <input type=checkbox name=show value=inverse>A<sup>-1</sup>.
  !goto nextmenu
  <li><input type=checkbox name=show value=exponent>e<sup>A</sup>: &nbsp;
   <input type=radio name=exp_method value=numerical
   !if $exp_method=numerical
    checked
   !endif
   >numerical, or &nbsp;
   <input type=radio name=exp_method value=formal
   !if $exp_method=formal
    checked
   !endif
   >symbolic.
  :nextmenu
  <li><input type=checkbox name=show value=charpoly>polinomio
   característico de A.
  <li><input type=checkbox name=show value=eigen>Autovalores y autovectores.
!!  <li><input type=checkbox name=show value=jordan>Jordan form.
  <p>
  <li><input type=checkbox name=show value=every>Todas las matrices registradas.
  <li><input type=checkbox name=show value=formula>Una expresión matricial:
   <input type=text size=30 name=formula value=$formula> . 
  <li><input type=checkbox name=show value=register>Registrar A con un
   nombre
   <select name=register>
   !for i=1 to 9
    <option value=$i>M$i
   !next i
   </select>.
 </ul></form></center>
 Usted tiene también el
 !href module=tool/linear/matmult Multiplicador de matrices
 para multiplicar rápidamente dos matrices.
!else
 !if $use_space=yes
   !warn rawmatrix
   !goto bad_end
 !endif
 !if $bad_mat=yes
   La matriz introducida es errónea. Por favor, corrija el error. <p> 
   !goto bad_end
 !else
  <center>
  !instex $$ A=$matr_tex $$ 
  </center> <p>
  !if invariant isin $show
   rango(A) = $rank <br>
   !ifval $rows=$cols
    det(A) = $det <br>
    traza(A) = $trace <br>
    !if fail notin $signat
      signatura(A) = ($signat) <br>
    !else
      La matriz no es simétrica. <br>
    !endif
   !endif
  !endif
  
  !if $tex_src2 != ? and $tex_src2 != $empty
   !instex $$$$ A^2 = $tex_src2 $$$$
   <br>
  !endif
  
  !if $tex_src3 != ? and $tex_src3 != $empty
   !instex $$$$ A^3 = $tex_src3 $$$$
   <br>
  !endif
  
  !if $tex_srci != ? and $tex_srci != $empty
   !instex $$$$ A^{-1} = $tex_srci $$$$
   <br>
  !endif
  
  !if $tex_srce != ? and $tex_srce != $empty
   !instex $$$$ e^A = $tex_srce $$$$
   <br>
  !endif
  
  !if formula isin $show
   !if $subst_tex == ? or $subst_tex == $empty
     El cálculo de $formula ha fallado. Por favor, revise la validez de 
     su expresión.
   !else
     $formula =
     !set ins_attr=align=middle
     !instex $$$$ $subst_tex $$$$
   !endif
   <br>
  !endif
  
  !if charpoly isin $show and $polych_tex != $empty and $polych_tex != ?
   !instex polinomio caract. $$ =$polych_tex $$
   <br>
  !endif
  
  !if eigen isin $show
    !if $eigen = $empty or FAIL isin $eigen
      El cálculo de los autovalores y autovectores ha fallado. <p>
    !else
      Autovalores y autovectores de A: <p><center>
      !readproc colors-adm
      <table border=1 bgcolor=$table_bgcolor>
      <tr><th>Valor<th>Multiplicidad<th>Vector
      !for i=1 to $ecnt
       !exchange table_color1,table_color2
       <tr bgcolor=$table_color2>
       !set val=!item $i of $evalue
       !set mul=!item $i of $emult
       <td align=center>\($val)</td>
       <td align=center>\($mul)</td>
       <td align=center>\($(evec$i))</td>
      !next i
      </table></center> <p>
    !endif
  !endif

  !if jordan isin $show
    !if $jordan = $empth or FAIL isin $jordan
      Computation of Jordan Form has failed. <p>
    !else
      Jordan Form of A:
      !instex $$$$ $jordan $$$$
      <br>
    !endif
  !endif
  
  !if every isin $show and $deflist_pari != $empty
    <p>Registered matrices:
    !for i=1 to 9
      !if $(M$i) != $empty
        !instex $$$$ M_$i=$(tex_srcM$i) $$$$
. 
      !endif
    !next i
    <p>
  !endif

  <p><HR>
  !form resume
  <input type=submit value=Calcular>
  otra matriz, utilizando 
  <input size=30 name=preset value=A>
  <br><small>(Use <tt>A~</tt> para denotar la traspuesta de $m_A.)</small>
  </form>
  también puede utilizar el
  !href module=tool/linear/vector&$loadv calculador de vectores
  con las filas de $m_A como vectores, o el 
  !href module=tool/linear/linsolver&method=matrix&matrix=$matrix&noshow=yes Solucionador de sistemas lineales
  utilizando $m_A como matriz de los coeficientes.
  <p>
  !set preset=
 !endif bad_mat
!endif
!goto end

:bad_end
!href cmd=resume&preset=A Corregir error
. &nbsp; 

:end
!tail

!set show=

