* Bug #10273 fixed - Sparse: solve example for schol 86/12986/3
Paul BIGNIER [Tue, 22 Oct 2013 15:29:20 +0000 (17:29 +0200)]
Change-Id: I2983e8bb50e2735d1914ab0f8dcb25487c59f4da

scilab/CHANGES_5.5.X
scilab/modules/sparse/help/en_US/decomposition/spchol.xml
scilab/modules/sparse/help/fr_FR/decomposition/spchol.xml

index 37744d9..5d86cb2 100644 (file)
@@ -19,6 +19,8 @@ Scilab Bug Fixes
 
 * Bug #10234 fixed - reglin function moved from CACSD to Statistics module.
 
+* Bug #10273 fixed - spchol help page now displays an example showing how to use its output arguments.
+
 * Bug #11571 fixed - x_mdialog did not let the Look&Feel select the window size.
 
 * Bug #11680 fixed - GUI functions in Scilab 5.4.X were much slower than in Scilab 5.3.3.
index eb467b2..dafaf0d 100644 (file)
@@ -2,11 +2,11 @@
 <!--
  * 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    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
  *
  -->
@@ -25,7 +25,7 @@
             <varlistentry>
                 <term>X</term>
                 <listitem>
-                    <para>symmetric positive definite real  sparse matrix</para>
+                    <para>symmetric positive definite real sparse matrix</para>
                 </listitem>
             </varlistentry>
             <varlistentry>
     <refsection>
         <title>Description</title>
         <para>
-            <literal>[R,P] = spchol(X)</literal> produces a 
+            <literal>[R,P] = spchol(X)</literal> produces a
             lower triangular matrix <literal>R</literal> such that <literal>P*R*R'*P' = X</literal>.
         </para>
     </refsection>
     <refsection>
         <title>Examples</title>
