<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="spec">
    <refnamediv>
        <refname>spec</refname>
        <refpurpose>valeurs propres d'une matrice  </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Séquence d'appel</title>
        <synopsis>
            evals = spec(A)
            [X,diagevals] = spec(A)
            evals = spec(A,E)
            [al,be] = spec(A,E)
            [al,be,Z] = spec(A,E)
            [al,be,Q,Z] = spec(A,E)
        </synopsis>
    </refsynopsisdiv>
    <refsection role="parameters">
        <title>Paramètres</title>
        <variablelist>
            <varlistentry>
                <term>A  </term>
                <listitem>
                    <para>matrice carrée réelle ou complexe
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>E  </term>
                <listitem>
                    <para>
                        matrice carrée réelle ou complexe de même dimensions que  <literal> A</literal>
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>evals  </term>
                <listitem>
                    <para>vecteur réel ou complexe
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>diagevals  </term>
                <listitem>
                    <para> matrice carrée diagonale réelle ou complexe (les éléments
                        diagonaux sont les valeurs propres)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>al  </term>
                <listitem>
                    <para>vecteur réel ou complexe, al./be donnes les valeurs propres
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>be  </term>
                <listitem>
                    <para>vecteur réel ou complexe, al./be donnes les valeurs propres
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>X  </term>
                <listitem>
                    <para>matrice carrée inversible réelle ou complexe, matrices des
                        vecteurs propres.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Q  </term>
                <listitem>
                    <para>matrice carrée inversible réelle ou complexe, matrices des
                        vecteurs propres à gauche.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Z  </term>
                <listitem>
                    <para>atrice carrée inversible réelle ou complexe, matrices des
                        vecteurs propres à droite.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection role="description">
        <title>Description</title>
        <variablelist>
            <varlistentry>
                <term>spec(A)</term>
                <listitem>
                    <para>
                        <literal> evals=spec(A)</literal>  retourne dans le vecteur
                        <literal>evals</literal> les valeurs propres de <literal>A</literal>.
                    </para>
                    <para>
                        <literal> [evals,X] =spec(A)</literal> retourne de plus les vecteurs
                        propres (s'ils existent). Voir Aussi <literal>bdiag</literal>
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>spec(A,B)</term>
                <listitem>
                    <para>
                        <literal>evals=spec(A,E)</literal> retourne le  spectre du faisceau
                        <literal>s E - A</literal>, c'est à dire les racines du déterminant de
                        la matrice de polynômes <literal>s E - A</literal>.
                    </para>
                    <para>
                        <literal>[al,be] = spec(A,E)</literal> retourne le  spectre du faisceau
                        <literal>s E - A</literal>, c'est à dire les racines du déterminant de
                        la matrice de polynômes <literal>s E - A</literal>. Les valeurs propres
                        sont données par <literal>al./be</literal>. Si <literal>be(i) = 0</literal> la
                        <literal>i</literal>ième valeur propres est à l'infini. (Pour <literal>E =
                            eye(A), al./be
                        </literal>
                        est <literal>spec(A)</literal>).
                    </para>
                    <para>
                        <literal> [al,be,Z] = spec(A,E)</literal> retourne de plus la matrice
                        <literal>Z</literal> des vecteurs propres généralisés à droite.
                    </para>
                    <para>
                        <literal> [al,be,Q,Z] = spec(A,E)</literal> retourne de plus les matrices
                        <literal>Q</literal> et <literal>Z</literal> des vecteurs propres généralisés à
                        droite et à gauche.
                    </para>
                    <para>Pour les grosses matrices pleines / creuses, vous
                        pouvez utiliser le module Arnoldi.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection role="examples">
        <title>Exemples</title>
        <programlisting role="example"><![CDATA[
// MATRIX EIGENVALUES
A = diag([1,2,3]);
X = rand(3,3);
A = inv(X)*A*X;
spec(A)

x = poly(0,'x');
pol = det(x*eye(3,3)-A)
roots(pol)

[S,X] = bdiag(A);
clean(inv(X)*A*X)

// PENCIL EIGENVALUES
A = rand(3,3);
[al,be,Z] = spec(A,eye(A));al./be
clean(inv(Z)*A*Z)  //displaying the eigenvalues (generic matrix)
A = A+%i*rand(A);
E = rand(A);
roots(det(%s*E-A))   //complex case
 ]]></programlisting>
    </refsection>
    <refsection>
        <title>Fonctions utilisées</title>
        <para>
            Le calcul des valeurs propres des matrices est basé sur les
            routines Lapack DGEEV and ZGEEV.
        </para>
    </refsection>
    <refsection role="see also">
        <title>Voir aussi</title>
        <simplelist type="inline">
            <member>
                <link linkend="poly">poly</link>
            </member>
            <member>
                <link linkend="det">det</link>
            </member>
            <member>
                <link linkend="schur">schur</link>
            </member>
            <member>
                <link linkend="bdiag">bdiag</link>
            </member>
            <member>
                <link linkend="colcomp">colcomp</link>
            </member>
            <member>
                <link linkend="dsaupd">dsaupd</link>
            </member>
            <member>
                <link linkend="dnaupd">dnaupd</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
