File: lufact.xml

package info (click to toggle)
scilab 5.2.2-9
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 334,832 kB
  • ctags: 52,586
  • sloc: xml: 526,945; ansic: 223,590; fortran: 163,080; java: 56,934; cpp: 33,840; tcl: 27,936; sh: 20,397; makefile: 9,908; ml: 9,451; perl: 1,323; cs: 614; lisp: 30
file content (158 lines) | stat: -rw-r--r-- 5,654 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) XXXX-2008 - INRIA
 * 
 * This file must be used under the terms of the CeCILL.
 * This source file is licensed as described in the file COPYING, which
 * you should have received as part of this distribution.  The terms
 * are also available at    
 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 *
 -->
<refentry version="5.0-subset Scilab" xml:id="lufact" xml:lang="en"
          xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg"
          xmlns:ns5="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:db="http://docbook.org/ns/docbook">
  <info>
    <pubdate>$LastChangedDate$</pubdate>
  </info>

  <refnamediv>
    <refname>lufact</refname>

    <refpurpose>fatoração LU esparsa</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <title>Seqüência de Chamamento</title>

    <synopsis>[hand,rk]=lufact(A,prec)</synopsis>
  </refsynopsisdiv>

  <refsection>
    <title>Parâmetros</title>

    <variablelist>
      <varlistentry>
        <term>A</term>

        <listitem>
          <para>matriz quadrada esparsa </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>hand</term>

        <listitem>
          <para>manipulador para fatores LU esparsos </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>rk</term>

        <listitem>
          <para>inteiro (posto de A) </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>prec</term>

        <listitem>
          <para>vetor de tamanho 2 <literal>prec=[eps,reps]</literal>
          fornecendo os limiares absoluto e relativo.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsection>

  <refsection>
    <title>Descrição</title>

    <para><literal>[hand,rk]=lufact(A)</literal> realiza a fatoração LU da
    matriz esparsa <literal>A</literal>. <literal>hand</literal> (sem
    exibição) é usado por <literal>lusolve</literal> (para resolver sistemas
    lineares) e <literal>luget</literal> (para retirar os fatores).
    <literal>hand</literal> deve ser limpo pelo comando:
    <literal>ludel(hand)</literal>;</para>

    <para>A matriz A não precisa ser de posto cheio, mas deve ser quadrada
    (desde que A é assumida como sendo esparsa, pode-se adicionar 0, se
    necessário, para quadrá-la). </para>

    <variablelist>
      <varlistentry>
        <term>eps :</term>

        <listitem>
          <para>a magnitude absoluta que um elemento deve ter para ser
          considerado um candidato a pivô, exceto como último recurso. Este
          número deve ser posto de modo a ser significantemente menor que o
          menor elemento da diagonal que se espera estar localizado na matriz.
          O valor padrão é <literal>%eps</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>reps :</term>

        <listitem>
          <para>Este número determina qual será o limiar relativo do pivô.
          Deve estar entre 0 e 1. Se for 1, então o método de pivoteamento
          torna-se pivotação completa, que é muito lento e tende a completar a
          matriz. Se o número acertado é próximo de 0, o método de
          pivoteamento torna-se estritamente de Markowitz, sem limiar. O
          limiar de pivô é usado para eliminar candidatos a pivô que poderiam
          causar crescimento excessivo de elementos se fossem usados.
          Crescimento de elementos é a causa dos erros de arredondamento.
          Crescimento de elementos ocorre mesmo em matrizes bem condicionadas.
          Definir o reps como um número grande reduzirá o crescimento de
          elementos e os erros de arredondamento, mas colocá-lo muito grande
          aumentará muito o tempo de execução e resultará num grande número de
          preenchimentos. Se isto ocorrer, a precisão pode ficar prejudicada
          por causa do grande número de operações requeridas na matriz devido
          ao grande número de preenchimentos. 0.001 parece um bom valor, e é o
          valor default. O default é escolhido fornecendo-se um valor maior
          que 1 ou menor que ou igual a 0. Este valor deve ser aumentado e a
          matriz resolvida se o crescimento for excessivo. Mudar o limiar do
          pivô não melhora o desempenho em matrizes onde o crescimento é
          baixo, como é geralmente o caso de matrizes mal-condicionadas. reps
          foi escolhido para uso com matrizes quase diagonalmente dominantes
          como uma matriz de admissão de nó e nó modificado. Para estas
          matrizes, geralmente o melhor é usar pivotação diagonal. Para
          matrizes sem uma diagonal forte, geralmente é melhor usar um limiar
          maior, como 0.01 ou 0.1.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsection>

  <refsection>
    <title>Exemplos</title>

    <programlisting role="example"><![CDATA[ 
a=rand(5,5);b=rand(5,1);A=sparse(a);
[h,rk]=lufact(A);
x=lusolve(h,b);a*x-b
ludel(h)
 ]]></programlisting>
  </refsection>

  <refsection>
    <title>Ver Também</title>

    <simplelist type="inline">
      <member><link linkend="sparse">sparse</link></member>

      <member><link linkend="lusolve">lusolve</link></member>

      <member><link linkend="luget">luget</link></member>
    </simplelist>
  </refsection>
</refentry>