-        <programlisting role="example"><![CDATA[ 
-X=[
-3.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  2.,  0.,  0. ;
-0.,  5.,  4.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0. ;
-0.,  4.,  5.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0. ;
-2.,  0.,  0.,  3.,  0.,  0.,  2.,  0.,  2.,  0.,  0. ;
-0.,  0.,  0.,  0. , 5.,  0.,  0.,  0.,  0.,  0.,  4. ;
-0.,  0.,  0.,  0.,  0.,  4.,  0.,  3.,  0.,  3.,  0. ;
-2.,  0.,  0.,  2.,  0.,  0.,  3.,  0.,  2.,  0.,  0. ;
-0.,  0.,  0.,  0.,  0.,  3.,  0.,  4.,  0.,  3.,  0. ;
-2.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  3.,  0.,  0. ;
-0.,  0.,  0.,  0.,  0.,  3.,  0.,  3.,  0.,  4.,  0. ;
+        <programlisting role="example"><![CDATA[
+// Factorization:
+Xfull = [
+3.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  2.,  0.,  0.
+0.,  5.,  4.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.
+0.,  4.,  5.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.
+2.,  0.,  0.,  3.,  0.,  0.,  2.,  0.,  2.,  0.,  0.
+0.,  0.,  0.,  0. , 5.,  0.,  0.,  0.,  0.,  0.,  4.
+0.,  0.,  0.,  0.,  0.,  4.,  0.,  3.,  0.,  3.,  0.
+2.,  0.,  0.,  2.,  0.,  0.,  3.,  0.,  2.,  0.,  0.
+0.,  0.,  0.,  0.,  0.,  3.,  0.,  4.,  0.,  3.,  0.
+2.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  3.,  0.,  0.
+0.,  0.,  0.,  0.,  0.,  3.,  0.,  3.,  0.,  4.,  0.
 0.,  0.,  0.,  0.,  4.,  0.,  0.,  0.,  0.,  0.,  5.];
-X=sparse(X);[R,P] = spchol(X);
+X = sparse(Xfull);
+
+[R, P] = spchol(X);
 max(P*R*R'*P'-X)
+
+// Factorization and solve with backslash operator:
+Afull = [
+2 -1  0  0  0;
+-1  2 -1  0  0;
+0 -1  2 -1  0;
+0  0 -1  2 -1;
+0  0  0 -1  2
+];
+A = sparse(Afull);
+
+[L, P] = spchol(A);
+max(P*L*L'*P'-A)
+
+n = size(A, "r"); e = (1:n)'; b = A * e;
+x = P*(L'\(L\(P'*b)));
+A*x-b
  ]]></programlisting>
     </refsection>
     <refsection role="see also">
index 55cab0c..6a74c4f 100644 (file)
@@ -2,18 +2,18 @@
 <!--
  * 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    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
  *
  -->
 <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="spchol">
     <refnamediv>
         <refname>spchol</refname>
-        <refpurpose>Factorisation de Cholesky creuse  </refpurpose>
+        <refpurpose>Factorisation de Cholesky creuse</refpurpose>
     </refnamediv>
     <refsynopsisdiv>
         <title>Séquence d'appel</title>
         <title>Paramètres</title>
         <variablelist>
             <varlistentry>
-                <term>X  </term>
+                <term>X</term>
                 <listitem>
                     <para>matrice creuse réelle symétrique et définie positive.
                     </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
-                <term>P  </term>
+                <term>P</term>
                 <listitem>
                     <para> matrice de permutation
                     </para>
                 </listitem>
             </varlistentry>
             <varlistentry>
-                <term>R  </term>
+                <term>R</term>
                 <listitem>
                     <para> facteur de Cholesky
                     </para>
     </refsection>
     <refsection>
         <title>Exemples</title>
-        <programlisting role="example"><![CDATA[ 
-X=[
-3.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  2.,  0.,  0. ;
-0.,  5.,  4.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0. ;
-0.,  4.,  5.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0. ;
-2.,  0.,  0.,  3.,  0.,  0.,  2.,  0.,  2.,  0.,  0. ;
-0.,  0.,  0.,  0. , 5.,  0.,  0.,  0.,  0.,  0.,  4. ;
-0.,  0.,  0.,  0.,  0.,  4.,  0.,  3.,  0.,  3.,  0. ;
-2.,  0.,  0.,  2.,  0.,  0.,  3.,  0.,  2.,  0.,  0. ;
-0.,  0.,  0.,  0.,  0.,  3.,  0.,  4.,  0.,  3.,  0. ;
-2.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  3.,  0.,  0. ;
-0.,  0.,  0.,  0.,  0.,  3.,  0.,  3.,  0.,  4.,  0. ;
+        <programlisting role="example"><![CDATA[
+// Factorisation:
+Xfull = [
+3.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  2.,  0.,  0.
+0.,  5.,  4.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.
+0.,  4.,  5.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.
+2.,  0.,  0.,  3.,  0.,  0.,  2.,  0.,  2.,  0.,  0.
+0.,  0.,  0.,  0. , 5.,  0.,  0.,  0.,  0.,  0.,  4.
+0.,  0.,  0.,  0.,  0.,  4.,  0.,  3.,  0.,  3.,  0.
+2.,  0.,  0.,  2.,  0.,  0.,  3.,  0.,  2.,  0.,  0.
+0.,  0.,  0.,  0.,  0.,  3.,  0.,  4.,  0.,  3.,  0.
+2.,  0.,  0.,  2.,  0.,  0.,  2.,  0.,  3.,  0.,  0.
+0.,  0.,  0.,  0.,  0.,  3.,  0.,  3.,  0.,  4.,  0.
 0.,  0.,  0.,  0.,  4.,  0.,  0.,  0.,  0.,  0.,  5.];
-X=sparse(X);[R,P] = spchol(X);
+X = sparse(Xfull);
+
+[R, P] = spchol(X);
 max(P*R*R'*P'-X)
+
+// Factorisation puis résolution avec l'opérateur '\':
+Afull = [
+2 -1  0  0  0;
+-1  2 -1  0  0;
+0 -1  2 -1  0;
+0  0 -1  2 -1;
+0  0  0 -1  2
+];
+A = sparse(Afull);
+
+[L, P] = spchol(A);
+max(P*L*L'*P'-A)
+
+n = size(A, "r"); e = (1:n)'; b = A * e;
+x = P*(L'\(L\(P'*b)));
+A*x-b
  ]]></programlisting>
     </refsection>
     <refsection role="see also">