<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
          xmlns:scilab="http://www.scilab.org" xml:id="backslash" xml:lang="pt">
    <refnamediv>
        <refname>backslash</refname>
        <refpurpose>(\) divisão matricial direita-esquerda: exact or least square solution</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Seqüência de Chamamento</title>
        <synopsis>X = A \ B</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Descrição</title>
        <para>(\) denota a divisão matricial direita-esquerda.
            <literal>x=A\b</literal> é a solução para <literal>A*x=b</literal>.
        </para>
        <para>
            Se <literal>A</literal> é quadrada e não-singular,
            <literal>x=A\b</literal> (unicamente definida) é equivalente a
            <literal>x=inv(A)*b</literal> (mas as computações são menos custosas).
        </para>
        <para>
            Se <literal>A</literal> não é quadrada, <literal>x</literal> é uma
            solução de mínimo quadrado, i.e., <literal>norm(A*x-b)</literal> é mínima
            (norma euclidiana). Se <literal>A</literal> é de posto coluna cheio, a
            solução de mínimo quadrado, <literal>x=A\b</literal> , é unicamente
            definida (há um único <literal>x</literal> que minimiza
            <literal>norm(A*x-b)</literal>). Se <literal>A</literal>não é de posto
            coluna cheio, então a solução de mínimo quadrado não é única e
            <literal>x=A\b</literal> , em geral, não é a solução com norma mínima (a
            solução com norma mínima é <literal>x=pinv(A)*b</literal>).
        </para>
        <para>
            <literal>A.\B</literal> é a matriz com entrada
            <literal>(i,j)</literal> igual a <literal>A(i,j)\B(i,j)</literal>. Se
            <literal>A</literal> (ou <literal>B</literal>é um escalar,
            <literal>A.\B</literal> é equivalente a <literal>A*ones(B).\B</literal>
            (ou <literal>A.\(B*ones(A))</literal>
        </para>
        <para>
            <literal>A\.B</literal> é um operador sem significado predefinido.
            Pode ser usado para definir um novo operador (ver overloading) com a mesma
            precedência que * ou /.
        </para>
    </refsection>
    <refsection>
        <title>Exemplos</title>
        <programlisting role="example"><![CDATA[
A=rand(3,2);b=[1;1;1]; x=A\b; y=pinv(A)*b;  x-y
A=rand(2,3);b=[1;1]; x=A\b; y=pinv(A)*b; x-y, A*x-b, A*y-b
A=rand(3,1)*rand(1,2); b=[1;1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b
A=rand(2,1)*rand(1,3); b=[1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b

// A benchmark of several linear solvers

[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/demos/bcsstk24.rsa");

b = zeros(size(A,1),1);

tic();
res = umfpack(A,'\',b);
mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc());

tic();
res = linsolve(A,b);
mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc());

tic();
res = A\b;
mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc());
 ]]></programlisting>
    </refsection>
    <refsection>
        <title>Ver Também </title>
        <simplelist type="inline">
            <member>
                <link linkend="slash">slash</link>
            </member>
            <member>
                <link linkend="lsq">lsq</link>
            </member>
            <member>
                <link linkend="inv">inv</link>
            </member>
            <member>
                <link linkend="pinv">pinv</link>
            </member>
            <member>
                <link linkend="linsolve">linsolve</link>
            </member>
            <member>
                <link linkend="umfpack">umfpack</link>
            </member>
            <member>
                <link linkend="datafit">datafit</link>
            </member>
            <member>
                <link linkend="krondivide">kron .\.</link>
            </member>
            <member>
                <link linkend="overloading">overloading</link>
            </member>
        </simplelist>
    </refsection>
    <refsection>
        <title>Histórico</title>
        <revhistory>
            <revision>
                <revnumber>5.5.0</revnumber>
                <revremark>
                  The threshold level which switches between Gaussian Elimination with row pivoting
                  and linear least squares when computing A\B is decreased from sqrt(eps) to eps.
                </revremark>
            </revision>
        </revhistory>
    </refsection>
</refentry>
