Reorganization
Allan Cornet [Tue, 29 Aug 2006 13:55:44 +0000 (13:55 +0000)]
differential_equations module

move files routines/interf
move macro
move help

69 files changed:
scilab/Scilab.sln
scilab/libs/LibScilab/DllmainLibscilab.c
scilab/macros/buildmacros.sce
scilab/modules/core/sci_gateway/fundef
scilab/modules/differential_equations/etc/differential_equations.start
scilab/modules/differential_equations/help/eng/dasrt.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/dassl.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/feval.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/impl.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/int2d.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/int3d.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/intg.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/ode.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/ode_discrete.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/ode_optional_output.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/ode_root.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/odedc.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/eng/odeoptions.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/bvode.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/dasrt.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/dassl.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/feval.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/impl.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/int2d.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/int3d.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/intg.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/ode.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/ode_discrete.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/ode_optional_output.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/ode_root.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/odedc.xml [new file with mode: 0644]
scilab/modules/differential_equations/help/fr/odeoptions.xml [new file with mode: 0644]
scilab/modules/differential_equations/macros/buildmacros.sce [new file with mode: 0644]
scilab/modules/differential_equations/macros/odeoptions.sci [moved from scilab/macros/util/odeoptions.sci with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations1.c [moved from scilab/routines/interf/gw_differential_equations1.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations2.c [moved from scilab/routines/interf/gw_differential_equations2.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations3.c [moved from scilab/routines/interf/gw_differential_equations3.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations4.c [moved from scilab/routines/interf/gw_differential_equations4.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations5.c [moved from scilab/routines/interf/gw_differential_equations5.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/gw_differential_equations6.c [moved from scilab/routines/interf/gw_differential_equations6.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_bvode.c [moved from scilab/routines/interf/sci_bvode.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_feval.c [moved from scilab/routines/interf/sci_feval.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_int2d.c [moved from scilab/routines/interf/sci_int2d.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_int3d.c [moved from scilab/routines/interf/sci_int3d.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_intg.c [moved from scilab/routines/interf/sci_intg.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/c/sci_ode.c [moved from scilab/routines/interf/sci_ode.c with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations1.fundef [moved from scilab/routines/interf/ode.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations2.fundef [moved from scilab/routines/interf/imp.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations3.fundef [moved from scilab/routines/interf/odc.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations4.fundef [moved from scilab/routines/interf/def.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations5.fundef [moved from scilab/routines/interf/feval.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/differential_equations6.fundef [moved from scilab/routines/interf/bva.fundef with 100% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_bvode.f [moved from scilab/routines/interf/sci_bvode.f with 99% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_dasrt.f [moved from scilab/routines/interf/sci_dasrt.f with 99% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_dassl.f [moved from scilab/routines/interf/sci_dassl.f with 96% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_feval.f [moved from scilab/routines/interf/sci_feval.f with 99% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_impl.f [moved from scilab/routines/interf/sci_impl.f with 96% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_ode.f [moved from scilab/routines/interf/sci_ode.f with 96% similarity]
scilab/modules/differential_equations/sci_gateway/fortran/sci_odedc.f [moved from scilab/routines/interf/sci_odedc.f with 99% similarity]
scilab/modules/differential_equations/src/c/dassl.c [moved from scilab/routines/interf/dassl.c with 97% similarity]
scilab/modules/differential_equations/src/c/differential_equations.vcproj [new file with mode: 0644]
scilab/modules/differential_equations/src/fortran/differential_equations_f.vfproj [new file with mode: 0644]
scilab/modules/differential_equations/src/fortran/int2d.f [moved from scilab/routines/interf/int2d.f with 99% similarity]
scilab/modules/differential_equations/src/fortran/int3d.f [moved from scilab/routines/interf/int3d.f with 99% similarity]
scilab/modules/differential_equations/src/fortran/intg.f [moved from scilab/routines/interf/intg.f with 98% similarity]
scilab/routines/interf/interf.vcproj
scilab/routines/interf/interf_f/interf_f.vfproj
scilab/routines/interf/matimp.f [deleted file]
scilab/scilab.start

index 6c9c164..06fbecd 100644 (file)
@@ -76,8 +76,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibScilab", "libs\LibScilab
        ProjectSection(ProjectDependencies) = postProject
                {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923} = {69296D00-0DE1-4F4B-B0CE-FE4F3CB43923}
                {798D5602-CF39-4B2F-B780-0EF282E7CEA0} = {798D5602-CF39-4B2F-B780-0EF282E7CEA0}
-               {E3A01BE7-815F-4A06-9F0A-C95E80873966} = {E3A01BE7-815F-4A06-9F0A-C95E80873966}
-               {C8C13A46-DEB8-44AA-8BF8-C9BBC7FA0B46} = {C8C13A46-DEB8-44AA-8BF8-C9BBC7FA0B46}
+               {28E4E9CA-3EEC-43EE-9F15-56259C6677B8} = {28E4E9CA-3EEC-43EE-9F15-56259C6677B8}
+               {F0190B5D-FB21-47A2-99AC-06627CDD0F8A} = {F0190B5D-FB21-47A2-99AC-06627CDD0F8A}
                {959384FC-016C-4B01-B848-1B18D26B6CC4} = {959384FC-016C-4B01-B848-1B18D26B6CC4}
                {3735EFF9-925B-45B1-82CF-762658E69E70} = {3735EFF9-925B-45B1-82CF-762658E69E70}
                {D407D7F1-A4D4-40F2-A5A1-D291B5D28C35} = {D407D7F1-A4D4-40F2-A5A1-D291B5D28C35}
@@ -85,6 +85,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibScilab", "libs\LibScilab
                {B0817AEC-2DA0-4C95-9599-4E01F2B547CD} = {B0817AEC-2DA0-4C95-9599-4E01F2B547CD}
                {FAF6A7EB-8A36-4278-B34E-34EA89E55304} = {FAF6A7EB-8A36-4278-B34E-34EA89E55304}
                {F01314E9-62D5-4A6E-891B-0F9E16B838E2} = {F01314E9-62D5-4A6E-891B-0F9E16B838E2}
+               {E3A01BE7-815F-4A06-9F0A-C95E80873966} = {E3A01BE7-815F-4A06-9F0A-C95E80873966}
                {4467FBE5-45A6-4CA7-AD8C-48419B656137} = {4467FBE5-45A6-4CA7-AD8C-48419B656137}
                {34F953E3-9A2C-4359-A8C5-41CEBD0ECE45} = {34F953E3-9A2C-4359-A8C5-41CEBD0ECE45}
                {3FF921DF-3084-4F09-BD14-362F60B0D037} = {3FF921DF-3084-4F09-BD14-362F60B0D037}
@@ -137,6 +138,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibScilab", "libs\LibScilab
                {566E524B-D327-4416-A865-9C83503FAB7B} = {566E524B-D327-4416-A865-9C83503FAB7B}
                {4FC72D4A-80EE-4B1A-8724-0201C1A35621} = {4FC72D4A-80EE-4B1A-8724-0201C1A35621}
                {C2EDD447-BB60-41A1-973B-8213FCA9ECD4} = {C2EDD447-BB60-41A1-973B-8213FCA9ECD4}
+               {C8C13A46-DEB8-44AA-8BF8-C9BBC7FA0B46} = {C8C13A46-DEB8-44AA-8BF8-C9BBC7FA0B46}
                {80C0F142-184B-4E08-A8EE-5E71437CF904} = {80C0F142-184B-4E08-A8EE-5E71437CF904}
                {B7A0273E-8E71-4663-8497-0895945ED54D} = {B7A0273E-8E71-4663-8497-0895945ED54D}
                {B3805031-D315-4275-9D1D-5C43F8E92616} = {B3805031-D315-4275-9D1D-5C43F8E92616}
@@ -521,8 +523,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linear_algebra", "modules\l
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "special_functions", "modules\special_functions\src\c\special_functions.vcproj", "{C8C13A46-DEB8-44AA-8BF8-C9BBC7FA0B46}"
        ProjectSection(ProjectDependencies) = postProject
-               {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E} = {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E}
                {3170E4C2-1173-4264-A222-7EE8CCB3DDF7} = {3170E4C2-1173-4264-A222-7EE8CCB3DDF7}
+               {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E} = {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E}
        EndProjectSection
 EndProject
 Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "special_functions_f", "modules\special_functions\src\fortran\special_functions_f.vfproj", "{E3A01BE7-815F-4A06-9F0A-C95E80873966}"
@@ -530,6 +532,17 @@ Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "special_functions_f", "modu
                {3170E4C2-1173-4264-A222-7EE8CCB3DDF7} = {3170E4C2-1173-4264-A222-7EE8CCB3DDF7}
        EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "differential_equations", "modules\differential_equations\src\c\differential_equations.vcproj", "{F0190B5D-FB21-47A2-99AC-06627CDD0F8A}"
+       ProjectSection(ProjectDependencies) = postProject
+               {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E} = {6A84AD8C-BA18-4A3F-9C72-EC3DF0939E9E}
+               {3170E4C2-1173-4264-A222-7EE8CCB3DDF7} = {3170E4C2-1173-4264-A222-7EE8CCB3DDF7}
+       EndProjectSection
+EndProject
+Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "differential_equations_f", "modules\differential_equations\src\fortran\differential_equations_f.vfproj", "{28E4E9CA-3EEC-43EE-9F15-56259C6677B8}"
+       ProjectSection(ProjectDependencies) = postProject
+               {3170E4C2-1173-4264-A222-7EE8CCB3DDF7} = {3170E4C2-1173-4264-A222-7EE8CCB3DDF7}
+       EndProjectSection
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Win32 = Debug|Win32
@@ -910,6 +923,14 @@ Global
                {E3A01BE7-815F-4A06-9F0A-C95E80873966}.Debug|Win32.Build.0 = Debug|Win32
                {E3A01BE7-815F-4A06-9F0A-C95E80873966}.Release|Win32.ActiveCfg = Release|Win32
                {E3A01BE7-815F-4A06-9F0A-C95E80873966}.Release|Win32.Build.0 = Release|Win32
+               {F0190B5D-FB21-47A2-99AC-06627CDD0F8A}.Debug|Win32.ActiveCfg = Debug|Win32
+               {F0190B5D-FB21-47A2-99AC-06627CDD0F8A}.Debug|Win32.Build.0 = Debug|Win32
+               {F0190B5D-FB21-47A2-99AC-06627CDD0F8A}.Release|Win32.ActiveCfg = Release|Win32
+               {F0190B5D-FB21-47A2-99AC-06627CDD0F8A}.Release|Win32.Build.0 = Release|Win32
+               {28E4E9CA-3EEC-43EE-9F15-56259C6677B8}.Debug|Win32.ActiveCfg = Debug|Win32
+               {28E4E9CA-3EEC-43EE-9F15-56259C6677B8}.Debug|Win32.Build.0 = Debug|Win32
+               {28E4E9CA-3EEC-43EE-9F15-56259C6677B8}.Release|Win32.ActiveCfg = Release|Win32
+               {28E4E9CA-3EEC-43EE-9F15-56259C6677B8}.Release|Win32.Build.0 = Release|Win32
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index c9ffd9c..1c34eed 100644 (file)
@@ -40,6 +40,7 @@
 
 #pragma comment(lib,"../../libs/control_f.lib")
 
+#pragma comment(lib,"../../libs/differential_equations_f.lib")
 #pragma comment(lib,"../../libs/special_functions_f.lib")
 #pragma comment(lib,"../../libs/linear_algebra_f.lib")
 #pragma comment(lib,"../../libs/elementaries_functions_f.lib")
index bd75e6a..279cfce 100644 (file)
@@ -10,6 +10,7 @@ CurrentDirectory=pwd();
  "tdcs",
   ];
  
+ Directories=[Directories;"SCI/modules/differential_equations/macros"];        
  Directories=[Directories;"SCI/modules/core/macros"];        
  Directories=[Directories;"SCI/modules/linear_algebra/macros"];        
  Directories=[Directories;"SCI/modules/elementaries_functions/macros"];        
index 49d6d0b..6b13e07 100644 (file)
@@ -30,7 +30,7 @@
 #include "../../optimization/sci_gateway/optim.fundef"
 
 #define  IN_matode  12
-#include "../../../../routines/interf/ode.fundef"  
+#include "../../differential_equations/sci_gateway/differential_equations1.fundef"  
 
 #define  IN_matsys  13  
 #include "core.fundef"
@@ -71,7 +71,7 @@
 #include "../../gui/sci_gateway/gui.fundef"  
 
 #define  IN_matimp  26
-#include "../../../../routines/interf/imp.fundef"        
+#include "../../differential_equations/sci_gateway/differential_equations2.fundef"  
 
 #define  IN_spelm  27
 #include "../../sparse/sci_gateway/sparse.fundef"  
 #include "../../cacsd/sci_gateway/slicot.fundef"
 
 #define  IN_matodc  29  
-#include "../../../../routines/interf/odc.fundef"      
+#include "../../differential_equations/sci_gateway/differential_equations3.fundef"  
 
 #define  IN_intdef  30  
-#include "../../../../routines/interf/def.fundef"      
+#include "../../differential_equations/sci_gateway/differential_equations4.fundef"  
 
 #define  IN_feval  31
-#include "../../../../routines/interf/feval.fundef"      
+#include "../../differential_equations/sci_gateway/differential_equations5.fundef"  
 
 #define  IN_bva  32
-#include "../../../../routines/interf/bva.fundef"      
+#include "../../differential_equations/sci_gateway/differential_equations6.fundef"  
 
 /* 33 <FREE> free position may be used */  
 
index a768607..4bda3a5 100644 (file)
@@ -3,7 +3,7 @@
 // Copyright INRIA 2006\r
 // ====================================================================\r
 //Load  functions librarie\r
-//load('SCI/modules/differential_equations/macros/lib');\r
+load('SCI/modules/differential_equations/macros/lib');\r
 // ====================================================================\r
 //add help chapter\r
 global LANGUAGE\r
diff --git a/scilab/modules/differential_equations/help/eng/dasrt.xml b/scilab/modules/differential_equations/help/eng/dasrt.xml
new file mode 100644 (file)
index 0000000..5953e0f
--- /dev/null
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>dasrt</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>June 1993</DATE>
+  <SHORT_DESCRIPTION name="dasrt"> DAE solver with zero crossing</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[r,nn,[,hd]]=dasrt(x0,t0,t [,atol,[rtol]],res [,jac],ng, surf [,info] [,hd])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>x0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: is either <VERB>y0</VERB> (<VERB>ydot0</VERB> is estimated by
+  <VERB>dassl</VERB> with zero as first estimate) or the matrix
+  <VERB>[y0 ydot0]</VERB>.  <VERB>g(t,y0,ydot0)</VERB> must be equal
+  to zero. If you only know an estimate  of <VERB>ydot0</VERB> set
+  <VERB>info(7)=1</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>y0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector  of initial conditions.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ydot0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> (may be an estimate).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real number is the initial instant.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or vector. Gives instants for which you want the
+  solution. Note that you can get solution at each dassl's step
+  point by setting <VERB>info(2)=1</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nn</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a vector with two entries <VERB>[times num]</VERB>
+  <VERB>times</VERB> is the value of the time at which the surface is
+  crossed, <VERB>num</VERB> is the number of the crossed surface</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalars or column vectors of same size as
+  <VERB>y</VERB>. <VERB>atol,rtol</VERB> give respectively  absolute
+  and relative error tolerances of solution.  If vectors the
+  tolerances are specified for each component of <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value of <VERB>g(t,y,ydot)</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <P>
+    : Its calling sequence must be <VERB>[r,ires]=res(t,y,ydot)</VERB>
+  and <VERB>res</VERB> must return the residue
+  <VERB>r=g(t,y,ydot)</VERB>  and error flag
+  <VERB>ires</VERB>. <VERB>ires = 0</VERB> if <VERB>res</VERB>
+  succeeds to compute <VERB>r</VERB>, <VERB>=-1</VERB>  if residue is
+  locally not defined for <VERB>(t,y,ydot)</VERB>, <VERB>=-2</VERB> if
+  parameters are out of admissible range. </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows:</SP>
+                <VERBATIM>
+<![CDATA[
+list(res,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>res</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=res(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>res</VERB> still returns <VERB>r=g(t,y,ydot)</VERB> as a function of <VERB>(t,y,ydot,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine (see source code of <VERB>fresd.f</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of <VERB>dg/dy+cj*dg/dydot</VERB> for a given value of parameter <VERB>cj</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>r=jac(t,y,ydot,cj)</VERB> and the <VERB>jac</VERB> function must return <VERB>r=dg(t,y,ydot)/dy+cj*dg(t,y,ydot)/dydot</VERB> where <VERB>cj</VERB> is a real scalar</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(jac,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>jac</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=jac(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>jac</VERB> still returns <VERB>dg/dy+cj*dg/dydot</VERB> as a function of <VERB>(t,y,ydot,cj,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>jacdd.f</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>surf</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of the column vector <VERB>surf(t,y)</VERB> with ng components. Each component defines a surface.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>surf(t,y)</VERB></SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(surf,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>surf</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=surf(t,y,x1,x2,...)
+   ]]>
+                </VERBATIM>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>fsurfd.f</VERB>) in directory <VERB>SCDIR/default</VERB></SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>info</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: list which contains <VERB>7</VERB> elements, default value is list([],0,[],[],[],0,0)</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(1)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum time for which <VERB>g</VERB> is allowed  to be evaluated or an empty matrix <VERB>[]</VERB> if no limits imposed for time.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(2)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: flag which indicates if <VERB>dassl</VERB> returns its intermediate  computed values (<VERB>flag=1</VERB>) or only the user specified time point  values (<VERB>flag=0</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(3)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: <VERB>2</VERB> components vector which give the definition <VERB>[ml,mu]</VERB> of band  matrix computed by <VERB>jac</VERB>; <VERB>r(i - j + ml + mu + 1,j) = &quot;dg(i)/dy(j)+cj*dg(i)/dydot(j)&quot;</VERB>.  If <VERB>jac</VERB> returns a full matrix set <VERB>info(3)=[]</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(4)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum step size. Set <VERB>info(4)=[]</VERB> if no  limitation.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(5)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the initial step size. Set <VERB>info(4)=[]</VERB> if  not specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(6)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(6)=1</VERB> if the solution is known to be non negative,  else set <VERB>info(6)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(7)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(7)=1</VERB> if <VERB>ydot0</VERB> is just an estimation, <VERB>info(7)=0</VERB> if <VERB>g(t0,y0,ydot0)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>hd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector which allows to store the <VERB>dassl</VERB> context and to  resume integration</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>r</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real matrix . Each column is the vector [t;x(t);xdot(t)] where t is time index for which the solution had been computed</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the implicit differential equation</P>
+    <VERBATIM>
+<![CDATA[
+    g(t,y,ydot)=0
+    y(t0)=y0  and   ydot(t0)=ydot0
+   ]]>
+    </VERBATIM>
+    <P>
+    Returns the surface crossing instants and the number of the
+    surface reached in <VERB>nn</VERB>.</P>
+    <P>
+    Detailed examples can be found in SCIDIR/tests/dassldasrt.tst</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+//dy/dt = ((2*log(y)+8)/t -5)*y,  y(1) = 1,  1<=t<=6
+//g1 = ((2*log(y)+8)/t - 5)*y 
+//g2 = log(y) - 2.2491 
+y0=1;t=2:6;t0=1;y0d=3;
+atol=1.d-6;rtol=0;ng=2;
+
+deff('[delta,ires]=res1(t,y,ydot)','ires=0;delta=ydot-((2*log(y)+8)/t-5)*y')
+deff('[rts]=gr1(t,y)','rts=[((2*log(y)+8)/t-5)*y;log(y)-2.2491]')
+
+[yy,nn]=dasrt([y0,y0d],t0,t,atol,rtol,res1,ng,gr1);
+//(Should return nn=[2.4698972 2])
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>impl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>fort</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/dassl.xml b/scilab/modules/differential_equations/help/eng/dassl.xml
new file mode 100644 (file)
index 0000000..52e5e14
--- /dev/null
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>dassl</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>June 1993</DATE>
+  <SHORT_DESCRIPTION name="dassl"> differential algebraic equation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[r [,hd]]=dassl(x0,t0,t [,atol,[rtol]],res [,jac] [,info] [,hd])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>x0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: is either <VERB>y0</VERB> (<VERB>ydot0</VERB> is estimated by
+    <VERB>dassl</VERB> with zero as first estimate) or the matrix
+    <VERB>[y0 ydot0]</VERB>.  <VERB>g(t,y0,ydot0)</VERB> must be equal
+    to zero. If you only know an estimate  of <VERB>ydot0</VERB> set
+    <VERB>info(7)=1</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>y0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector  of initial conditions.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ydot0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> (may be an estimate).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real number is the initial instant.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or vector. Gives instants for which you want the
+  solution. Note that you can get solution at each dassl's step
+  point by setting <VERB>info(2)=1</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalars or column vectors of same size as <VERB>y</VERB>. <VERB>atol,rtol</VERB> give respectively  absolute and relative error tolerances of solution.  If vectors the tolerances are specified for each component of <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value of <VERB>g(t,y,ydot)</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <P>
+    : Its calling sequence must be <VERB>[r,ires]=res(t,y,ydot)</VERB>
+  and <VERB>res</VERB> must return the residue
+  <VERB>r=g(t,y,ydot)</VERB>  and error flag
+  <VERB>ires</VERB>. <VERB>ires = 0</VERB> if <VERB>res</VERB>
+  succeeds to compute <VERB>r</VERB>, <VERB>=-1</VERB>  if residue is
+  locally not defined for <VERB>(t,y,ydot)</VERB>, <VERB>=-2</VERB> if
+  parameters are out of admissible range. </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows:</SP>
+                <VERBATIM>
+<![CDATA[
+list(res,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>res</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=res(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>res</VERB> still returns <VERB>r=g(t,y,ydot)</VERB> as a function of <VERB>(t,y,ydot,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine (see source code of of <VERB>Ex-dassl.f</VERB> in routines/defaut/).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of <VERB>dg/dy+cj*dg/dydot</VERB> for a given value of parameter <VERB>cj</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>r=jac(t,y,ydot,cj)</VERB> and the <VERB>jac</VERB> function must return <VERB>r=dg(t,y,ydot)/dy+cj*dg(t,y,ydot)/dydot</VERB> where <VERB>cj</VERB> is a real scalar</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(jac,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>jac</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=jac(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>jac</VERB> still returns <VERB>dg/dy+cj*dg/dydot</VERB> as a function of <VERB>(t,y,ydot,cj,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>Ex-dassl.f</VERB> in routines/defaut/).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>info</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: list which contains <VERB>7</VERB> elements, default value is list([],0,[],[],[],0,0);</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(1)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum time for which <VERB>g</VERB> is allowed  to be evaluated or an empty matrix <VERB>[]</VERB> if no limits imposed for time.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(2)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: flag which indicates if <VERB>dassl</VERB> returns its intermediate  computed values (<VERB>flag=1</VERB>) or only the user specified time point  values (<VERB>flag=0</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(3)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: <VERB>2</VERB> components vector which give the definition <VERB>[ml,mu]</VERB> of band  matrix computed by <VERB>jac</VERB>; <VERB>r(i - j + ml + mu + 1,j) = &quot;dg(i)/dy(j)+cj*dg(i)/dydot(j)&quot;</VERB>.  If <VERB>jac</VERB> returns a full matrix set <VERB>info(3)=[]</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(4)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum step size. Set <VERB>info(4)=[]</VERB> if no  limitation.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(5)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the initial step size. Set <VERB>info(4)=[]</VERB> if  not specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(6)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(6)=1</VERB> if the solution is known to be non negative,  else set <VERB>info(6)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(7)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(7)=1</VERB> if <VERB>ydot0</VERB> is just an estimation, <VERB>info(7)=0</VERB> if <VERB>g(t0,y0,ydot0)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>hd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector which allows to store the <VERB>dassl</VERB> context and to  resume integration</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>r</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real matrix . Each column is the vector [t;x(t);xdot(t)] where t is time index for which the solution had been computed</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the implicit differential equation</P>
+    <VERBATIM>
+<![CDATA[
+    g(t,y,ydot)=0
+    y(t0)=y0  and   ydot(t0)=ydot0
+   ]]>
+    </VERBATIM>
+    <P>
+    Detailed examples are given in SCIDIR/tests/dassldasrt.tst</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+ deff('[r,ires]=chemres(t,y,yd)',[
+         'r(1)=-0.04*y(1)+1d4*y(2)*y(3)-yd(1);';
+         'r(2)=0.04*y(1)-1d4*y(2)*y(3)-3d7*y(2)*y(2)-yd(2);'
+         'r(3)=y(1)+y(2)+y(3)-1;'
+         'ires=0']);
+ deff('[pd]=chemjac(x,y,yd,cj)',[
+         'pd=[-0.04-cj , 1d4*y(3)               , 1d4*y(2);';
+         '0.04    ,-1d4*y(3)-2*3d7*y(2)-cj ,-1d4*y(2);';
+         '1       , 1                      , 1       ]'])
+
+y0=[1;0;0];
+yd0=[-0.04;0.04;0];
+t=[1.d-5:0.02:.4,0.41:.1:4,40,400,4000,40000,4d5,4d6,4d7,4d8,4d9,4d10];
+
+
+y=dassl([y0,yd0],0,t,chemres);
+
+info=list([],0,[],[],[],0,0);
+info(2)=1;
+y=dassl([y0,yd0],0,4d10,chemres,info);
+y=dassl([y0,yd0],0,4d10,chemres,chemjac,info);
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dasrt</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>impl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>fort</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/feval.xml b/scilab/modules/differential_equations/help/eng/feval.xml
new file mode 100644 (file)
index 0000000..a028dbf
--- /dev/null
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>feval</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="feval"> multiple evaluation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[z]=feval(x,y,f)  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>[z]=feval(x,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>x,y</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: two vectors</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: function or character string (for Fortran or C call)</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Multiple evaluation of a function for one or two arguments 
+    of vector type :
+  </P>
+    <DESCRIPTION_INDENT>
+      <DESCRIPTION_ITEM label="z=feval(x,f)">
+        <SP>returns the vector <VERB>z</VERB> defined by <VERB>z(i)=f(x(i))</VERB></SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="z=feval(x,y,f)">
+        <SP>returns the matrix <VERB>z</VERB> such as <VERB>z(i,j)=f(x(i),y(j))</VERB></SP>
+      </DESCRIPTION_ITEM>
+    </DESCRIPTION_INDENT>
+    <P><VERB>f</VERB> is an external (function or routine) accepting
+    on one or two  arguments which are supposed to be real.
+    The result returned by <VERB>f</VERB> can be real or complex. 
+    In case of a Fortran call, the function <VERB> 'f' </VERB> must be defined 
+    in the subroutine <VERB>ffeval.f</VERB> (in directory <VERB>SCIDIR/routines/default</VERB>)</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+deff('[z]=f(x,y)','z=x^2+y^2');
+feval(1:10,1:5,f)
+deff('[z]=f(x,y)','z=x+%i*y');
+feval(1:10,1:5,f)
+feval(1:10,1:5,'parab')   //See ffeval.f file
+feval(1:10,'parab')
+// For dynamic link (see example ftest in ffeval.f)
+// you can use the link command (the parameters depend on the machine):
+// unix('make ftest.o');link('ftest.o','ftest); feval(1:10,1:5,'ftest') 
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>evstr</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>horner</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>execstr</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/impl.xml b/scilab/modules/differential_equations/help/eng/impl.xml
new file mode 100644 (file)
index 0000000..cda3546
--- /dev/null
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>impl</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="impl"> differential algebraic equation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=impl([type],y0,ydot0,t0,t [,atol, [rtol]],res,adda [,jac])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0,ydot0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vectors or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector (times at which the solution is computed).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res,adda</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: externals (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>type</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: string <VERB>'adams'</VERB> or <VERB>'stiff'</VERB></SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or real vector of the same size as  as <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the linear implicit differential equation</P>
+    <P>
+    A(t,y) dy/dt=g(t,y), y(t0)=y0</P>
+    <P><VERB>t0</VERB> is the initial instant, <VERB>y0</VERB> is the vector of initial conditions
+    Vector <VERB>ydot0</VERB> of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> must
+    also be given.
+    r
+    The input <VERB>res</VERB> is an external i.e. a function with
+    specified syntax, or the name a Fortran subroutine or a C function 
+    (character string) with specified calling sequence or a list.</P>
+    <P>
+    If <VERB>res</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+r = res(t,y,ydot)
+   ]]>
+    </VERBATIM>
+    <P>
+    where <VERB>t</VERB> is a real scalar (time) and <VERB>y</VERB> and <VERB>ydot</VERB> are
+    real vector (state and derivative of the state). 
+    This function must return <VERB>r=g(t,y)-A(t,y)*ydot</VERB>.</P>
+    <P>
+    If <VERB>res</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>res</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+    <P>
+    The input <VERB>adda</VERB> is also an external.</P>
+    <P>
+    If <VERB>adda</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+r = adda(t,y,p)
+   ]]>
+    </VERBATIM>
+    <P>
+    and it must return <VERB>r=A(t,y)+p</VERB> where <VERB>p</VERB> is a matrix to be
+    added to <VERB>A(t,y)</VERB>.</P>
+    <P>
+    If <VERB>adda</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>adda</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+    <P>
+    The input <VERB>jac</VERB> is also an external.</P>
+    <P>
+    If <VERB>jac</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+j = jac(t,y,ydot)
+   ]]>
+    </VERBATIM>
+    <P>
+    and it must return the Jacobian of <VERB>r=g(t,y)-A(t,y)*ydot</VERB> with
+    respect to <VERB>y</VERB>.</P>
+    <P>
+    If <VERB>jac</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>jac</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+y=impl([1;0;0],[-0.04;0.04;0],0,0.4,'resid','aplusp');
+// Using hot restart 
+//[x1,w,iw]=impl([1;0;0],[-0.04;0.04;0],0,0.2,'resid','aplusp');
+// hot start from previous call 
+//[x1]=impl([1;0;0],[-0.04;0.04;0],0.2,0.4,'resid','aplusp',w,iw);
+//maxi(abs(x1-x))
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/int2d.xml b/scilab/modules/differential_equations/help/eng/int2d.xml
new file mode 100644 (file)
index 0000000..3b5fa4b
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>int2d</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="int2d"> definite 2D integral by quadrature and cubature method</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[I,err]=int2d(X,Y,f [,params])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>X</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 3 by N array containing the abscissae of the vertices   of the N triangles.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Y</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 3 by N array containing the ordinates of the vertices   of the N triangles.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string) defining the integrand <VERB>f(u,v)</VERB>;</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>params</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector <VERB>[tol, iclose, maxtri, mevals, iflag]</VERB>. default value is <VERB>[1.d-10, 1, 50, 4000, 1]</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>tol</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:the desired bound on the error.  If <VERB>iflag=0</VERB>, <VERB>tol</VERB> is interpreted as a bound on the relative error; if <VERB>iflag=</VERB>1, the bound is on the absolute error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>iclose</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:an integer parameter that determines the selection of LQM0 or LQM1 methods.  If <VERB>iclose=1</VERB> then LQM1 is used. Any other value of <VERB>iclose</VERB> causes LQM0 to be used. LQM0 uses function values only at interior points of the triangle.  LQM1 is usually more accurate than LQM0 but involves evaluating the integrand at more points including some on the boundary of the triangle.  It will usually be better to use LQM1 unless the integrand has singularities on the boundary of the triangle.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>maxtri</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:the maximum number of triangles in the final triangulation of the region</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>mevals</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: the maximum number of function evaluations to be allowed.  This number will be effective in limiting the computation only if it is less than 94*<VERB>maxtri</VERB>  when LQM1 is specified or 56*<VERB>maxtri</VERB> when LQM0 is specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>iflag</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>I</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the integral value</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>err</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the estimated error</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>int2d</VERB> computes the two-dimensional integral of a
+    function <VERB>f</VERB> over a region consisting of <VERB>n</VERB> triangles.
+    A total error estimate is obtained and compared with a
+    tolerance - <VERB>tol</VERB> - that is provided as input to the subroutine.
+    The error tolerance is treated as either relative or absolute
+    depending on the input value of <VERB>iflag</VERB>.  A 'Local Quadrature
+    Module' is applied to each input triangle and estimates of the
+    total integral and the total error are computed.  The local
+    quadrature module is either subroutine LQM0 or subroutine
+    LQM1 and the choice between them is determined by the
+    value of the input variable <VERB>iclose</VERB>.</P>
+    <P>
+    If the total error estimate exceeds the tolerance, the triangle
+    with the largest absolute error is divided into two triangles
+    by a median to its longest side.  The local quadrature module
+    is then applied to each of the subtriangles to obtain new
+    estimates of the integral and the error.  This process is
+    repeated until either (1) the error tolerance is satisfied,
+    (2) the number of triangles generated exceeds the input
+    parameter <VERB>maxtri</VERB>, (3) the number of integrand evaluations
+    exceeds the input parameter <VERB>mevals</VERB>, or (4) the function
+    senses that roundoff error is beginning to contaminate
+    the result.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+X=[0,0;1,1;1,0];
+Y=[0,0;0,1;1,1];
+deff('z=f(x,y)','z=cos(x+y)')
+[I,e]=int2d(X,Y,f)
+// computes the integrand over the square [0 1]x[0 1]
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>intc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>int3d</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intg</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>mesh2d</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHOR>Fortran routine twodq Authors: Kahaner,D.K.,N.B.S., Rechard,O.W.,N.B.S.,; Barnhill,Robert,Univ. of UTAH</AUTHOR>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/int3d.xml b/scilab/modules/differential_equations/help/eng/int3d.xml
new file mode 100644 (file)
index 0000000..f860a67
--- /dev/null
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>int3d</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="int3d"> definite 3D integral by quadrature and cubature method</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[result,err]=int3d(X,Y,Z,f [,nf[,params]])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>X</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the abscissae of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Y</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the ordinates of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Z</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the third coordinates of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string) defining the integrand <VERB>f(xyz,nf)</VERB>, where <VERB>xyz</VERB> is the vector of a point coordinates and nf the number functions</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nf</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the number of function to integate (default is 1)</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>params</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector <VERB>[minpts, maxpts, epsabs, epsrel]</VERB>. default value is <VERB>[0, 1000, 0.0, 1.d-5]</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>epsabs</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Desired bound on the absolute error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>epsrel</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Desired bound on the relative error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>minpts</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Minimum number of function evaluations.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>maxpts</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Maximum number of function evaluations.  The number of function evaluations over each subregion is 43</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>result</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the integral value,or vector of the integral values.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>err</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: Estimates of absolute errors.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    The function calculates an approximation to a given
+    vector of definite integrals</P>
+    <VERBATIM>
+<![CDATA[
+I  I  I (F ,F ,...,F )      dx(3)dx(2)dx(1),
+          1  2      numfun
+   ]]>
+    </VERBATIM>
+    <P>
+    where the region of integration is a collection of
+    NUMTET tetrahedrons and where</P>
+    <VERBATIM>
+<![CDATA[
+F = F (X(1),X(2),X(3)), J = 1,2,...,NUMFUN.
+ J   J
+   ]]>
+    </VERBATIM>
+    <P>
+    A globally adaptive strategy is applied in order to
+    compute approximations <VERB>result(k)</VERB>
+    hopefully satisfying, for each component of I, the
+    following claim for accuracy:
+    <VERB>ABS(I(K)-RESULT(K))&lt;=MAX(EPSABS,EPSREL*ABS(I(K)))</VERB></P>
+    <P><VERB>int3d</VERB> repeatedly subdivides the tetrahedrons with greatest
+    estimated errors and estimates the integrals and the errors over the
+    new subtetrahedrons until the error request is met or <VERB>MAXPTS</VERB>
+    function evaluations have been used.</P>
+    <P>
+    A 43 point integration rule with all evaluation points inside the
+    tetrahedron is applied. The rule has polynomial degree 8.</P>
+    <P>
+    If the values of the input parameters <VERB>EPSABS</VERB> or <VERB>EPSREL</VERB> are
+    selected great enough, an integration rule is applied over each
+    tetrahedron and the results are added up to give the approximations
+    <VERB>RESULT(K)</VERB>. No further subdivision of the tetrahedrons will then
+    be applied.</P>
+    <P>
+    When <VERB>int3d</VERB> computes estimates to a vector of
+    integrals, all components of the vector are given
+    the same treatment. That is, <VERB>I(Fj)</VERB> and <VERB>I(Fk)</VERB> for</P>
+    <P><VERB>j</VERB> not equal to <VERB>k</VERB>, are estimated with the same
+    subdivision of the region of integration.
+    For integrals with enough similarity, we may save
+    time by applying <VERB>int3d</VERB> to all integrands in one call.
+    For integrals that varies continuously as functions of
+    some parameter, the estimates produced by <VERB>int3d</VERB>  will
+    also vary continuously when the same subdivision is
+    applied to all components. This will generally not be
+    the case when the different components are given
+    separate treatment.</P>
+    <P>
+    On the other hand this feature should be used with
+    caution when the different components of the integrals
+    require clearly different subdivisions.</P>
+  </DESCRIPTION>
+  <SECTION label="References">
+    <P>
+    Fortran routine dcutet.f</P>
+  </SECTION>
+  <EXAMPLE>
+<![CDATA[
+X=[0;1;0;0];
+Y=[0;0;1;0];
+Z=[0;0;0;1];
+[RESULT,ERROR]=int3d(X,Y,Z,'int3dex')
+// computes the integrand exp(x*x+y*y+z*z) over the 
+//tetrahedron (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)
+
+
+//integration over a cube  -1<=x<=1;-1<=y<=1;-1<=z<=1
+
+//  bottom  -top-     right    -left-   front   -rear- 
+X=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;          
+   -1,-1,   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1,-1; 
+    1,-1,    1,-1,    1, 1,   -1,-1,    1,-1,    1,-1;     
+    1, 1,    1, 1,    1, 1,   -1,-1,    1, 1,    1, 1];         
+Y=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0; 
+   -1,-1,   -1,-1,   -1, 1,   -1, 1,   -1,-1,    1, 1;
+   -1, 1,   -1, 1,    1, 1,    1, 1,   -1,-1,    1, 1;   
+    1, 1,    1, 1,   -1,-1,   -1,-1,   -1,-1,    1, 1]; 
+Z=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
+   -1,-1,    1, 1,   -1, 1,   -1, 1,   -1,-1,   -1,-1; 
+   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1, 1,   -1, 1;  
+   -1,-1,    1, 1,    1,-1,    1,-1,    1, 1,    1, 1];      
+
+function v=f(xyz,numfun),v=exp(xyz'*xyz),endfunction
+[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])
+
+function v=f(xyz,numfun),v=1,endfunction
+[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])
+
+   ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>intc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>int2d</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHORS>
+    <AUTHORS_ITEM label="Jarle Berntsen"> The Computing Centre,
+University of Bergen, Thormohlens gt. 55,
+N-5008 Bergen, Norway
+Phone..  47-5-544055
+Email..  jarle@eik.ii.uib.no, 
+</AUTHORS_ITEM>
+    <AUTHORS_ITEM label="Ronald Cools"> Dept. of Computer Science,
+Katholieke Universiteit Leuven, Celestijnenlaan 200A,
+B-3030 Heverlee, Belgium
+Phone..  32-16-201015 (3562)
+Email..  ronald@cs.kuleuven.ac.be,
+</AUTHORS_ITEM>
+    <AUTHORS_ITEM label="Terje O. Espelid"> Department of Informatics,
+University of Bergen, Thormohlens gt. 55,
+N-5008 Bergen, Norway
+Phone..  47-5-544180
+Email..  terje@eik.ii.uib.no
+</AUTHORS_ITEM>
+  </AUTHORS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/intg.xml b/scilab/modules/differential_equations/help/eng/intg.xml
new file mode 100644 (file)
index 0000000..16110c7
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>intg</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="intg"> definite integral</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[v,err]=intg(a,b,f [,ea [,er])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>a,b</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real numbers</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string)</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ea, er</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real numbers</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ea</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: absolute error required on the result. Default value: 1.d-14</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>er</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: relative error required on the result. Default value: 1.d-8</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>err</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: estimated absolute error on the result.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>intg(a,b,f)</VERB> evaluates the definite integral  from <VERB>a</VERB> to
+    <VERB>b</VERB> of <VERB>f(t)dt</VERB>. The function <VERB>f(t)</VERB>
+      should be continuous.</P>
+    <P>The evaluation hopefully satisfies following claim for accuracy:
+    <VERB>abs(I-v)&lt;= max(ea,er*abs(I))</VERB> where I stands for the
+    exact value of the integral.</P>
+    <P><VERB>f</VERB> is an external :</P>
+    <P>
+    If <VERB>f</VERB> is function its definition must be as follows
+    <VERB> y = f(t) </VERB></P>
+    <P>
+    If <VERB>f</VERB> is a list the list must be as follows:
+    <VERB> list(f,x1,x2,...)</VERB> where <VERB>f</VERB> is a function with calling
+    sequence <VERB>f(t,x1,x2,...)</VERB>.</P>
+
+    <P>If <VERB>f</VERB> is a string it refers to a the name
+    of a Fortran function or a C prodedure with a given calling sequence: </P>
+
+    <P>In the fortran case the calling sequence should be 
+       <VERB>double precision function f(x)</VERB> where <VERB>x</VERB> is
+      also a double precision number. </P>
+    <P>In the C case the calling sequence should be 
+       <VERB>double f(double *x)</VERB>. </P>
+
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+//Scilab function case
+function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
+exact=-2.5432596188;
+I=intg(0,2*%pi,f)
+abs(exact-I)
+
+//Scilab function case with parameter
+function y=f1(x,w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
+I=intg(0,2*%pi,list(f1,30))
+abs(exact-I)
+
+
+// Fortran code case (Fortran compiler required)
+// write down the fortran code
+F=['      double precision function ffun(x)'
+   '      double precision x,pi'
+   '      pi=3.14159265358979312d+0'
+   '      ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)'
+   '      return'
+   '      end'];
+mputl(F,TMPDIR+'/ffun.f')
+// compile the fortran code
+l=ilib_for_link('ffun','ffun.o',[],'f',TMPDIR+'/Makefile');
+// incremental linking
+link(l,'ffun','f')
+//integrate the function
+I=intg(0,2*%pi,'ffun')
+abs(exact-I)
+
+// C code case (C compiler required)
+// write down the C code
+C=['#include <math.h>'
+   'double cfun(double *x)'
+   '{'
+   '  double y,pi=3.14159265358979312;'
+   '  y=*x/(2.0e0*pi);'
+   '  return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);'
+   '}'];
+mputl(C,TMPDIR+'/cfun.c')
+// compile the C code
+l=ilib_for_link('cfun','cfun.o',[],'c',TMPDIR+'/Makefile');
+// incremental linking
+link(l,'cfun','c')
+//integrate the function
+I=intg(0,2*%pi,'cfun')
+abs(exact-I)
+
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>intc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>inttrap</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intsplin</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <USED_FUNCTIONS>
+    <P>The associated routines can be found in  routines/integ directory :</P>
+    <P>dqag0.f and dqags.f from quadpack </P>
+  </USED_FUNCTIONS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/ode.xml b/scilab/modules/differential_equations/help/eng/ode.xml
new file mode 100644 (file)
index 0000000..e874dad
--- /dev/null
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>ode</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="ode"> ordinary differential equation solver</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=ode(y0,t0,t,f)  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>[y,rd,w,iw]=ode(&quot;root&quot;,y0,t0,t [,rtol [,atol]],f  [,jac],ng,g [,w,iw])  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>y=ode(&quot;discrete&quot;,y0,k0,kvect,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector (times at which the solution is computed).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>type</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: one of the following character string: <VERB>&quot;adams&quot; &quot;stiff&quot; &quot;rk&quot; &quot;rkf&quot; &quot;fix&quot; &quot;discrete&quot; &quot;roots&quot;</VERB></SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>rtol,atol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real constants or real vectors of the same size as <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>w,iw</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vectors.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ng</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>g</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>k0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer (initial time). kvect : integer vector.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <SP><VERB>ode</VERB> is the standard function for solving explicit ODE
+      systems defined by:      dy/dt=f(t,y) , y(t0)=y0.
+
+      It is an interface to various solvers, in particular to ODEPACK.
+      The type of problem solved and the method used depend on the value of
+      the first optional argument <VERB>type</VERB> which can be one of the
+      following strings:
+    </SP>
+    <DESCRIPTION_INDENT>
+      <DESCRIPTION_ITEM label="&lt;not given&gt;:">
+        <SP><VERB>lsoda</VERB> solver of package ODEPACK is called by default. It automatically selects between nonstiff predictor-corrector Adams method and stiff Backward Differentiation Formula (BDF) method. It uses nonstiff method initially and dynamically  monitors data in order to decide which method to use.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;adams&quot;:">
+        <SP>This is for nonstiff problems. <VERB>lsode</VERB> solver of package ODEPACK is called and it uses the Adams method.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;stiff&quot;:">
+        <SP>This is for stiff problems. <VERB>lsode</VERB> solver of package ODEPACK is called and it uses the BDF method.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;rk&quot;:">
+        <SP>Adaptive Runge-Kutta of order 4 (RK4) method.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;rkf&quot;:">
+        <SP>The Shampine and Watts program based on Fehlberg's Runge-Kutta pair of order 4 and 5 (RKF45) method is used. This is for non-stiff and mildly stiff problems when derivative evaluations are inexpensive.  This method should generally not be used when the user is demanding high accuracy.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;fix&quot;:">
+        <SP>Same solver as &quot;rkf&quot;, but the user interface is very simple, i.e. only <VERB>rtol</VERB> and <VERB>atol</VERB>  parameters can be passed to the solver. This is the simplest method to try.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;root&quot;:">
+        <SP>ODE solver with rootfinding capabilities.  The <VERB>lsodar</VERB> solver of package ODEPACK is used. It is a variant of the <VERB>lsoda</VERB> solver where it finds the roots of a given vector function. See help on ode_root for more details.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM label="&quot;discrete&quot;:">
+        <SP>Discrete time simulation. See help on ode_discrete for more details.</SP>
+      </DESCRIPTION_ITEM>
+    </DESCRIPTION_INDENT>
+    <P>
+      In this help we only describe the use of <VERB>ode</VERB> for standard
+      explicit ODE systems.</P>
+    <DESCRIPTION_INDENT>
+      <DESCRIPTION_ITEM>
+       <P>The simplest call of <VERB>ode</VERB> is:
+         <VERB>y=ode(y0,t0,t,f)</VERB>
+         where <VERB>y0</VERB> is the vector of initial conditions, <VERB>t0</VERB> is the
+         initial time, <VERB>t</VERB> is the vector of times at which the solution 
+         <VERB>y</VERB> is computed and <VERB>y</VERB> is matrix of solution vectors 
+         <VERB>y=[y(t(1)),y(t(2)),...]</VERB>.</P>
+       <P>
+         The input argument <VERB>f</VERB>  defines the RHS of the first order differential equation:
+         dy/dt=f(t,y). It is an external i.e. a function with
+         specified syntax, or the name of a Fortran subroutine or a C function 
+         (character string) with specified calling sequence or a list:</P>
+       <DESCRIPTION_INDENT>
+         <DESCRIPTION_ITEM>
+           <SP> If <VERB>f</VERB> is a Scilab function, its syntax must be
+             <VERB>ydot = f(t,y)</VERB>, where <VERB>t</VERB> is a real scalar
+             (time) and <VERB>y</VERB> a real vector (state) and
+             <VERB>ydot</VERB>a real vector (dy/dt)</SP>
+         </DESCRIPTION_ITEM> 
+         <DESCRIPTION_ITEM>
+           <SP> If <VERB>f</VERB> is a character string, it refers to the name of a Fortran
+             subroutine or a C function, i.e. if <VERB>ode(y0,t0,t,&quot;fex&quot;)</VERB> is the
+             command, then the subroutine <VERB>fex</VERB> is called. </SP>
+           <P> The Fortran routine must have the following calling sequence:
+             <VERB>fex(n,t,y,ydot)</VERB>, with n an integer, t a double precision
+             scalar, y and ydot double precision vectors.
+           </P>
+           <P> The C function must have the following prototype:
+             <VERB>fex(int *n,double *t,double *y,double *ydot)</VERB>
+           </P>
+           <SP><VERB>t</VERB> is the time, <VERB>y</VERB> the state and
+             <VERB>ydot</VERB>the state derivative (dy/dt)</SP>
+           <P>This external can be build in a OS independant way using
+                  <LINK>ilib_for_link</LINK> and dynamically linked to Scilab by the
+             <LINK>link</LINK> function. </P>
+         </DESCRIPTION_ITEM> 
+         <DESCRIPTION_ITEM>
+           <SP> The <VERB>f</VERB> argument can also be a list with the following
+             structure: <VERB>lst=list(realf,u1,u2,...un)</VERB>
+             where <VERB>realf</VERB> is a Scilab function with syntax: 
+             <VERB>ydot = f(t,y,u1,u2,...,un)</VERB></SP>
+           <P> This syntax allows to use parameters as the arguments of <VERB>realf</VERB>.</P>
+         </DESCRIPTION_ITEM> 
+       </DESCRIPTION_INDENT>
+
+       <P>
+         The function <VERB>f</VERB> can return a <VERB>p x q</VERB> matrix instead of a vector. 
+         With this matrix notation, we solve the <VERB>n=p+q</VERB> ODE's 
+         system <VERB>dY/dt=F(t,Y)</VERB> where <VERB>Y</VERB> is a <VERB>p x q</VERB> matrix.
+         Then initial conditions, <VERB>Y0</VERB>, must also be
+         a <VERB>p x q</VERB> matrix and the result of <VERB>ode</VERB> is the
+         <VERB>p x q(T+1)</VERB> matrix <VERB>[Y(t_0),Y(t_1),...,Y(t_T)]</VERB>.</P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+       <SP>
+         Optional input parameters can be given for the error of the solution:
+         <VERB>rtol</VERB> and <VERB>atol</VERB> 
+         are threshold for relative and absolute estimated errors. 
+         The estimated error on <VERB>y(i)</VERB> is: <VERB>rtol(i)*abs(y(i))+atol(i)</VERB></SP>
+       <P>
+         and integration is carried out as far as this error is small
+         for all components of the state.
+         If <VERB>rtol</VERB> and/or <VERB>atol</VERB> is a constant <VERB>rtol(i)</VERB> and/or 
+         <VERB>atol(i)</VERB> are
+         set to this constant value. Default values for <VERB>rtol</VERB> and <VERB>atol</VERB>
+         are respectively <VERB>rtol=1.d-5</VERB> and <VERB>atol=1.d-7</VERB> for most
+         solvers and <VERB>rtol=1.d-3</VERB> and <VERB>atol=1.d-4</VERB> for <VERB>&quot;rfk&quot;</VERB> and 
+         <VERB>&quot;fix&quot;</VERB>.</P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+       <P> For stiff problems, it is better to give the Jacobian of the RHS
+         function as the optional argument <VERB>jac</VERB>.
+         It is an external i.e. a function with
+         specified syntax, or the name of a Fortran subroutine or a C function 
+         (character string) with specified calling sequence or a list.</P>
+       <P>If <VERB>jac</VERB> is a function the syntax should be <VERB>J=jac(t,y)</VERB></P>
+       <P>where <VERB>t</VERB> is a real scalar (time) and <VERB>y</VERB> a real vector (state).
+       The result matrix <VERB>J</VERB> must evaluate to df/dx i.e. 
+       <VERB>J(k,i) = dfk/dxi</VERB> with <VERB>fk</VERB> = kth component of f.</P>
+       <P>If <VERB>jac</VERB> is a character string it refers to the name of a Fortran
+         subroutine or a C function, with the following calling sequence: </P>
+       <SP>Fortran case: </SP>
+
+           <VERBATIM><![CDATA[
+             subroutine fex(n,t,y,ml,mu,J,nrpd) 
+             integer n,ml,mu,nrpd
+             double precision t,y(*),J(*)
+             ]]></VERBATIM>
+            <SP> C case:</SP>
+           <VERBATIM><![CDATA[
+             void fex(int *n,double *t,double *y,int *ml,int *mu,double *J,int *nrpd,)
+             ]]></VERBATIM>
+
+       <P><VERB>jac(n,t,y,ml,mu,J,nrpd)</VERB>. In most cases you have
+         not to refer <VERB>ml</VERB>, <VERB>mu</VERB> and <VERB>nrpd</VERB>.</P>
+       <P>If <VERB>jac</VERB> is a list the same conventions as for <VERB>f</VERB>
+         apply.</P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+       <SP>
+         Optional arguments <VERB>w</VERB> and <VERB>iw</VERB>  are 
+         vectors for storing information returned by the
+         integration routine (see <LINK>ode_optional_output</LINK> for
+         details). When these vectors are provided in RHS
+         of <VERB>ode</VERB> the integration re-starts with the same  parameters as
+         in its previous stop.</SP>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+       <P>
+         More options can be given to ODEPACK solvers by using
+         <VERB>%ODEOPTIONS</VERB> variable. See <LINK>odeoptions</LINK>.</P>
+      </DESCRIPTION_ITEM>
+    </DESCRIPTION_INDENT>
+  </DESCRIPTION>
+  <EXAMPLE>
+    <![CDATA[
+    // ---------- Simple one dimension ODE (Scilab function external)
+    // dy/dt=y^2-y sin(t)+cos(t), y(0)=0
+    function ydot=f(t,y),ydot=y^2-y*sin(t)+cos(t),endfunction
+    y0=0;t0=0;t=0:0.1:%pi;
+    y=ode(y0,t0,t,f)
+    plot(t,y)
+
+    // ---------- Simple one dimension ODE (C coded external)
+    ccode=['#include <math.h>'
+          'void myode(int *n,double *t,double *y,double *ydot)'
+          '{'
+          '  ydot[0]=y[0]*y[0]-y[0]*sin(*t)+cos(*t);'
+          '}']
+    mputl(ccode,TMPDIR+'/myode.c') //create the C file
+    ilib_for_link('myode','myode.o',[],'c',TMPDIR+'/Makefile',TMPDIR+'/loader.sce');//compile
+    exec(TMPDIR+'/loader.sce') //incremental linking
+    y0=0;t0=0;t=0:0.1:%pi;
+    y=ode(y0,t0,t,'myode');
+       
+    // ---------- Simulation of dx/dt = A x(t) + B u(t) with u(t)=sin(omega*t),
+    // x0=[1;0]
+    // solution x(t) desired at t=0.1, 0.2, 0.5 ,1.
+    // A and u function are passed to RHS function in a list. 
+    // B and omega are passed as global variables
+    function xdot=linear(t,x,A,u),xdot=A*x+B*u(t),endfunction
+    function ut=u(t),ut=sin(omega*t),endfunction
+    A=[1 1;0 2];B=[1;1];omega=5;
+    ode([1;0],0,[0.1,0.2,0.5,1],list(linear,A,u))
+
+    // ---------- Matrix notation Integration of the Riccati differential equation
+    // Xdot=A'*X + X*A - X'*B*X + C , X(0)=Identity
+    // Solution at t=[1,2] 
+    function Xdot=ric(t,X),Xdot=A'*X+X*A-X'*B*X+C,endfunction  
+    A=[1,1;0,2]; B=[1,0;0,1]; C=[1,0;0,1];
+    t0=0;t=0:0.1:%pi;
+    X=ode(eye(A),0,t,ric)
+    //
+    // ---------- Matrix notation, Computation of exp(A)
+    A=[1,1;0,2];
+    function xdot=f(t,x),xdot=A*x;,endfunction 
+    ode(eye(A),0,1,f)
+    ode("adams",eye(A),0,1,f)
+
+    // ---------- Matrix notation, Computation of exp(A) with stiff matrix, Jacobian given
+    A=[10,0;0,-1];
+    function xdot=f(t,x),xdot=A*x,endfunction 
+    function J=Jacobian(t,y),J=A,endfunction 
+    ode("stiff",[0;1],0,1,f,Jacobian)
+    ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode_discrete</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode_root</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>impl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>odedc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>odeoptions</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>csim</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ltitr</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>rtitr</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHORS>
+    <AUTHORS_ITEM label="Alan C. Hindmarsh">,  mathematics and statistics division, l-316
+      livermore, ca 94550.19</AUTHORS_ITEM>
+  </AUTHORS>
+  <BIBLIO>
+    <P>
+      Alan C. Hindmarsh,  lsode and lsodi, two new initial value
+      ordinary differential equation solvers,
+      acm-signum newsletter, vol. 15, no. 4 (1980), pp. 10-11.</P>
+  </BIBLIO>
+  <USED_FUNCTIONS>
+    <P>
+      The associated routines can be found in  routines/integ directory :</P>
+    <P>
+      lsode.f lsoda.f lsodar.f</P>
+  </USED_FUNCTIONS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/ode_discrete.xml b/scilab/modules/differential_equations/help/eng/ode_discrete.xml
new file mode 100644 (file)
index 0000000..a3f892b
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>ode_discrete</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="ode_discrete"> ordinary differential equation solver, discrete time simulation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=ode(&quot;discrete&quot;,y0,k0,kvect,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>k0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>kvect</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer vector.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    With this syntax (first argument equal to <VERB>&quot;discrete&quot;</VERB>)
+    <VERB>ode</VERB> computes recursively <VERB>y(k+1)=f(k,y(k))</VERB>
+    from an initial state
+    <VERB>y(k0)</VERB> and returns <VERB>y(k)</VERB> for <VERB>k</VERB> in <VERB>kvect</VERB>.
+    <VERB>kvect(1)</VERB> must be greater than or equal to <VERB>k0</VERB>.</P>
+    <P>
+    Other arguments and other options are the same as for <VERB>ode</VERB>, see the
+    ode help.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+y1=[1;2;3]; deff("yp=a_function(k,y)","yp=A*y+B*u(k)")
+A=diag([0.2,0.5,0.9]); B=[1;1;1];u=1:10;n=5;
+y=ode("discrete",y1,1,1:n,a_function);
+y(:,2)-(A*y1+B*u(1))
+// Now y evaluates  at [y3,y5,y7,y9]
+y=ode("discrete",y1,1,3:2:9,a_function)
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/ode_optional_output.xml b/scilab/modules/differential_equations/help/eng/ode_optional_output.xml
new file mode 100644 (file)
index 0000000..86b4de6
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+  <MAN>
+    <LANGUAGE>eng</LANGUAGE>
+    <TITLE>ode</TITLE>
+    <TYPE>Scilab Function</TYPE>
+    <DATE>February 1998</DATE>
+    <SHORT_DESCRIPTION name="ode_optional_output"> ode solvers optional outputs description</SHORT_DESCRIPTION>
+    <DESCRIPTION>
+      <SP>
+      This page describes the the most important values returned in the
+      optional lhs <LINK>ode</LINK> function arguments <VERB>w</VERB> and
+      <VERB>iw</VERB>.
+      These are valid only for the <VERB>lsode</VERB> 
+      <VERB>lsoda</VERB> and  <VERB>lsodar</VERB> ode solver.
+       For more details, one can look at the solvers fortran code comments in <VERB>routines/integ/lsod*.f</VERB>.
+      </SP>
+      <DESCRIPTION_INDENT>
+       <DESCRIPTION_ITEM   label='w(11)'> 
+         <SP> the step size in t last used (successfully).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(12)'> 
+         <SP> the step size to be attempted on the next step.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(13)'> 
+         <SP> the current value of the independent variable
+           which the solver has actually reached, i.e. the
+           current internal mesh point in t.  on output, tcur
+           will always be at least as far as the argument
+           t, but may be farther (if interpolation was done).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(14)'> 
+         <SP> a tolerance scale factor, greater than 1.0,
+           computed when a request for too much accuracy was
+           detected (istate = -3 if detected at the start of
+           the problem, istate = -2 otherwise).  if itol is
+           left unaltered but rtol and atol are uniformly
+           scaled up by a factor of <VERB>tolsf=w(14)</VERB> for the next call,
+           then the solver is deemed likely to succeed.
+           (the user may also ignore <VERB>tolsf</VERB> and alter the
+           tolerance parameters in any other way appropriate.)</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(15)'> 
+         <SP> the value of t at the time of the last method
+           switch, if any. This value is not significant with
+           <VERB>lsode</VERB> solver. </SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(10)'> 
+         <SP> the number of <VERB>g</VERB>  evaluations for the problem so
+           far. This value is only significant for <VERB>lsodar</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+
+       <DESCRIPTION_ITEM   label='iw(11)'> 
+         <SP> the number of steps taken for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(12)'> 
+         <SP> the number of f evaluations for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(13)'> 
+         <SP> the number of jacobian evaluations (and of matrix
+           lu decompositions) for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(14)'> 
+         <SP> the method order last used (successfully).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(15)'> 
+         <SP> the order to be attempted on the next step.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(16)'> 
+         <SP> the index of the component of largest magnitude in
+           the weighted local error vector ( e(i)/ewt(i) ),
+           on an error return with istate = -4 or -5.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(17)'> 
+         <SP> the length of <VERB>w</VERB> actually required, assuming
+           that the length of rwork is to be fixed for the
+           rest of the problem, and that switching may occur.
+           this is defined on normal returns and on an illegal
+           input return for insufficient storage.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(18)'> 
+         <SP> the length of <VERB>iw</VERB> actually required, assuming
+           that the length of <VERB>iw</VERB> is to be fixed for the
+           rest of the problem, and that switching may occur.
+           this is defined on normal returns and on an illegal
+           input return for insufficient storage.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(19)'> 
+         <SP> the method indicator for the last successful step..
+           1 means adams (nonstiff), 2 means bdf (stiff). This value is not significant with
+           <VERB>lsode</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(20)'> 
+         <SP> the current method indicator..
+           1 means adams (nonstiff), 2 means bdf (stiff).
+           this is the method to be attempted
+           on the next step.  thus it differs from <VERB>iw(19)</VERB>
+           only if a method switch has just been made. This value is not significant with
+           <VERB>lsode</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+      </DESCRIPTION_INDENT>
+    </DESCRIPTION>
+  </MAN>
diff --git a/scilab/modules/differential_equations/help/eng/ode_root.xml b/scilab/modules/differential_equations/help/eng/ode_root.xml
new file mode 100644 (file)
index 0000000..a0b10b2
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>ode_root</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="ode_root"> ordinary differential equation solver with root finding</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y,rd[,w,iw]=ode(&quot;root&quot;,y0,t0,t [,rtol  [,atol]],f  [,jac],ng,g [,w,iw])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector (times at which the solution is computed).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>rtol,atol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real constants or real vectors of the same size as <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>w,iw</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vectors.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ng</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>g</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    With this syntax (first argument equal to <VERB>&quot;root&quot;</VERB>)
+    <VERB>ode</VERB>
+    computes the solution
+    of the differential equation <VERB>dy/dt=f(t,y)</VERB> until the state
+    <VERB>y(t)</VERB> crosses the surface <VERB>g(t,y)=0</VERB>.</P>
+    <P><VERB>g</VERB> should give the equation of the surface.
+    It is an external i.e. a function with
+    specified syntax, or the name of a Fortran subroutine or a C function 
+    (character string) with specified calling sequence or a list.</P>
+    <P>
+    If <VERB>g</VERB> is a function the syntax should be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+z=g(t,y)
+   ]]>
+    </VERBATIM>
+    <P>
+    where <VERB>t</VERB> is a real scalar (time)  and <VERB>y</VERB> a real vector (state).
+    It returns a vector of size <VERB>ng</VERB> which corresponds to 
+    the <VERB>ng</VERB> constraints. 
+    If <VERB>g</VERB> is a character string it refers to the name of a Fortran
+    subroutine or a C function, with the following calling sequence: 
+    <VERB>g(n,t,y,ng,gout)</VERB>
+    where <VERB>ng</VERB> is the number of constraints and 
+    <VERB>gout</VERB> is the value of <VERB>g</VERB> (output of the program).
+    If <VERB>g</VERB> is a list the same conventions as for <VERB>f</VERB> apply (see ode
+    help).</P>
+    <P>
+    Ouput <VERB>rd</VERB> is a <VERB>1 x k</VERB> vector. The first entry contains the stopping
+    time. Other entries indicate which components of <VERB>g</VERB> have changed
+    sign. <VERB>k</VERB> larger than 2 indicates that more than one surface
+    (<VERB>(k-1)</VERB> surfaces) have been simultaneously traversed.</P>
+    <P>
+    Other arguments and other options are the same as for <VERB>ode</VERB>, see the
+    ode help.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+// Integration of the differential equation
+// dy/dt=y , y(0)=1, and finds the minimum time t such that y(t)=2
+deff("[ydot]=f(t,y)","ydot=y")
+deff("[z]=g(t,y)","z=y-2")
+y0=1;ng=1;
+[y,rd]=ode("roots",y0,0,2,f,ng,g)
+
+
+deff("[z]=g(t,y)","z=y-[2;2;33]")
+[y,rd]=ode("roots",1,0,2,f,3,g)
+
+
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>dasrt</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/odedc.xml b/scilab/modules/differential_equations/help/eng/odedc.xml
new file mode 100644 (file)
index 0000000..ed08056
--- /dev/null
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>odedc</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="odedc"> discrete/continuous ode solver</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>yt=odedc(y0,nd,stdel,t0,t,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real column vector (initial conditions), <VERB>y0=[y0c;y0d]</VERB> where <VERB>y0d</VERB> has <VERB>nd</VERB> components.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer, dimension of <VERB>y0d</VERB></SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>stdel</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector with one or two entries, <VERB>stdel=[h, delta]</VERB> (with <VERB>delta=0</VERB> as default value).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real (row) vector, instants where <VERB>yt</VERB> is calculated .</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list with calling sequence: <VERB>yp=f(t,yc,yd,flag)</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>y=odedc([y0c;y0d],nd,[h,delta],t0,t,f)</VERB>
+    computes the solution of a mixed discrete/continuous system. 
+    The discrete system state <VERB>yd_k</VERB> is embedded into a  piecewise constant <VERB>yd(t)</VERB> time function as follows:</P>
+    <VERBATIM>
+<![CDATA[
+yd(t)=yd_k for t in 
+[t_k=delay+k*h,t_(k+1)=delay+(k+1)*h[ (with delay=h*delta).
+   ]]>
+    </VERBATIM>
+    <P>
+    The simulated equations are now:</P>
+    <VERBATIM>
+<![CDATA[
+dyc/dt=f(t,yc(t),yd(t),0),  for t in [t_k,t_(k+1)[
+yc(t0)=y0c
+   ]]>
+    </VERBATIM>
+    <P>
+    and at instants <VERB>t_k</VERB> the discrete variable <VERB>yd</VERB> is updated by:</P>
+    <VERBATIM>
+<![CDATA[
+yd(t_k+)=f(yc(t_k-),yd(t_k-),1)
+   ]]>
+    </VERBATIM>
+    <P>
+    Note that, using the definition of <VERB>yd(t)</VERB> the last equation gives</P>
+    <VERBATIM>
+<![CDATA[
+yd_k = f (t_k,yc(t_k-),yd(t_(k-1)),1)  (yc is time-continuous: yc(t_k-)=yc(tk))
+   ]]>
+    </VERBATIM>
+    <P>
+    The calling parameters of <VERB>f</VERB> are fixed: <VERB>ycd=f(t,yc,yd,flag)</VERB>;
+    this function must return either the derivative of the vector <VERB>yc</VERB> if
+    <VERB>flag=0</VERB> or the update of <VERB>yd</VERB> if <VERB>flag=1</VERB>.</P>
+    <P><VERB>ycd=dot(yc)</VERB> must be a vector with same dimension as <VERB>yc</VERB> 
+    if <VERB>flag=0</VERB> and <VERB>ycd=update(yd)</VERB> must be a vector with same 
+    dimension as <VERB>yd</VERB> if <VERB>flag=1</VERB>.</P>
+    <P><VERB>t</VERB> is a vector of instants where the solution <VERB>y</VERB> is computed.</P>
+    <P><VERB>y</VERB> is the vector <VERB>y=[y(t(1)),y(t(2)),...]</VERB>.
+    This function can be called with the same optional parameters as the
+    <VERB>ode</VERB> function (provided <VERB>nd</VERB> and <VERB>stdel</VERB> are given
+    in the calling sequence as second and third parameters).
+    In particular integration flags, tolerances can be set. Optional
+    parameters can be set by the <VERB>odeoptions</VERB> function.</P>
+    <P>
+    An example for calling an external routine is given in directory 
+    <VERB>SCIDIR/default/fydot2.f</VERB></P>
+    <P>
+    External routines can be dynamically linked (see <VERB>link</VERB>).</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+//Linear system with switching input
+deff('xdu=phis(t,x,u,flag)','if flag==0 then xdu=A*x+B*u; else xdu=1-u;end');
+x0=[1;1];A=[-1,2;-2,-1];B=[1;2];u=0;nu=1;stdel=[1,0];u0=0;t=0:0.05:10;
+xu=odedc([x0;u0],nu,stdel,0,t,phis);x=xu(1:2,:);u=xu(3,:);
+nx=2;
+plot2d1('onn',t',x',[1:nx],'161');
+plot2d2('onn',t',u',[nx+1:nx+nu],'000');
+//Fortran external( see fydot2.f): 
+norm(xu-odedc([x0;u0],nu,stdel,0,t,'phis'),1)
+
+//Sampled feedback 
+//
+//        |     xcdot=fc(t,xc,u)
+//  (system)   |
+//        |     y=hc(t,xc)
+//
+//
+//        |     xd+=fd(xd,y)
+//  (feedback) |
+//        |     u=hd(t,xd)
+//
+deff('xcd=f(t,xc,xd,iflag)',...
+  ['if iflag==0 then '
+   '  xcd=fc(t,xc,e(t)-hd(t,xd));'
+   'else '
+   '  xcd=fd(xd,hc(t,xc));'
+   'end']);
+A=[-10,2,3;4,-10,6;7,8,-10];B=[1;1;1];C=[1,1,1];
+Ad=[1/2,1;0,1/20];Bd=[1;1];Cd=[1,1];
+deff('st=e(t)','st=sin(3*t)')
+deff('xdot=fc(t,x,u)','xdot=A*x+B*u')
+deff('y=hc(t,x)','y=C*x')
+deff('xp=fd(x,y)','xp=Ad*x + Bd*y')
+deff('u=hd(t,x)','u=Cd*x')
+h=0.1;t0=0;t=0:0.1:2;
+x0c=[0;0;0];x0d=[0;0];nd=2;
+xcd=odedc([x0c;x0d],nd,h,t0,t,f);
+norm(xcd-odedc([x0c;x0d],nd,h,t0,t,'fcd1')) // Fast calculation (see fydot2.f)
+plot2d([t',t',t'],xcd(1:3,:)');
+xset("window",2);plot2d2("gnn",[t',t'],xcd(4:5,:)');
+xset("window",0);
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>odeoptions</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>csim</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/eng/odeoptions.xml b/scilab/modules/differential_equations/help/eng/odeoptions.xml
new file mode 100644 (file)
index 0000000..b566b80
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>odeoptions</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="odeoptions"> set options for ode solvers</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>odeoptions()  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <DESCRIPTION>
+    <P>
+    This function interactively displays a command which
+    should be executed to set various options of ode solvers.
+    The global variable <VERB>%ODEOPTIONS</VERB> sets the options.</P>
+    <P>
+    CAUTION: the <VERB>ode</VERB> function checks if this variable
+    exists and in this case it uses it. For using default
+    values you should clear this variable. Note that <VERB>odeoptions</VERB>
+    does not create this variable. To create it you must execute
+    the command line displayed by <VERB>odeoptions</VERB>.</P>
+    <P>
+    The variable <VERB>%ODEOPTIONS</VERB> is a vector with the following elements:</P>
+    <VERBATIM>
+<![CDATA[
+[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,ml,mu]
+   ]]>
+    </VERBATIM>
+    <P>
+    The default value is:</P>
+    <VERBATIM>
+<![CDATA[
+[1,0,0,%inf,0,2,500,12,5,0,-1,-1]
+   ]]>
+    </VERBATIM>
+    <P>
+    The meaning of the elements is described below.</P>
+    <P><VERB>itask</VERB>
+     1 : normal computation at specified times
+     2 : computation at mesh points (given in first row of output of <VERB>ode</VERB>)
+     3 : one step at one internal mesh point and return
+     4 : normal computation without overshooting <VERB>tcrit</VERB>
+     5 : one step, without passing <VERB>tcrit</VERB>, and return</P>
+    <P><VERB>tcrit</VERB>
+      assumes <VERB>itask</VERB> equals 4 or 5, described above</P>
+    <P><VERB>h0</VERB>
+      first step tried</P>
+    <P><VERB>hmax</VERB>
+      max step size</P>
+    <P><VERB>hmin</VERB>
+      min step size</P>
+    <P><VERB>jactype</VERB>
+     0 : functional iterations, no jacobian used (<VERB>&quot;adams&quot;</VERB> or
+         <VERB>&quot;stiff&quot;</VERB> only)
+     1 : user-supplied full jacobian
+     2 : internally generated full jacobian
+     3 : internally generated diagonal jacobian (<VERB>&quot;adams&quot;</VERB> or 
+         <VERB>&quot;stiff&quot;</VERB> only)
+     4 : user-supplied banded jacobian (see <VERB>ml</VERB> and <VERB>mu</VERB> below)
+     5 : internally generated banded jacobian (<VERB>see</VERB> ml and <VERB>mu</VERB> below)</P>
+    <P><VERB>maxordn</VERB> 
+     maximum non-stiff order allowed, at most 12</P>
+    <P><VERB>maxords</VERB>
+     maximum stiff order allowed, at most 5</P>
+    <P><VERB>ixpr</VERB> 
+     print level, 0 or 1</P>
+    <P><VERB>ml</VERB>,<VERB>mu</VERB>
+     If <VERB>jactype</VERB> equals 4 or 5, <VERB>ml</VERB> and <VERB>mu</VERB> are the lower
+     and upper half-bandwidths of the banded jacobian: the band is the
+     i,j's with i-ml &lt;= j &lt;= ny-1.
+     If <VERB>jactype</VERB> equals 4 the jacobian function must return
+     a matrix J which is  ml+mu+1 x ny (where ny=dim of y in ydot=f(t,y))
+     such that column 1 of J is made of mu zeros followed by
+     df1/dy1, df2/dy1, df3/dy1, ... (1+ml possibly non-zero entries)
+     column 2 is made of mu-1 zeros followed by df1/dx2, df2/dx2, etc</P>
+  </DESCRIPTION>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/bvode.xml b/scilab/modules/differential_equations/help/fr/bvode.xml
new file mode 100644 (file)
index 0000000..a05e390
--- /dev/null
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>bvode</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>June 1993</DATE>
+  <SHORT_DESCRIPTION name="bvode"> boundary value problems for ODE</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>   [z]=bvode(points,ncomp,m,aleft,aright,zeta,ipar,ltol,tol,fixpnt,...  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM> fsub1,dfsub1,gsub1,dgsub1,guess1)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>z</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>The solution of the ode evaluated on the mesh given by points</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>points</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>an array which gives the points for which we want the solution</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ncomp</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>number of differential equations   (ncomp &lt;= 20)</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>m</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>a vector of size <VERB>ncomp</VERB>. <VERB>m(j)</VERB> gives the  order of the j-th differential equation</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>aleft</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>left end of interval</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>aright</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>right end of interval</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>zeta</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP><VERB>zeta(j)</VERB> gives j-th side condition point (boundary point). must have</SP>
+          <P>
+            <VERB>zeta(j) &lt;= zeta(j+1)</VERB>
+          </P>
+          <P>
+    all side condition points must be mesh points in all meshes used, see description of <VERB>ipar(11)</VERB> and <VERB>fixpnt</VERB> below.
+  </P>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ipar</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>an integer array dimensioned at least 11. a list of the parameters in <VERB>ipar</VERB> and their meaning follows some parameters are renamed in bvode; these new names are given in parentheses.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(1)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>0  if the problem is linear, 1 if the problem is nonlinear</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(2)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= number of collocation points per subinterval  (= k ) where</SP>
+                <P>
+                  <VERB>max m(i) &lt;=  k &lt;= 7 .</VERB>
+                </P>
+                <P>
+    if <VERB>ipar(2)=0</VERB> then bvode sets  
+  </P>
+                <P>
+                  <VERB>k = max ( max m(i)+1, 5-max m(i) )</VERB>
+                </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(3)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= number of subintervals in the initial mesh  ( = n ). if <VERB>ipar(3) = 0</VERB> then bvode arbitrarily sets <VERB>n = 5</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(4)</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= number of solution and derivative tolerances.  ( = ntol ) we require</SP>
+                <P>
+                  <VERB>0 &lt; ntol &lt;= mstar.</VERB>
+                </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(5)</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= dimension of <VERB>fspace</VERB> ( = ndimf ) a
+                real work array. its size provides a constraint on
+                nmax. choose ipar(5) according to the formula:</SP>
+                <P> <VERB>ipar(5)>=nmax*nsizef</VERB> </P>
+                <P>where</P>
+                <P> <VERB>nsizef=4+3*mstar+(5+kd)*kdm+(2*mstar-nrec)*2*mstar</VERB>.</P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(6)</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= dimension of ispace ( = ndimi )an integer work
+                 array. its size provides a constraint on nmax, the
+                 maximum number of subintervals. choose
+                 <VERB>ipar(6)</VERB> according to the formula:</SP>
+                 <P> <VERB>ipar(6)>=nmax*nsizei</VERB></P>
+                  <P>where</P>
+                 <P><VERB>nsizei=3 + kdm</VERB> with
+                 <VERB>kdm=kd+mstar</VERB> ; <VERB>kd=k*ncomp </VERB>;
+                 <VERB>nrec</VERB>=number of right end boundary
+                 conditions.</P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(7) </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>output control ( = iprint )</SP>
+                <PARAM_INDENT>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= -1</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>for full diagnostic printout</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 0</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>for selected printout</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 1</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>for no printout</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                </PARAM_INDENT>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(8)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>( = iread )</SP>
+                <PARAM_INDENT>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 0</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>causes bvode to generate a uniform initial mesh.</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= xx</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>Other values are not implemented yet in Scilab</SP>
+                      <PARAM_INDENT>
+                        <PARAM_ITEM>
+                          <PARAM_NAME>= 1</PARAM_NAME>
+                          <PARAM_DESCRIPTION>
+                            <SP>if the initial mesh is provided by the user.  it is defined in fspace as follows:  the mesh</SP>
+                            <P>
+    will occupy  <VERB>fspace(1), ..., fspace(n+1)</VERB>. the user needs to supply only the interior mesh points  <VERB>fspace(j) = x(j), j = 2, ..., n.</VERB>
+  </P>
+                          </PARAM_DESCRIPTION>
+                        </PARAM_ITEM>
+                        <PARAM_ITEM>
+                          <PARAM_NAME>= 2 if the initial mesh is supplied by the user</PARAM_NAME>
+                          <PARAM_DESCRIPTION>
+                            <SP>as with <VERB>ipar(8)=1</VERB>, and in addition no adaptive mesh selection is to be done.</SP>
+                          </PARAM_DESCRIPTION>
+                        </PARAM_ITEM>
+                      </PARAM_INDENT>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                </PARAM_INDENT>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(9)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>( = iguess )</SP>
+                <PARAM_INDENT>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 0</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if no initial guess for the solution is provided.</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 1</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if an initial guess is provided by the user in subroutine  <VERB>guess</VERB>.</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 2</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if an initial mesh and approximate solution coefficients are provided by the user in fspace. (the former and new mesh are the same).</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 3</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if a former mesh and approximate solution coefficients are provided by the user in fspace, and the new mesh is to be taken twice as coarse; i.e.,every second point from the former mesh.</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 4</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if in addition to a former initial mesh and approximate solution coefficients, a new mesh is provided in fspace as well. (see description of output for further details on iguess = 2, 3, and 4.)</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                </PARAM_INDENT>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(10)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <PARAM_INDENT>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 0</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if the problem is regular</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 1</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if the first relax factor is =rstart, and the nonlinear iteration does not rely on past covergence (use for an extra sensitive nonlinear problem only).</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                  <PARAM_ITEM>
+                    <PARAM_NAME>= 2</PARAM_NAME>
+                    <PARAM_DESCRIPTION>
+                      <SP>if we are to return immediately upon  (a) two successive nonconvergences, or  (b) after obtaining error estimate for the first time.</SP>
+                    </PARAM_DESCRIPTION>
+                  </PARAM_ITEM>
+                </PARAM_INDENT>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ipar(11)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>= number of fixed points in the mesh other than <VERB>aleft</VERB>
+  and <VERB>aright</VERB>. ( = nfxpnt , the dimension of
+  <VERB>fixpnt</VERB>) the code requires that all side condition
+  points other than <VERB>aleft</VERB> and <VERB>aright</VERB> (see
+  description of zeta ) be included as fixed points in
+  <VERB>fixpnt</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ltol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>an array of dimension <VERB>ipar(4)</VERB>.
+          <VERB>ltol(j) = l</VERB> specifies that the j-th tolerance
+          in tol controls the error in the l-th component of
+          <VERB>z(u)</VERB>.  also require that:</SP>
+          <P>
+          <VERB>1 &lt;= ltol(1) &lt; ltol(2) &lt; ... &lt; ltol(ntol)
+          &lt;= mstar</VERB> 
+          </P>
+          
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>tol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>an array of dimension
+          <VERB>ipar(4)</VERB>. <VERB>tol(j)</VERB> is the error
+          tolerance on the <VERB>ltol(j)</VERB> -th component of
+          <VERB>z(u)</VERB>. thus, the code attempts to satisfy for
+          <VERB>j=1:ntol</VERB>  on each subinterval</SP>
+<VERBATIM>
+        abs(z(v)-z(u))       &lt;=     tol(j)*abs(z(u))     +tol(j)
+                     ltol(j)                       ltol(j)
+</VERBATIM>
+          
+          <P>
+    if <VERB>v(x)</VERB> is the approximate solution vector.
+  </P>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>fixpnt</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>an array of dimension <VERB>ipar(11)</VERB>. it contains the points, other than <VERB>aleft</VERB> and <VERB>aright</VERB>, which are to be included in every mesh.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>externals</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>The function <VERB>fsub,dfsub,gsub,dgsub,guess</VERB> are Scilab
+  externals i.e. functions (see syntax below) or the name of a Fortran
+  subroutine (character string) with specified calling sequence or a
+  list. An external as a  character string refers to the name of a
+  Fortran subroutine. The Fortran coded function interface to bvode
+  are specified in the file <VERB>fcol.f</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>fsub</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>name of subroutine for evaluating</SP>
+<VERBATIM>
+                                                t
+                f(x,z(u(x))) =    (f ,...,f     )  
+                                    1      ncomp
+</VERBATIM>
+                <P>
+    at a point x in <VERB>(aleft,aright)</VERB>. it should have the heading  <VERB>[f]=fsub(x,z)</VERB>  where <VERB>f</VERB> is the vector containing the value of <VERB>fi(x,z(u))</VERB> in the i-th component and 
+  </P>
+ <VERBATIM>
+                                                    t
+                         z(u(x))=(z(1),...,z(mstar))
+</VERBATIM>
+                <P>
+    is defined as above under  purpose .
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>dfsub</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>name of subroutine for evaluating the Jacobian of
+                <VERB>f(x,z(u))</VERB> at a point x.  it should have
+                the heading <VERB>[df]=dfsub (x , z )</VERB> where
+                <VERB>z(u(x))</VERB> is defined as for
+                <VERB>fsub</VERB> and the (<VERB>ncomp</VERB>) by
+                (<VERB>mstar</VERB>) array df should be filled by the
+                partial derivatives of  f, viz, for a particular call
+                one calculates</SP>
+
+ <VERBATIM>
+                    df(i,j) = dfi / dzj, i=1,...,ncomp
+                                         j=1,...,mstar.
+</VERBATIM>
+
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>gsub</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>name of subroutine for evaluating the i-th
+                component of
+                 <VERB>g(x,z(u(x))) = g (zeta(i),z(u(zeta(i)))) </VERB>
+                 at a point <VERB>x = zeta(i)</VERB> where
+                  <VERB>1&lt;=i&lt;=mstar.</VERB>
+                </SP>
+                <P>
+                it should have the heading<VERB>[g]=gsub (i ,
+                 z)</VERB> where <VERB>z(u)</VERB> is as for
+                 <VERB>fsub</VERB>, and <VERB>i</VERB> and
+                 <VERB>g=gi</VERB> are as above. Note that in contrast
+                 to <VERB>f</VERB> in <VERB>fsub</VERB> , here only one value per
+                 call is returned in <VERB>g</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>dgsub</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>name of subroutine for evaluating the i-th row of the Jacobian of
+  <VERB>g(x,u(x))</VERB>.  it should have the heading <VERB>[dg]=dgsub
+  (i , z )</VERB> where <VERB>z(u)</VERB> is as for fsub, i as for
+  gsub and the mstar-vector  <VERB>dg</VERB> should be filled with the
+  partial derivatives of g, viz, for a particular call one calculates</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>guess</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>name of subroutine to evaluate the initial approximation for
+  <VERB>z(u(x))</VERB> and for <VERB>dmval(u(x))</VERB>= vector of the
+  mj-th derivatives of <VERB>u(x)</VERB>. it should have the heading
+  <VERB>[z,dmval]= guess (x )</VERB> note that this subroutine is used
+  only if  <VERB>ipar(9) = 1</VERB>, and then all  <VERB>mstar</VERB>
+  components of z and  ncomp  components of  dmval  should be
+  specified for any x,</SP>
+                <P>
+                  <VERB>aleft &lt;= x &lt;= aright .</VERB>
+                </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    this package solves a multi-point boundary value
+    problem for a mixed order system of ode-s given by</P>
+<VERBATIM>
+       (m(i))
+       u       =  f  ( x; z(u(x)) )      i = 1, ... ,ncomp
+        i          i                     aleft &lt; x  &lt; aright,
+                                        
+</VERBATIM>
+
+<VERBATIM>
+       g  ( zeta(j); z(u(zeta(j))) ) = 0   j = 1, ... ,mstar
+        j
+      mstar = m(1)+m(2)+...+m(ncomp),
+</VERBATIM>
+<P> where</P>
+<VERBATIM>
+                                        t
+             u = (u , u , ... ,u     )   
+                   1   2        ncomp    
+</VERBATIM>
+<P>is the exact solution vector</P>
+<VERBATIM>
+              (mi)
+             u     is the mi=m(i) th  derivative of u
+              i                                      i
+</VERBATIM> 
+<VERBATIM>                                     
+
+                                (1)        (m1-1)       (mncomp-1)
+             z(u(x)) = ( u (x),u  (x),...,u    (x),...,u      (x) )
+                          1     1          1            ncomp
+</VERBATIM> 
+<VERBATIM>  
+              f (x,z(u))   
+               i
+</VERBATIM>
+    <P> is a (generally) nonlinear function of <VERB>z(u)=z(u(x))</VERB>.</P>
+<VERBATIM> 
+              g (zeta(j);z(u))  
+               j
+</VERBATIM>
+      <P>  is a (generally) nonlinear function   used to represent a boundary condition.</P>
+
+    <P> the boundary points satisfy</P>
+
+     <P><VERB>aleft &lt;= zeta(1)  &lt;= ..  &lt;= zeta(mstar)  &lt;= aright</VERB>. </P>
+    <P> the orders <VERB>mi</VERB> of the differential equations satisfy</P>
+    <P><VERB>1&lt;=m(i)&lt;=4</VERB>.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+deff('df=dfsub(x,z)','df=[0,0,-6/x**2,-6/x]')
+deff('f=fsub(x,z)','f=(1 -6*x**2*z(4)-6*x*z(3))/x**3')
+deff('g=gsub(i,z)','g=[z(1),z(3),z(1),z(3)];g=g(i)')
+deff('dg=dgsub(i,z)',['dg=[1,0,0,0;0,0,1,0;1,0,0,0;0,0,1,0]';
+                      'dg=dg(i,:)'])
+deff('[z,mpar]=guess(x)','z=0;mpar=0')// unused here
+
+ //define trusol for testing purposes
+deff('u=trusol(x)',[ 
+   'u=0*ones(4,1)';
+   'u(1) =  0.25*(10*log(2)-3)*(1-x) + 0.5 *( 1/x   + (3+x)*log(x) - x)'
+   'u(2) = -0.25*(10*log(2)-3)       + 0.5 *(-1/x^2 + (3+x)/x      + log(x) - 1)'
+   'u(3) = 0.5*( 2/x^3 + 1/x   - 3/x^2)'
+   'u(4) = 0.5*(-6/x^4 - 1/x/x + 6/x^3)'])
+
+fixpnt=0;m=4;
+ncomp=1;aleft=1;aright=2;
+zeta=[1,1,2,2];
+ipar=zeros(1,11);
+ipar(3)=1;ipar(4)=2;ipar(5)=2000;ipar(6)=200;ipar(7)=1;
+ltol=[1,3];tol=[1.e-11,1.e-11];
+res=aleft:0.1:aright;
+z=bvode(res,ncomp,m,aleft,aright,zeta,ipar,ltol,tol,fixpnt,...
+ fsub,dfsub,gsub,dgsub,guess)
+z1=[];for x=res,z1=[z1,trusol(x)]; end;  
+z-z1
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>fort</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHOR>u. ascher, department of computer science, university of british; columbia, vancouver, b. c., canada   v6t 1w5; g. bader, institut f. angewandte mathematik university of heidelberg; im neuenheimer feld 294d-6900 heidelberg 1 ; ; Fortran subroutine colnew.f</AUTHOR>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/dasrt.xml b/scilab/modules/differential_equations/help/fr/dasrt.xml
new file mode 100644 (file)
index 0000000..5953e0f
--- /dev/null
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>dasrt</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>June 1993</DATE>
+  <SHORT_DESCRIPTION name="dasrt"> DAE solver with zero crossing</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[r,nn,[,hd]]=dasrt(x0,t0,t [,atol,[rtol]],res [,jac],ng, surf [,info] [,hd])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>x0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: is either <VERB>y0</VERB> (<VERB>ydot0</VERB> is estimated by
+  <VERB>dassl</VERB> with zero as first estimate) or the matrix
+  <VERB>[y0 ydot0]</VERB>.  <VERB>g(t,y0,ydot0)</VERB> must be equal
+  to zero. If you only know an estimate  of <VERB>ydot0</VERB> set
+  <VERB>info(7)=1</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>y0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector  of initial conditions.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ydot0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> (may be an estimate).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real number is the initial instant.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or vector. Gives instants for which you want the
+  solution. Note that you can get solution at each dassl's step
+  point by setting <VERB>info(2)=1</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nn</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a vector with two entries <VERB>[times num]</VERB>
+  <VERB>times</VERB> is the value of the time at which the surface is
+  crossed, <VERB>num</VERB> is the number of the crossed surface</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalars or column vectors of same size as
+  <VERB>y</VERB>. <VERB>atol,rtol</VERB> give respectively  absolute
+  and relative error tolerances of solution.  If vectors the
+  tolerances are specified for each component of <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value of <VERB>g(t,y,ydot)</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <P>
+    : Its calling sequence must be <VERB>[r,ires]=res(t,y,ydot)</VERB>
+  and <VERB>res</VERB> must return the residue
+  <VERB>r=g(t,y,ydot)</VERB>  and error flag
+  <VERB>ires</VERB>. <VERB>ires = 0</VERB> if <VERB>res</VERB>
+  succeeds to compute <VERB>r</VERB>, <VERB>=-1</VERB>  if residue is
+  locally not defined for <VERB>(t,y,ydot)</VERB>, <VERB>=-2</VERB> if
+  parameters are out of admissible range. </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows:</SP>
+                <VERBATIM>
+<![CDATA[
+list(res,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>res</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=res(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>res</VERB> still returns <VERB>r=g(t,y,ydot)</VERB> as a function of <VERB>(t,y,ydot,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine (see source code of <VERB>fresd.f</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of <VERB>dg/dy+cj*dg/dydot</VERB> for a given value of parameter <VERB>cj</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>r=jac(t,y,ydot,cj)</VERB> and the <VERB>jac</VERB> function must return <VERB>r=dg(t,y,ydot)/dy+cj*dg(t,y,ydot)/dydot</VERB> where <VERB>cj</VERB> is a real scalar</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(jac,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>jac</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=jac(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>jac</VERB> still returns <VERB>dg/dy+cj*dg/dydot</VERB> as a function of <VERB>(t,y,ydot,cj,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>jacdd.f</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>surf</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of the column vector <VERB>surf(t,y)</VERB> with ng components. Each component defines a surface.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>surf(t,y)</VERB></SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(surf,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>surf</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=surf(t,y,x1,x2,...)
+   ]]>
+                </VERBATIM>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>fsurfd.f</VERB>) in directory <VERB>SCDIR/default</VERB></SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>info</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: list which contains <VERB>7</VERB> elements, default value is list([],0,[],[],[],0,0)</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(1)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum time for which <VERB>g</VERB> is allowed  to be evaluated or an empty matrix <VERB>[]</VERB> if no limits imposed for time.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(2)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: flag which indicates if <VERB>dassl</VERB> returns its intermediate  computed values (<VERB>flag=1</VERB>) or only the user specified time point  values (<VERB>flag=0</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(3)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: <VERB>2</VERB> components vector which give the definition <VERB>[ml,mu]</VERB> of band  matrix computed by <VERB>jac</VERB>; <VERB>r(i - j + ml + mu + 1,j) = &quot;dg(i)/dy(j)+cj*dg(i)/dydot(j)&quot;</VERB>.  If <VERB>jac</VERB> returns a full matrix set <VERB>info(3)=[]</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(4)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum step size. Set <VERB>info(4)=[]</VERB> if no  limitation.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(5)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the initial step size. Set <VERB>info(4)=[]</VERB> if  not specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(6)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(6)=1</VERB> if the solution is known to be non negative,  else set <VERB>info(6)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(7)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(7)=1</VERB> if <VERB>ydot0</VERB> is just an estimation, <VERB>info(7)=0</VERB> if <VERB>g(t0,y0,ydot0)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>hd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector which allows to store the <VERB>dassl</VERB> context and to  resume integration</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>r</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real matrix . Each column is the vector [t;x(t);xdot(t)] where t is time index for which the solution had been computed</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the implicit differential equation</P>
+    <VERBATIM>
+<![CDATA[
+    g(t,y,ydot)=0
+    y(t0)=y0  and   ydot(t0)=ydot0
+   ]]>
+    </VERBATIM>
+    <P>
+    Returns the surface crossing instants and the number of the
+    surface reached in <VERB>nn</VERB>.</P>
+    <P>
+    Detailed examples can be found in SCIDIR/tests/dassldasrt.tst</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+//dy/dt = ((2*log(y)+8)/t -5)*y,  y(1) = 1,  1<=t<=6
+//g1 = ((2*log(y)+8)/t - 5)*y 
+//g2 = log(y) - 2.2491 
+y0=1;t=2:6;t0=1;y0d=3;
+atol=1.d-6;rtol=0;ng=2;
+
+deff('[delta,ires]=res1(t,y,ydot)','ires=0;delta=ydot-((2*log(y)+8)/t-5)*y')
+deff('[rts]=gr1(t,y)','rts=[((2*log(y)+8)/t-5)*y;log(y)-2.2491]')
+
+[yy,nn]=dasrt([y0,y0d],t0,t,atol,rtol,res1,ng,gr1);
+//(Should return nn=[2.4698972 2])
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>impl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>fort</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/dassl.xml b/scilab/modules/differential_equations/help/fr/dassl.xml
new file mode 100644 (file)
index 0000000..52e5e14
--- /dev/null
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>dassl</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>June 1993</DATE>
+  <SHORT_DESCRIPTION name="dassl"> differential algebraic equation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[r [,hd]]=dassl(x0,t0,t [,atol,[rtol]],res [,jac] [,info] [,hd])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>x0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: is either <VERB>y0</VERB> (<VERB>ydot0</VERB> is estimated by
+    <VERB>dassl</VERB> with zero as first estimate) or the matrix
+    <VERB>[y0 ydot0]</VERB>.  <VERB>g(t,y0,ydot0)</VERB> must be equal
+    to zero. If you only know an estimate  of <VERB>ydot0</VERB> set
+    <VERB>info(7)=1</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>y0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector  of initial conditions.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>ydot0</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real column vector of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> (may be an estimate).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real number is the initial instant.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or vector. Gives instants for which you want the
+  solution. Note that you can get solution at each dassl's step
+  point by setting <VERB>info(2)=1</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalars or column vectors of same size as <VERB>y</VERB>. <VERB>atol,rtol</VERB> give respectively  absolute and relative error tolerances of solution.  If vectors the tolerances are specified for each component of <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value of <VERB>g(t,y,ydot)</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <P>
+    : Its calling sequence must be <VERB>[r,ires]=res(t,y,ydot)</VERB>
+  and <VERB>res</VERB> must return the residue
+  <VERB>r=g(t,y,ydot)</VERB>  and error flag
+  <VERB>ires</VERB>. <VERB>ires = 0</VERB> if <VERB>res</VERB>
+  succeeds to compute <VERB>r</VERB>, <VERB>=-1</VERB>  if residue is
+  locally not defined for <VERB>(t,y,ydot)</VERB>, <VERB>=-2</VERB> if
+  parameters are out of admissible range. </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows:</SP>
+                <VERBATIM>
+<![CDATA[
+list(res,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>res</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=res(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>res</VERB> still returns <VERB>r=g(t,y,ydot)</VERB> as a function of <VERB>(t,y,ydot,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine (see source code of of <VERB>Ex-dassl.f</VERB> in routines/defaut/).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string). Computes the  value  of <VERB>dg/dy+cj*dg/dydot</VERB> for a given value of parameter <VERB>cj</VERB></SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>function</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Its calling sequence must be <VERB>r=jac(t,y,ydot,cj)</VERB> and the <VERB>jac</VERB> function must return <VERB>r=dg(t,y,ydot)/dy+cj*dg(t,y,ydot)/dydot</VERB> where <VERB>cj</VERB> is a real scalar</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>list</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must be as follows</SP>
+                <VERBATIM>
+<![CDATA[
+list(jac,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P>
+    where the calling sequence of the function <VERB>jac</VERB> is now
+  </P>
+                <VERBATIM>
+<![CDATA[
+r=jac(t,y,ydot,x1,x2,...)
+   ]]>
+                </VERBATIM>
+                <P><VERB>jac</VERB> still returns <VERB>dg/dy+cj*dg/dydot</VERB> as a function of <VERB>(t,y,ydot,cj,x1,x2,...)</VERB>.
+  </P>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>character string</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: it must refer to the name of a fortran subroutine  (see source code of <VERB>Ex-dassl.f</VERB> in routines/defaut/).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>info</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: list which contains <VERB>7</VERB> elements, default value is list([],0,[],[],[],0,0);</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(1)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum time for which <VERB>g</VERB> is allowed  to be evaluated or an empty matrix <VERB>[]</VERB> if no limits imposed for time.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(2)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: flag which indicates if <VERB>dassl</VERB> returns its intermediate  computed values (<VERB>flag=1</VERB>) or only the user specified time point  values (<VERB>flag=0</VERB>).</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(3)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: <VERB>2</VERB> components vector which give the definition <VERB>[ml,mu]</VERB> of band  matrix computed by <VERB>jac</VERB>; <VERB>r(i - j + ml + mu + 1,j) = &quot;dg(i)/dy(j)+cj*dg(i)/dydot(j)&quot;</VERB>.  If <VERB>jac</VERB> returns a full matrix set <VERB>info(3)=[]</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(4)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the maximum step size. Set <VERB>info(4)=[]</VERB> if no  limitation.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(5)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: real scalar which gives the initial step size. Set <VERB>info(4)=[]</VERB> if  not specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(6)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(6)=1</VERB> if the solution is known to be non negative,  else set <VERB>info(6)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>info(7)  </PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: set <VERB>info(7)=1</VERB> if <VERB>ydot0</VERB> is just an estimation, <VERB>info(7)=0</VERB> if <VERB>g(t0,y0,ydot0)=0</VERB>.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>hd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector which allows to store the <VERB>dassl</VERB> context and to  resume integration</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>r</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real matrix . Each column is the vector [t;x(t);xdot(t)] where t is time index for which the solution had been computed</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the implicit differential equation</P>
+    <VERBATIM>
+<![CDATA[
+    g(t,y,ydot)=0
+    y(t0)=y0  and   ydot(t0)=ydot0
+   ]]>
+    </VERBATIM>
+    <P>
+    Detailed examples are given in SCIDIR/tests/dassldasrt.tst</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+ deff('[r,ires]=chemres(t,y,yd)',[
+         'r(1)=-0.04*y(1)+1d4*y(2)*y(3)-yd(1);';
+         'r(2)=0.04*y(1)-1d4*y(2)*y(3)-3d7*y(2)*y(2)-yd(2);'
+         'r(3)=y(1)+y(2)+y(3)-1;'
+         'ires=0']);
+ deff('[pd]=chemjac(x,y,yd,cj)',[
+         'pd=[-0.04-cj , 1d4*y(3)               , 1d4*y(2);';
+         '0.04    ,-1d4*y(3)-2*3d7*y(2)-cj ,-1d4*y(2);';
+         '1       , 1                      , 1       ]'])
+
+y0=[1;0;0];
+yd0=[-0.04;0.04;0];
+t=[1.d-5:0.02:.4,0.41:.1:4,40,400,4000,40000,4d5,4d6,4d7,4d8,4d9,4d10];
+
+
+y=dassl([y0,yd0],0,t,chemres);
+
+info=list([],0,[],[],[],0,0);
+info(2)=1;
+y=dassl([y0,yd0],0,4d10,chemres,info);
+y=dassl([y0,yd0],0,4d10,chemres,chemjac,info);
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>dasrt</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>impl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>fort</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>link</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/feval.xml b/scilab/modules/differential_equations/help/fr/feval.xml
new file mode 100644 (file)
index 0000000..39713f7
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>fr</LANGUAGE>
+  <TITLE>feval  </TITLE>
+  <TYPE>Scilab Function  </TYPE>
+  <DATE>April 1993  </DATE>
+  <SHORT_DESCRIPTION name="feval"> évaluation multiple d&apos;une fonction  </SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+  <CALLING_SEQUENCE_ITEM>[z]=feval(x,y,f)  </CALLING_SEQUENCE_ITEM>
+  <CALLING_SEQUENCE_ITEM>[z]=feval(x,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+ <PARAM_INDENT>
+  <PARAM_ITEM>
+  <PARAM_NAME>x,y  </PARAM_NAME>
+  <PARAM_DESCRIPTION>
+  <SP>
+    : deux vecteurs
+</SP>
+  </PARAM_DESCRIPTION> 
+  </PARAM_ITEM>
+  <PARAM_ITEM>
+  <PARAM_NAME>f  </PARAM_NAME>
+  <PARAM_DESCRIPTION>
+  <SP>
+    : fonction, ou chaîne de caractères pour les appels Fortran ou C
+</SP>
+  </PARAM_DESCRIPTION> 
+  </PARAM_ITEM>
+ </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+  <P>
+    Evaluation multiple d&apos;une fonction pour un ou deux arguments de type vecteur.
+  </P>
+ <DESCRIPTION_INDENT>
+  <DESCRIPTION_ITEM  label='z=feval(x,f)'> 
+  <SP>
+    renvoie le vecteur <VERB>z</VERB> défini par <VERB>z(i)=f(x(i)</VERB>
+</SP>
+  </DESCRIPTION_ITEM>
+
+  <DESCRIPTION_ITEM  label='z=feval(x,y,f)'> 
+  <SP>
+    renvoie la matrice <VERB>z</VERB> telle que  <VERB>z(i,j)=f(x(i),y(j))
+</VERB>  
+</SP>
+</DESCRIPTION_ITEM>
+ </DESCRIPTION_INDENT>
+
+  <P>
+    <VERB>f</VERB> est un &quot;external&quot; (fonction ou routine Fortran ou C) acceptant un ou deux arguments d&apos;entrée supposés réels.
+    Le résultat renvoyé par <VERB>f</VERB> peut par contre être réel ou complexe. 
+    Dans le cas d&apos;un appel Fortran ou C, la fonction <VERB> &apos;f&apos; </VERB> doit être définie dans la fonction <VERB>ffevalf</VERB> (voir dans le dossier <VERB>SCIDIR/routines/default</VERB>)
+  </P>
+  </DESCRIPTION>
+  <EXAMPLE><![CDATA[
+deff('[z]=f(x,y)','z=x^2+y^2');
+feval(1:10,1:5,f)
+deff('[z]=f(x,y)','z=x+%i*y');
+feval(1:10,1:5,f)
+feval(1:10,1:5,'parab')   // voir le fichier ffeval.f
+feval(1:10,'parab')
+// Pour le lien dynamique (voir l'exemple ftest dans ffeval.f)
+// on peut utiliser la commande "link" 
+ ]]></EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM> <LINK>evstr</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>horner</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>execstr</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>external</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>link</LINK> </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/impl.xml b/scilab/modules/differential_equations/help/fr/impl.xml
new file mode 100644 (file)
index 0000000..cda3546
--- /dev/null
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>impl</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="impl"> differential algebraic equation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=impl([type],y0,ydot0,t0,t [,atol, [rtol]],res,adda [,jac])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0,ydot0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vectors or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector (times at which the solution is computed).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>res,adda</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: externals (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>type</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: string <VERB>'adams'</VERB> or <VERB>'stiff'</VERB></SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>atol,rtol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar or real vector of the same size as  as <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or character string or list).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    Solution of the linear implicit differential equation</P>
+    <P>
+    A(t,y) dy/dt=g(t,y), y(t0)=y0</P>
+    <P><VERB>t0</VERB> is the initial instant, <VERB>y0</VERB> is the vector of initial conditions
+    Vector <VERB>ydot0</VERB> of the time derivative of <VERB>y</VERB> at <VERB>t0</VERB> must
+    also be given.
+    r
+    The input <VERB>res</VERB> is an external i.e. a function with
+    specified syntax, or the name a Fortran subroutine or a C function 
+    (character string) with specified calling sequence or a list.</P>
+    <P>
+    If <VERB>res</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+r = res(t,y,ydot)
+   ]]>
+    </VERBATIM>
+    <P>
+    where <VERB>t</VERB> is a real scalar (time) and <VERB>y</VERB> and <VERB>ydot</VERB> are
+    real vector (state and derivative of the state). 
+    This function must return <VERB>r=g(t,y)-A(t,y)*ydot</VERB>.</P>
+    <P>
+    If <VERB>res</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>res</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+    <P>
+    The input <VERB>adda</VERB> is also an external.</P>
+    <P>
+    If <VERB>adda</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+r = adda(t,y,p)
+   ]]>
+    </VERBATIM>
+    <P>
+    and it must return <VERB>r=A(t,y)+p</VERB> where <VERB>p</VERB> is a matrix to be
+    added to <VERB>A(t,y)</VERB>.</P>
+    <P>
+    If <VERB>adda</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>adda</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+    <P>
+    The input <VERB>jac</VERB> is also an external.</P>
+    <P>
+    If <VERB>jac</VERB> is a function, its syntax must be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+j = jac(t,y,ydot)
+   ]]>
+    </VERBATIM>
+    <P>
+    and it must return the Jacobian of <VERB>r=g(t,y)-A(t,y)*ydot</VERB> with
+    respect to <VERB>y</VERB>.</P>
+    <P>
+    If <VERB>jac</VERB> is a character string, it refers to the name of a Fortran
+    subroutine or a C function. See
+    <VERB>SCIDIR/routines/default/Ex-impl.f</VERB> for an example to do that.</P>
+    <P><VERB>jac</VERB> can also be a list: see the help of <VERB>ode</VERB>.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+y=impl([1;0;0],[-0.04;0.04;0],0,0.4,'resid','aplusp');
+// Using hot restart 
+//[x1,w,iw]=impl([1;0;0],[-0.04;0.04;0],0,0.2,'resid','aplusp');
+// hot start from previous call 
+//[x1]=impl([1;0;0],[-0.04;0.04;0],0.2,0.4,'resid','aplusp',w,iw);
+//maxi(abs(x1-x))
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>dassl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/int2d.xml b/scilab/modules/differential_equations/help/fr/int2d.xml
new file mode 100644 (file)
index 0000000..3b5fa4b
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>int2d</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="int2d"> definite 2D integral by quadrature and cubature method</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[I,err]=int2d(X,Y,f [,params])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>X</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 3 by N array containing the abscissae of the vertices   of the N triangles.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Y</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 3 by N array containing the ordinates of the vertices   of the N triangles.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string) defining the integrand <VERB>f(u,v)</VERB>;</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>params</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector <VERB>[tol, iclose, maxtri, mevals, iflag]</VERB>. default value is <VERB>[1.d-10, 1, 50, 4000, 1]</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>tol</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:the desired bound on the error.  If <VERB>iflag=0</VERB>, <VERB>tol</VERB> is interpreted as a bound on the relative error; if <VERB>iflag=</VERB>1, the bound is on the absolute error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>iclose</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:an integer parameter that determines the selection of LQM0 or LQM1 methods.  If <VERB>iclose=1</VERB> then LQM1 is used. Any other value of <VERB>iclose</VERB> causes LQM0 to be used. LQM0 uses function values only at interior points of the triangle.  LQM1 is usually more accurate than LQM0 but involves evaluating the integrand at more points including some on the boundary of the triangle.  It will usually be better to use LQM1 unless the integrand has singularities on the boundary of the triangle.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>maxtri</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:the maximum number of triangles in the final triangulation of the region</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>mevals</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: the maximum number of function evaluations to be allowed.  This number will be effective in limiting the computation only if it is less than 94*<VERB>maxtri</VERB>  when LQM1 is specified or 56*<VERB>maxtri</VERB> when LQM0 is specified.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>iflag</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>:</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>I</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the integral value</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>err</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the estimated error</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>int2d</VERB> computes the two-dimensional integral of a
+    function <VERB>f</VERB> over a region consisting of <VERB>n</VERB> triangles.
+    A total error estimate is obtained and compared with a
+    tolerance - <VERB>tol</VERB> - that is provided as input to the subroutine.
+    The error tolerance is treated as either relative or absolute
+    depending on the input value of <VERB>iflag</VERB>.  A 'Local Quadrature
+    Module' is applied to each input triangle and estimates of the
+    total integral and the total error are computed.  The local
+    quadrature module is either subroutine LQM0 or subroutine
+    LQM1 and the choice between them is determined by the
+    value of the input variable <VERB>iclose</VERB>.</P>
+    <P>
+    If the total error estimate exceeds the tolerance, the triangle
+    with the largest absolute error is divided into two triangles
+    by a median to its longest side.  The local quadrature module
+    is then applied to each of the subtriangles to obtain new
+    estimates of the integral and the error.  This process is
+    repeated until either (1) the error tolerance is satisfied,
+    (2) the number of triangles generated exceeds the input
+    parameter <VERB>maxtri</VERB>, (3) the number of integrand evaluations
+    exceeds the input parameter <VERB>mevals</VERB>, or (4) the function
+    senses that roundoff error is beginning to contaminate
+    the result.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+X=[0,0;1,1;1,0];
+Y=[0,0;0,1;1,1];
+deff('z=f(x,y)','z=cos(x+y)')
+[I,e]=int2d(X,Y,f)
+// computes the integrand over the square [0 1]x[0 1]
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>intc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>int3d</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intg</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>mesh2d</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHOR>Fortran routine twodq Authors: Kahaner,D.K.,N.B.S., Rechard,O.W.,N.B.S.,; Barnhill,Robert,Univ. of UTAH</AUTHOR>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/int3d.xml b/scilab/modules/differential_equations/help/fr/int3d.xml
new file mode 100644 (file)
index 0000000..f860a67
--- /dev/null
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>int3d</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="int3d"> definite 3D integral by quadrature and cubature method</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[result,err]=int3d(X,Y,Z,f [,nf[,params]])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>X</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the abscissae of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Y</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the ordinates of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>Z</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: a 4 by <VERB>NUMTET</VERB> array containing the third coordinates of the vertices   of the <VERB>NUMTET</VERB> tetrahedrons.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external (function or list or string) defining the integrand <VERB>f(xyz,nf)</VERB>, where <VERB>xyz</VERB> is the vector of a point coordinates and nf the number functions</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nf</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the number of function to integate (default is 1)</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>params</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector <VERB>[minpts, maxpts, epsabs, epsrel]</VERB>. default value is <VERB>[0, 1000, 0.0, 1.d-5]</VERB>.</SP>
+          <PARAM_INDENT>
+            <PARAM_ITEM>
+              <PARAM_NAME>epsabs</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Desired bound on the absolute error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>epsrel</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Desired bound on the relative error.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>minpts</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Minimum number of function evaluations.</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+            <PARAM_ITEM>
+              <PARAM_NAME>maxpts</PARAM_NAME>
+              <PARAM_DESCRIPTION>
+                <SP>: Maximum number of function evaluations.  The number of function evaluations over each subregion is 43</SP>
+              </PARAM_DESCRIPTION>
+            </PARAM_ITEM>
+          </PARAM_INDENT>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>result</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: the integral value,or vector of the integral values.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>err</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: Estimates of absolute errors.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    The function calculates an approximation to a given
+    vector of definite integrals</P>
+    <VERBATIM>
+<![CDATA[
+I  I  I (F ,F ,...,F )      dx(3)dx(2)dx(1),
+          1  2      numfun
+   ]]>
+    </VERBATIM>
+    <P>
+    where the region of integration is a collection of
+    NUMTET tetrahedrons and where</P>
+    <VERBATIM>
+<![CDATA[
+F = F (X(1),X(2),X(3)), J = 1,2,...,NUMFUN.
+ J   J
+   ]]>
+    </VERBATIM>
+    <P>
+    A globally adaptive strategy is applied in order to
+    compute approximations <VERB>result(k)</VERB>
+    hopefully satisfying, for each component of I, the
+    following claim for accuracy:
+    <VERB>ABS(I(K)-RESULT(K))&lt;=MAX(EPSABS,EPSREL*ABS(I(K)))</VERB></P>
+    <P><VERB>int3d</VERB> repeatedly subdivides the tetrahedrons with greatest
+    estimated errors and estimates the integrals and the errors over the
+    new subtetrahedrons until the error request is met or <VERB>MAXPTS</VERB>
+    function evaluations have been used.</P>
+    <P>
+    A 43 point integration rule with all evaluation points inside the
+    tetrahedron is applied. The rule has polynomial degree 8.</P>
+    <P>
+    If the values of the input parameters <VERB>EPSABS</VERB> or <VERB>EPSREL</VERB> are
+    selected great enough, an integration rule is applied over each
+    tetrahedron and the results are added up to give the approximations
+    <VERB>RESULT(K)</VERB>. No further subdivision of the tetrahedrons will then
+    be applied.</P>
+    <P>
+    When <VERB>int3d</VERB> computes estimates to a vector of
+    integrals, all components of the vector are given
+    the same treatment. That is, <VERB>I(Fj)</VERB> and <VERB>I(Fk)</VERB> for</P>
+    <P><VERB>j</VERB> not equal to <VERB>k</VERB>, are estimated with the same
+    subdivision of the region of integration.
+    For integrals with enough similarity, we may save
+    time by applying <VERB>int3d</VERB> to all integrands in one call.
+    For integrals that varies continuously as functions of
+    some parameter, the estimates produced by <VERB>int3d</VERB>  will
+    also vary continuously when the same subdivision is
+    applied to all components. This will generally not be
+    the case when the different components are given
+    separate treatment.</P>
+    <P>
+    On the other hand this feature should be used with
+    caution when the different components of the integrals
+    require clearly different subdivisions.</P>
+  </DESCRIPTION>
+  <SECTION label="References">
+    <P>
+    Fortran routine dcutet.f</P>
+  </SECTION>
+  <EXAMPLE>
+<![CDATA[
+X=[0;1;0;0];
+Y=[0;0;1;0];
+Z=[0;0;0;1];
+[RESULT,ERROR]=int3d(X,Y,Z,'int3dex')
+// computes the integrand exp(x*x+y*y+z*z) over the 
+//tetrahedron (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)
+
+
+//integration over a cube  -1<=x<=1;-1<=y<=1;-1<=z<=1
+
+//  bottom  -top-     right    -left-   front   -rear- 
+X=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;          
+   -1,-1,   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1,-1; 
+    1,-1,    1,-1,    1, 1,   -1,-1,    1,-1,    1,-1;     
+    1, 1,    1, 1,    1, 1,   -1,-1,    1, 1,    1, 1];         
+Y=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0; 
+   -1,-1,   -1,-1,   -1, 1,   -1, 1,   -1,-1,    1, 1;
+   -1, 1,   -1, 1,    1, 1,    1, 1,   -1,-1,    1, 1;   
+    1, 1,    1, 1,   -1,-1,   -1,-1,   -1,-1,    1, 1]; 
+Z=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
+   -1,-1,    1, 1,   -1, 1,   -1, 1,   -1,-1,   -1,-1; 
+   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1, 1,   -1, 1;  
+   -1,-1,    1, 1,    1,-1,    1,-1,    1, 1,    1, 1];      
+
+function v=f(xyz,numfun),v=exp(xyz'*xyz),endfunction
+[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])
+
+function v=f(xyz,numfun),v=1,endfunction
+[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])
+
+   ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>intc</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>intl</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>int2d</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+  <AUTHORS>
+    <AUTHORS_ITEM label="Jarle Berntsen"> The Computing Centre,
+University of Bergen, Thormohlens gt. 55,
+N-5008 Bergen, Norway
+Phone..  47-5-544055
+Email..  jarle@eik.ii.uib.no, 
+</AUTHORS_ITEM>
+    <AUTHORS_ITEM label="Ronald Cools"> Dept. of Computer Science,
+Katholieke Universiteit Leuven, Celestijnenlaan 200A,
+B-3030 Heverlee, Belgium
+Phone..  32-16-201015 (3562)
+Email..  ronald@cs.kuleuven.ac.be,
+</AUTHORS_ITEM>
+    <AUTHORS_ITEM label="Terje O. Espelid"> Department of Informatics,
+University of Bergen, Thormohlens gt. 55,
+N-5008 Bergen, Norway
+Phone..  47-5-544180
+Email..  terje@eik.ii.uib.no
+</AUTHORS_ITEM>
+  </AUTHORS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/intg.xml b/scilab/modules/differential_equations/help/fr/intg.xml
new file mode 100644 (file)
index 0000000..43ebc0f
--- /dev/null
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>fr</LANGUAGE>
+  <TITLE>intg  </TITLE>
+  <TYPE>Scilab Function  </TYPE>
+  <DATE>April 1993  </DATE>
+  <SHORT_DESCRIPTION name="intg"> intégration numérique adaptative  </SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[v,err]=intg(a,b,f [,ea [,er])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+       <PARAM_NAME>a,b  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : nombres réels
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>f  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : fonction externe (fonction Scilab ou chaîne de caractères ou liste).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>ea, er  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : nombres réels
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>ea  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : erreur absolue désirée (1.d-14 par défaut)
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>er  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : erreur relative (1.d-8 par défaut)
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>err  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : estimation de l&apos;erreur absolue sur le résultat
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>intg(a,b,f)</VERB> approche l&apos;intégrale de <VERB>a</VERB> à
+      <VERB>b</VERB> de <VERB>f(t)dt</VERB>. La fonction <VERB>f</VERB> doit être
+      continue.</P>
+
+
+    <P>L&apos;évaluation satisfait si possible
+      <VERB>abs(I-v)&lt;= max(ea,er*abs(I))</VERB> où I représente la valeur
+      exacte de l&apos;intégrale. </P>
+
+    <P><VERB>f</VERB> est une fonction externe :</P>
+    <P>Si <VERB>f</VERB>  est une fonction Scilab elle doit avoir la liste
+      d&apos;appel :
+      <VERB>y = f(t)</VERB></P>
+
+    <P>Si <VERB>f</VERB> est une liste, cette liste doit avoir la structure
+      suivante : <VERB> list(f,x1,x2,...)</VERB> où <VERB>f</VERB> est une
+      fonction Scilab avec la liste d&apos;appel : <VERB>f(t,x1,x2,...)</VERB>.</P>
+    
+    <P>Si <VERB>f</VERB> est une chaîne de caractères, ce paramètre désigne le
+      nom d'un fonction Fortran ou d'une procédure C ayant une liste d'appel fixée:  </P>
+
+    <P>Dans le cas Fortran la liste d'appel doit être:
+      <VERB>double precision function f(x)</VERB> où <VERB>x</VERB> est aussi
+      un nombre double precision. </P>
+    <P>Dans la cas  C la liste d'appel doit être:
+      <VERB>double f(double *x)</VERB>. </P>
+
+    
+  </DESCRIPTION>
+  <EXAMPLE><![CDATA[
+    //External écrit en Scilab
+    function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
+    exact=-2.5432596188;
+    I=intg(0,2*%pi,f)
+    abs(exact-I)
+
+    //External écrit en Scilab avec un argument
+    function y=f1(x,w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
+    I=intg(0,2*%pi,list(f1,30))
+    abs(exact-I)
+
+
+    // External écrit en Fortran (un compilateur Fortran est nécessaire)
+    // Ecriture du code fortran
+    F=['      double precision function ffun(x)'
+    '      double precision x,pi'
+    '      pi=3.14159265358979312d+0'
+    '      ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)'
+    '      return'
+    '      end'];
+    mputl(F,TMPDIR+'/ffun.f')
+    // compilation du code Fortran
+    l=ilib_for_link('ffun','ffun.o',[],'f',TMPDIR+'/Makefile');
+    // link incrémental
+    link(l,'ffun','f')
+    // integration de la fonction
+    I=intg(0,2*%pi,'ffun')
+    abs(exact-I)
+
+    // External écrit en C (un compilateur C est nécessaire)
+    // Ecriture du code C
+    C=['#include <math.h>'
+    'double cfun(double *x)'
+    '{'
+    '  double y,pi=3.14159265358979312;'
+    '  y=*x/(2.0e0*pi);'
+    '  return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);'
+    '}'];
+    mputl(C,TMPDIR+'/cfun.c')
+    // compilation du code C
+    l=ilib_for_link('cfun','cfun.o',[],'c',TMPDIR+'/Makefile');
+    // incremental linking
+    link(l,'cfun','c')
+    // integration de la fonction
+    I=intg(0,2*%pi,'cfun')
+    abs(exact-I)
+
+    ]]></EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM> <LINK>intc</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>intl</LINK> </SEE_ALSO_ITEM>  
+    <SEE_ALSO_ITEM> <LINK>inttrap</LINK> </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM> <LINK>intsplin</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>ode</LINK> </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+
+  <USED_FUNCTIONS>
+    <P>Les programmes correspondants (dqag0.f et  dqags.f de quadpack)  se
+      trouvent dabs le repertoire   routines/integ  :</P>
+  </USED_FUNCTIONS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/ode.xml b/scilab/modules/differential_equations/help/fr/ode.xml
new file mode 100644 (file)
index 0000000..fdd4e53
--- /dev/null
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>fr</LANGUAGE>
+  <TITLE>ode  </TITLE>
+  <TYPE>Scilab Function  </TYPE>
+  <DATE>February 1998  </DATE>
+  <SHORT_DESCRIPTION name="ode"> solveur d&apos;équations différentielles ordinaires  </SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=ode(y0,t0,t,f)  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>[y,rd,w,iw]=ode(&quot;root&quot;,y0,t0,t [,rtol [,atol]],f  [,jac],ng,g [,w,iw])  </CALLING_SEQUENCE_ITEM>
+    <CALLING_SEQUENCE_ITEM>y=ode(&quot;discrete&quot;,y0,k0,kvect,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+       <PARAM_NAME>y0  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : vecteur ou matrice réelle (conditions initiales).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>t0  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : réel (instant initial).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>t  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : vecteur réel (instants où la solution est renvoyée).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>f  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : fonction externe (fonction Scilab ou chaîne de caractères ou liste).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>type  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : une des chaînes de caractères : <VERB>&quot;adams&quot; &quot;stiff&quot; &quot;rk&quot; &quot;rkf&quot; &quot;fix&quot; &quot;discrete&quot; &quot;roots&quot;</VERB>
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>rtol,atol  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : constantes ou vecteurs réels de même taille que <VERB>y</VERB>.
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>jac  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : fonction externe (fonction Scilab, chaîne de caractères ou liste).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>w,iw  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : vecteurs réels
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>ng  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : entier
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>g  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : fonction externe (fonction Scilab, chaîne de caractères ou liste).
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+       <PARAM_NAME>k0  </PARAM_NAME>
+       <PARAM_DESCRIPTION>
+         <SP>
+           : entier (instant initial). kvect : vecteur d&apos;entiers
+         </SP>
+       </PARAM_DESCRIPTION> 
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <SP>
+      <VERB>ode</VERB> est la fonction utilisée pour approcher la solution
+      d&apos;une équation différentielle ordinaire (EDO) explicite du premier
+      ordre en temps, définie par :
+      dy/dt=f(t,y) , y(t0)=y0.
+      Il s&apos;agit d&apos;une interface vers diverses librairies, en particulier ODEPACK.
+      Le type du problème et la méthode utilisée dépendent de la valeur du
+      premier argument optionnel <VERB>type</VERB> qui peut être égal à :
+    </SP>
+    
+    <DESCRIPTION_INDENT>
+      <DESCRIPTION_ITEM  label='&lt;aucun&gt; :'> 
+       <SP>
+         le solveur <VERB>lsoda</VERB> du package ODEPACK est utilisé par défaut. Il choisit automatiquement entre un schéma prédicteur-correcteur d&apos;Adams et un schéma adapté au systèmes raides (stiff) de type &quot;Backward Differentiation Formula&quot; (BDF). Initialement le schéma adapté aux système non raides est choisi puis la méthode adaptée est ensuite choisie dynamiquement. 
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;adams&quot; :'> 
+       <SP>
+         Problèmes non raides. Le solveur <VERB>lsode</VERB> du package ODEPACK est utilisé (schéma d&apos;Adams).
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;stiff&quot; :'> 
+       <SP>
+         Pour les systèmes raides. Le solveur <VERB>lsode</VERB> du package ODEPACK est utilisé avec le schéma BDF.
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;rk&quot; :'> 
+       <SP>
+         Schéma de Runge-Kutta adaptatif d&apos;ordre 4 (RK4).
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;rkf&quot; :'> 
+       <SP>
+         Formules de Shampine et Watts basées sur les paires de Runge-Kutta Fehlberg d&apos;ordre 4 et 5 (RKF45). Bien pour les problèmes non raides ou moyennement raides, lorsque le calcul du second membre n&apos;est pas trop coûteux. Cette méthode est à éviter si l&apos;on recherche une très grande précision.
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;fix&quot;:'> 
+       <SP>
+         Identique à &quot;rkf&quot;, mais l&apos;interface est simplifiée, i.e. uniquement <VERB>rtol</VERB> et <VERB>atol</VERB>  sont communiqués au solveur. 
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;root&quot;:'> 
+       <SP>
+         Solveur d&apos;EDO avec recherche de racines.  Le solveur <VERB>lsodar</VERB> du package ODEPACK est utilisé. C&apos;est une variante de <VERB>lsoda</VERB> permettant la recherche d&apos;une racine d&apos;une fonction vectorielle donnée. Voir ode_root pour plus de détails.
+       </SP>
+      </DESCRIPTION_ITEM>
+
+      <DESCRIPTION_ITEM  label='&quot;discrete&quot;:'> 
+       <SP>
+         Simulation en temps discret. Voir ode_discrete pour plus de détails.
+       </SP>
+      </DESCRIPTION_ITEM>
+    </DESCRIPTION_INDENT>
+    <P>
+      Ici on ne décrit l&apos;usage de <VERB>ode</VERB> que pour des EDO explicites.
+    </P>
+    <DESCRIPTION_INDENT>
+      <DESCRIPTION_ITEM>
+      <SP>L&apos;appel le plus simple de <VERB>ode</VERB> est du type :
+      <VERB>y=ode(y0,t0,t,f)</VERB>
+      où <VERB>y0</VERB> est le vecteur des conditions initiales, <VERB>t0</VERB> est le temps initial, et <VERB>t</VERB> est le vecteur des instants où l&apos;on veut une approximation de la solution. 
+      <VERB>y</VERB> est calculée et <VERB>y</VERB>  est la matrice 
+      <VERB>y=[y(t(1)),y(t(2)),...]</VERB>.    </SP>
+    <P>
+      Le paramètre d&apos;entrée <VERB>f</VERB> de <VERB>ode</VERB> défini le
+         membre de droite de léquation différentielle du premier ordre
+         dy/dt=f(t,y). C'est un external qui peut être :
+    </P>
+       <DESCRIPTION_INDENT>
+         <DESCRIPTION_ITEM>
+           <P>
+             Soit  une fonction Scilab, sa syntaxe doit être  <VERB>ydot = f(t,y)</VERB> 
+             où <VERB>t</VERB> est un scalaire (le temps), <VERB>y</VERB> un vecteur
+             (l&apos;état).
+             Cette fonction renvoie le second membre de l&apos;équation
+             différentielle dy/dt=f(t,y).
+           </P>
+         </DESCRIPTION_ITEM> 
+         <DESCRIPTION_ITEM>
+           <SP>
+             Soit  une chaîne de caractères, elle désigne le nom d&apos;une subroutine Fortran
+             ou une procédure C, i.e. si <VERB>ode(y0,t0,t,&quot;fex&quot;)</VERB> est la
+             commande, alors la procedure <VERB>fex</VERB> est appelée.  </SP>
+           <P>Si c'est une subroutine Fortran, sa liste d&apos;appel doit être</P>
+           <VERBATIM><![CDATA[
+             subroutine fex(n,t,y,ydot) 
+             integer n
+             double precision t,y(*),ydot(*)
+             ]]></VERBATIM>
+            <SP> Si c'est une fonction C son prototype doit être:</SP>
+           <VERBATIM><![CDATA[
+             void fex(int *n,double *t,double *y,double *ydot)
+             ]]></VERBATIM>
+           <P>Cet external peut être compilé par l'utilitaire
+             <LINK>ilib_for_link</LINK> et chargé dynamiquement par la
+             fonction <LINK>link</LINK>. </P>
+         </DESCRIPTION_ITEM> 
+         <DESCRIPTION_ITEM>
+           <SP>
+             Soit une liste  avec la structure suivante <VERB>list(vrai_f,u1,u2,...un)</VERB>
+           où <VERB>vrai_f</VERB> est une fonction avec la syntaxe 
+               <VERB>ydot = vrai_f(t,y,u1,u2,...,un)</VERB></SP>
+     
+           <P>
+             Cette syntaxe permet de passer des paramètres sous forme
+             d&apos;arguments supplémentaires de <VERB>vrai_f</VERB>.
+
+           </P>
+         </DESCRIPTION_ITEM> 
+       </DESCRIPTION_INDENT>
+
+       <P>
+         La fonction <VERB>f</VERB> peut renvoyer une matrice <VERB>p x q</VERB> au lieu d&apos;un vecteur. 
+         Dans ce cas, on résout le système d&apos;EDO <VERB>n=p+q</VERB> 
+         <VERB>dY/dt=F(t,Y)</VERB> où <VERB>Y</VERB> est une matrice <VERB>p x q</VERB>.
+         La condition initiale <VERB>Y0</VERB> doit aussi être une matrice
+         <VERB>p x q</VERB> matrix et le résultat renvoyé par <VERB>ode</VERB>
+         est la matrice:  <VERB>p x q(T+1)</VERB> égale à <VERB>[Y(t_0),Y(t_1),...,Y(t_T)]</VERB>.
+       </P>
+     </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+       <SP>
+         Des paramètres optionnels contrôlent la tolérance du schéma :
+         <VERB>rtol</VERB> et <VERB>atol</VERB> 
+         sont des valeurs seuil sur les erreurs estimées (relative et absolue) 
+         L&apos;erreur estimée sur <VERB>y(i)</VERB> est <VERB>rtol(i)*abs(y(i))+atol(i)</VERB>
+       </SP>
+       <P>
+         Si <VERB>rtol</VERB> et/ou <VERB>atol</VERB> sont des constantes <VERB>rtol(i)</VERB> et/ou 
+         <VERB>atol(i)</VERB> prennent ces valeurs. Les valeurs par défaut de
+         <VERB>rtol</VERB> et <VERB>atol</VERB>
+         sont respectivement <VERB>rtol=1.d-5</VERB> et
+         <VERB>atol=1.d-7</VERB> pour la plupart des solveurs et
+         <VERB>rtol=1.d-3</VERB> et <VERB>atol=1.d-4</VERB> pour
+         <VERB>&quot;rfk&quot;</VERB> et <VERB>&quot;fix&quot;</VERB>.
+       </P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+
+       <SP>
+         Pour les problèmes raides, il est recommandé de fournir la jacobienne du second membre
+         sous forme de l&apos;argument optionnel <VERB>jac</VERB>. Le
+         paramètre <VERB>jac</VERB> de <VERB>ode</VERB> est par exemple une
+         fonction Scilab, dont la syntaxe est imposée, ou le nom d&apos;une
+         subroutine Fortran ou C (chaîne de caractères) ou une liste.
+       </SP>
+       <P>
+         Si <VERB>jac</VERB> est une fonction Scilab sa syntaxe doit être
+         <VERB>J=jac(t,y)</VERB> 
+       </P>
+       <P>
+         où <VERB>t</VERB> est un scalaire (le temps) et <VERB>y</VERB> un vecteur (l&apos;état).
+         La matrice <VERB>J</VERB> doit renvoyer df/dx i.e. 
+         <VERB>J(k,i) = dfk /dxi</VERB> avec <VERB>fk</VERB> = k-ième composante de f.
+       </P>
+       <P>
+         Si <VERB>f</VERB> est une chaîne de caractères, elle désigne le nom d&apos;une subroutine Fortran
+         ou C. </P>
+       <SP>En Fortran, Cette routine doit avoir la liste d&apos;appel suivante : </SP>
+
+           <VERBATIM><![CDATA[
+             subroutine fex(n,t,y,ml,mu,J,nrpd) 
+             integer n,ml,mu,nrpd
+             double precision t,y(*),J(*)
+             ]]></VERBATIM>
+            <SP> Si c'est une fonction C son prototype doit être:</SP>
+           <VERBATIM><![CDATA[
+             void fex(int *n,double *t,double *y,int *ml,int *mu,double *J,int *nrpd,)
+             ]]></VERBATIM>
+       <SP> Dans la plupart des cas il n&apos;est pas nécessaire
+         d&apos;utiliser <VERB>ml</VERB>, <VERB>mu</VERB> et
+         <VERB>nrpd</VERB>, qui sont relatif aà la possibilité de stockage
+         "bande" du Jacobien </SP>
+       <P>
+      Si <VERB>jac</VERB> est une liste, les mêmes conventions que pour <VERB>f</VERB> s&apos;appliquent.
+    </P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+    <P>
+      Les arguments optionnels <VERB>w</VERB> et <VERB>iw</VERB> sont 
+      des vecteurs ou le solveur stocke des informations sur son état(voir
+         <LINK>ode_optional_output</LINK> pour plus de détails) . Lorsque ces
+         paramêtres sont utilisés comme argument d'entrée, ils permettent de
+         redémarrer l&apos;intégration au point où elle
+         s&apos;était arrêtée à la sortie d'un apple précédent à  <VERB>ode</VERB>.
+    </P>
+      </DESCRIPTION_ITEM>
+      <DESCRIPTION_ITEM>
+    <P>
+      Plus d&apos;options peuvent être passées aux solveurs d&apos;ODEPACK en utilisant la variable
+      <VERB>%ODEOPTIONS</VERB>. Voir <LINK>odeoptions</LINK>.
+    </P>
+      </DESCRIPTION_ITEM>
+    </DESCRIPTION_INDENT>
+  </DESCRIPTION>
+  <EXAMPLE><![CDATA[
+  
+    // ---------- EDO Simple  (external : fonction Scilab)
+    // dy/dt=y^2-y sin(t)+cos(t), y(0)=0
+    function ydot=f(t,y),ydot=y^2-y*sin(t)+cos(t),endfunction
+    y0=0;t0=0;t=0:0.1:%pi;
+    y=ode(y0,t0,t,f)
+    plot(t,y)
+
+    // ---------- EDO Simple  (external : code C)
+    ccode=['#include <math.h>'
+          'void myode(int *n,double *t,double *y,double *ydot)'
+          '{'
+          '  ydot[0]=y[0]*y[0]-y[0]*sin(*t)+cos(*t);'
+          '}']
+    mputl(ccode,TMPDIR+'/myode.c') //create the C file
+    ilib_for_link('myode','myode.o',[],'c',TMPDIR+'/Makefile',TMPDIR+'/loader.sce');//compile
+    exec(TMPDIR+'/loader.sce') //incremental linking
+    y0=0;t0=0;t=0:0.1:%pi;
+    y=ode(y0,t0,t,'myode');
+       
+    // ---------- Simulation de dx/dt = A x(t) + B u(t) avec u(t)=sin(omega*t),
+    // x0=[1;0]
+    // solution x(t) desired at t=0.1, 0.2, 0.5 ,1.
+    // A and u function are passed to RHS function in a list. 
+    // B and omega are passed as global variables
+    function xdot=linear(t,x,A,u),xdot=A*x+B*u(t),endfunction
+    function ut=u(t),ut=sin(omega*t),endfunction
+    A=[1 1;0 2];B=[1;1];omega=5;
+    ode([1;0],0,[0.1,0.2,0.5,1],list(linear,A,u))
+
+    // ----------Integration de l'équation différentielle de Riccati (état matriciel)
+    // Xdot=A'*X + X*A - X'*B*X + C , X(0)=Identity
+    // Solution at t=[1,2] 
+    function Xdot=ric(t,X),Xdot=A'*X+X*A-X'*B*X+C,endfunction  
+    A=[1,1;0,2]; B=[1,0;0,1]; C=[1,0;0,1];
+    t0=0;t=0:0.1:%pi;
+    X=ode(eye(A),0,t,ric)
+    //
+    // ---------- Calcul de exp(A)  (état matriciel)
+    A=[1,1;0,2];
+    function xdot=f(t,x),xdot=A*x;,endfunction 
+    ode(eye(A),0,1,f)
+    ode("adams",eye(A),0,1,f)
+
+    // ----------  Calcul de exp(A)  (état matriciel, cas raide, jacobien fourni)
+    A=[10,0;0,-1];
+    function xdot=f(t,x),xdot=A*x,endfunction 
+    function J=Jacobian(t,y),J=A,endfunction 
+    ode("stiff",[0;1],0,1,f,Jacobian)
+    ]]></EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM> <LINK>ode_discrete</LINK> </SEE_ALSO_ITEM>  
+    <SEE_ALSO_ITEM> <LINK>ode_root</LINK> </SEE_ALSO_ITEM>  
+    <SEE_ALSO_ITEM> <LINK>dassl</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>impl</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>odedc</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>odeoptions</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>csim</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>ltitr</LINK> </SEE_ALSO_ITEM> 
+    <SEE_ALSO_ITEM> <LINK>rtitr</LINK> </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+
+  <AUTHORS>
+    <AUTHORS_ITEM label='Alan C. Hindmarsh'>,  mathematics and statistics division, l-316
+      livermore, ca 94550.19</AUTHORS_ITEM>
+  </AUTHORS>
+  <BIBLIO>
+    <SP>Alan C. Hindmarsh,  lsode and lsodi, two new initial value
+    ordinary differential equation solvers,
+    acm-signum newsletter, vol. 15, no. 4 (1980), pp. 10-11.</SP>
+  </BIBLIO>
+
+  <USED_FUNCTIONS>
+    <SP>Les sous programmes associés se trouvent dans le repertoire  routines/integ:
+      lsode.f lsoda.f lsodar.f
+    </SP>
+  </USED_FUNCTIONS>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/ode_discrete.xml b/scilab/modules/differential_equations/help/fr/ode_discrete.xml
new file mode 100644 (file)
index 0000000..a3f892b
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>ode_discrete</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="ode_discrete"> ordinary differential equation solver, discrete time simulation</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y=ode(&quot;discrete&quot;,y0,k0,kvect,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>k0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>kvect</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer vector.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    With this syntax (first argument equal to <VERB>&quot;discrete&quot;</VERB>)
+    <VERB>ode</VERB> computes recursively <VERB>y(k+1)=f(k,y(k))</VERB>
+    from an initial state
+    <VERB>y(k0)</VERB> and returns <VERB>y(k)</VERB> for <VERB>k</VERB> in <VERB>kvect</VERB>.
+    <VERB>kvect(1)</VERB> must be greater than or equal to <VERB>k0</VERB>.</P>
+    <P>
+    Other arguments and other options are the same as for <VERB>ode</VERB>, see the
+    ode help.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+y1=[1;2;3]; deff("yp=a_function(k,y)","yp=A*y+B*u(k)")
+A=diag([0.2,0.5,0.9]); B=[1;1;1];u=1:10;n=5;
+y=ode("discrete",y1,1,1:n,a_function);
+y(:,2)-(A*y1+B*u(1))
+// Now y evaluates  at [y3,y5,y7,y9]
+y=ode("discrete",y1,1,3:2:9,a_function)
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/ode_optional_output.xml b/scilab/modules/differential_equations/help/fr/ode_optional_output.xml
new file mode 100644 (file)
index 0000000..86b4de6
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+  <MAN>
+    <LANGUAGE>eng</LANGUAGE>
+    <TITLE>ode</TITLE>
+    <TYPE>Scilab Function</TYPE>
+    <DATE>February 1998</DATE>
+    <SHORT_DESCRIPTION name="ode_optional_output"> ode solvers optional outputs description</SHORT_DESCRIPTION>
+    <DESCRIPTION>
+      <SP>
+      This page describes the the most important values returned in the
+      optional lhs <LINK>ode</LINK> function arguments <VERB>w</VERB> and
+      <VERB>iw</VERB>.
+      These are valid only for the <VERB>lsode</VERB> 
+      <VERB>lsoda</VERB> and  <VERB>lsodar</VERB> ode solver.
+       For more details, one can look at the solvers fortran code comments in <VERB>routines/integ/lsod*.f</VERB>.
+      </SP>
+      <DESCRIPTION_INDENT>
+       <DESCRIPTION_ITEM   label='w(11)'> 
+         <SP> the step size in t last used (successfully).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(12)'> 
+         <SP> the step size to be attempted on the next step.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(13)'> 
+         <SP> the current value of the independent variable
+           which the solver has actually reached, i.e. the
+           current internal mesh point in t.  on output, tcur
+           will always be at least as far as the argument
+           t, but may be farther (if interpolation was done).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(14)'> 
+         <SP> a tolerance scale factor, greater than 1.0,
+           computed when a request for too much accuracy was
+           detected (istate = -3 if detected at the start of
+           the problem, istate = -2 otherwise).  if itol is
+           left unaltered but rtol and atol are uniformly
+           scaled up by a factor of <VERB>tolsf=w(14)</VERB> for the next call,
+           then the solver is deemed likely to succeed.
+           (the user may also ignore <VERB>tolsf</VERB> and alter the
+           tolerance parameters in any other way appropriate.)</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='w(15)'> 
+         <SP> the value of t at the time of the last method
+           switch, if any. This value is not significant with
+           <VERB>lsode</VERB> solver. </SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(10)'> 
+         <SP> the number of <VERB>g</VERB>  evaluations for the problem so
+           far. This value is only significant for <VERB>lsodar</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+
+       <DESCRIPTION_ITEM   label='iw(11)'> 
+         <SP> the number of steps taken for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(12)'> 
+         <SP> the number of f evaluations for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(13)'> 
+         <SP> the number of jacobian evaluations (and of matrix
+           lu decompositions) for the problem so far.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(14)'> 
+         <SP> the method order last used (successfully).</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(15)'> 
+         <SP> the order to be attempted on the next step.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(16)'> 
+         <SP> the index of the component of largest magnitude in
+           the weighted local error vector ( e(i)/ewt(i) ),
+           on an error return with istate = -4 or -5.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(17)'> 
+         <SP> the length of <VERB>w</VERB> actually required, assuming
+           that the length of rwork is to be fixed for the
+           rest of the problem, and that switching may occur.
+           this is defined on normal returns and on an illegal
+           input return for insufficient storage.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(18)'> 
+         <SP> the length of <VERB>iw</VERB> actually required, assuming
+           that the length of <VERB>iw</VERB> is to be fixed for the
+           rest of the problem, and that switching may occur.
+           this is defined on normal returns and on an illegal
+           input return for insufficient storage.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(19)'> 
+         <SP> the method indicator for the last successful step..
+           1 means adams (nonstiff), 2 means bdf (stiff). This value is not significant with
+           <VERB>lsode</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+       <DESCRIPTION_ITEM   label='iw(20)'> 
+         <SP> the current method indicator..
+           1 means adams (nonstiff), 2 means bdf (stiff).
+           this is the method to be attempted
+           on the next step.  thus it differs from <VERB>iw(19)</VERB>
+           only if a method switch has just been made. This value is not significant with
+           <VERB>lsode</VERB> solver.</SP>
+       </DESCRIPTION_ITEM>
+      </DESCRIPTION_INDENT>
+    </DESCRIPTION>
+  </MAN>
diff --git a/scilab/modules/differential_equations/help/fr/ode_root.xml b/scilab/modules/differential_equations/help/fr/ode_root.xml
new file mode 100644 (file)
index 0000000..a0b10b2
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>ode_root</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="ode_root"> ordinary differential equation solver with root finding</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>y,rd[,w,iw]=ode(&quot;root&quot;,y0,t0,t [,rtol  [,atol]],f  [,jac],ng,g [,w,iw])  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector or matrix (initial conditions).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector (times at which the solution is computed).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>rtol,atol</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real constants or real vectors of the same size as <VERB>y</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>jac</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>w,iw</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vectors.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>ng</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>g</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+    With this syntax (first argument equal to <VERB>&quot;root&quot;</VERB>)
+    <VERB>ode</VERB>
+    computes the solution
+    of the differential equation <VERB>dy/dt=f(t,y)</VERB> until the state
+    <VERB>y(t)</VERB> crosses the surface <VERB>g(t,y)=0</VERB>.</P>
+    <P><VERB>g</VERB> should give the equation of the surface.
+    It is an external i.e. a function with
+    specified syntax, or the name of a Fortran subroutine or a C function 
+    (character string) with specified calling sequence or a list.</P>
+    <P>
+    If <VERB>g</VERB> is a function the syntax should be as follows:</P>
+    <VERBATIM>
+<![CDATA[
+z=g(t,y)
+   ]]>
+    </VERBATIM>
+    <P>
+    where <VERB>t</VERB> is a real scalar (time)  and <VERB>y</VERB> a real vector (state).
+    It returns a vector of size <VERB>ng</VERB> which corresponds to 
+    the <VERB>ng</VERB> constraints. 
+    If <VERB>g</VERB> is a character string it refers to the name of a Fortran
+    subroutine or a C function, with the following calling sequence: 
+    <VERB>g(n,t,y,ng,gout)</VERB>
+    where <VERB>ng</VERB> is the number of constraints and 
+    <VERB>gout</VERB> is the value of <VERB>g</VERB> (output of the program).
+    If <VERB>g</VERB> is a list the same conventions as for <VERB>f</VERB> apply (see ode
+    help).</P>
+    <P>
+    Ouput <VERB>rd</VERB> is a <VERB>1 x k</VERB> vector. The first entry contains the stopping
+    time. Other entries indicate which components of <VERB>g</VERB> have changed
+    sign. <VERB>k</VERB> larger than 2 indicates that more than one surface
+    (<VERB>(k-1)</VERB> surfaces) have been simultaneously traversed.</P>
+    <P>
+    Other arguments and other options are the same as for <VERB>ode</VERB>, see the
+    ode help.</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+// Integration of the differential equation
+// dy/dt=y , y(0)=1, and finds the minimum time t such that y(t)=2
+deff("[ydot]=f(t,y)","ydot=y")
+deff("[z]=g(t,y)","z=y-2")
+y0=1;ng=1;
+[y,rd]=ode("roots",y0,0,2,f,ng,g)
+
+
+deff("[z]=g(t,y)","z=y-[2;2;33]")
+[y,rd]=ode("roots",1,0,2,f,3,g)
+
+
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>dasrt</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/odedc.xml b/scilab/modules/differential_equations/help/fr/odedc.xml
new file mode 100644 (file)
index 0000000..ed08056
--- /dev/null
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>odedc</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>April 1993</DATE>
+  <SHORT_DESCRIPTION name="odedc"> discrete/continuous ode solver</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>yt=odedc(y0,nd,stdel,t0,t,f)  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>y0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real column vector (initial conditions), <VERB>y0=[y0c;y0d]</VERB> where <VERB>y0d</VERB> has <VERB>nd</VERB> components.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>nd</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: integer, dimension of <VERB>y0d</VERB></SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>stdel</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real vector with one or two entries, <VERB>stdel=[h, delta]</VERB> (with <VERB>delta=0</VERB> as default value).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t0</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real scalar (initial time).</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>t</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: real (row) vector, instants where <VERB>yt</VERB> is calculated .</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+      <PARAM_ITEM>
+        <PARAM_NAME>f</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: external i.e. function or character string or list with calling sequence: <VERB>yp=f(t,yc,yd,flag)</VERB>.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P><VERB>y=odedc([y0c;y0d],nd,[h,delta],t0,t,f)</VERB>
+    computes the solution of a mixed discrete/continuous system. 
+    The discrete system state <VERB>yd_k</VERB> is embedded into a  piecewise constant <VERB>yd(t)</VERB> time function as follows:</P>
+    <VERBATIM>
+<![CDATA[
+yd(t)=yd_k for t in 
+[t_k=delay+k*h,t_(k+1)=delay+(k+1)*h[ (with delay=h*delta).
+   ]]>
+    </VERBATIM>
+    <P>
+    The simulated equations are now:</P>
+    <VERBATIM>
+<![CDATA[
+dyc/dt=f(t,yc(t),yd(t),0),  for t in [t_k,t_(k+1)[
+yc(t0)=y0c
+   ]]>
+    </VERBATIM>
+    <P>
+    and at instants <VERB>t_k</VERB> the discrete variable <VERB>yd</VERB> is updated by:</P>
+    <VERBATIM>
+<![CDATA[
+yd(t_k+)=f(yc(t_k-),yd(t_k-),1)
+   ]]>
+    </VERBATIM>
+    <P>
+    Note that, using the definition of <VERB>yd(t)</VERB> the last equation gives</P>
+    <VERBATIM>
+<![CDATA[
+yd_k = f (t_k,yc(t_k-),yd(t_(k-1)),1)  (yc is time-continuous: yc(t_k-)=yc(tk))
+   ]]>
+    </VERBATIM>
+    <P>
+    The calling parameters of <VERB>f</VERB> are fixed: <VERB>ycd=f(t,yc,yd,flag)</VERB>;
+    this function must return either the derivative of the vector <VERB>yc</VERB> if
+    <VERB>flag=0</VERB> or the update of <VERB>yd</VERB> if <VERB>flag=1</VERB>.</P>
+    <P><VERB>ycd=dot(yc)</VERB> must be a vector with same dimension as <VERB>yc</VERB> 
+    if <VERB>flag=0</VERB> and <VERB>ycd=update(yd)</VERB> must be a vector with same 
+    dimension as <VERB>yd</VERB> if <VERB>flag=1</VERB>.</P>
+    <P><VERB>t</VERB> is a vector of instants where the solution <VERB>y</VERB> is computed.</P>
+    <P><VERB>y</VERB> is the vector <VERB>y=[y(t(1)),y(t(2)),...]</VERB>.
+    This function can be called with the same optional parameters as the
+    <VERB>ode</VERB> function (provided <VERB>nd</VERB> and <VERB>stdel</VERB> are given
+    in the calling sequence as second and third parameters).
+    In particular integration flags, tolerances can be set. Optional
+    parameters can be set by the <VERB>odeoptions</VERB> function.</P>
+    <P>
+    An example for calling an external routine is given in directory 
+    <VERB>SCIDIR/default/fydot2.f</VERB></P>
+    <P>
+    External routines can be dynamically linked (see <VERB>link</VERB>).</P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+//Linear system with switching input
+deff('xdu=phis(t,x,u,flag)','if flag==0 then xdu=A*x+B*u; else xdu=1-u;end');
+x0=[1;1];A=[-1,2;-2,-1];B=[1;2];u=0;nu=1;stdel=[1,0];u0=0;t=0:0.05:10;
+xu=odedc([x0;u0],nu,stdel,0,t,phis);x=xu(1:2,:);u=xu(3,:);
+nx=2;
+plot2d1('onn',t',x',[1:nx],'161');
+plot2d2('onn',t',u',[nx+1:nx+nu],'000');
+//Fortran external( see fydot2.f): 
+norm(xu-odedc([x0;u0],nu,stdel,0,t,'phis'),1)
+
+//Sampled feedback 
+//
+//        |     xcdot=fc(t,xc,u)
+//  (system)   |
+//        |     y=hc(t,xc)
+//
+//
+//        |     xd+=fd(xd,y)
+//  (feedback) |
+//        |     u=hd(t,xd)
+//
+deff('xcd=f(t,xc,xd,iflag)',...
+  ['if iflag==0 then '
+   '  xcd=fc(t,xc,e(t)-hd(t,xd));'
+   'else '
+   '  xcd=fd(xd,hc(t,xc));'
+   'end']);
+A=[-10,2,3;4,-10,6;7,8,-10];B=[1;1;1];C=[1,1,1];
+Ad=[1/2,1;0,1/20];Bd=[1;1];Cd=[1,1];
+deff('st=e(t)','st=sin(3*t)')
+deff('xdot=fc(t,x,u)','xdot=A*x+B*u')
+deff('y=hc(t,x)','y=C*x')
+deff('xp=fd(x,y)','xp=Ad*x + Bd*y')
+deff('u=hd(t,x)','u=Cd*x')
+h=0.1;t0=0;t=0:0.1:2;
+x0c=[0;0;0];x0d=[0;0];nd=2;
+xcd=odedc([x0c;x0d],nd,h,t0,t,f);
+norm(xcd-odedc([x0c;x0d],nd,h,t0,t,'fcd1')) // Fast calculation (see fydot2.f)
+plot2d([t',t',t'],xcd(1:3,:)');
+xset("window",2);plot2d2("gnn",[t',t'],xcd(4:5,:)');
+xset("window",0);
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>odeoptions</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>csim</LINK>
+    </SEE_ALSO_ITEM>
+    <SEE_ALSO_ITEM>
+      <LINK>external</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/help/fr/odeoptions.xml b/scilab/modules/differential_equations/help/fr/odeoptions.xml
new file mode 100644 (file)
index 0000000..b566b80
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>odeoptions</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 1998</DATE>
+  <SHORT_DESCRIPTION name="odeoptions"> set options for ode solvers</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>odeoptions()  </CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <DESCRIPTION>
+    <P>
+    This function interactively displays a command which
+    should be executed to set various options of ode solvers.
+    The global variable <VERB>%ODEOPTIONS</VERB> sets the options.</P>
+    <P>
+    CAUTION: the <VERB>ode</VERB> function checks if this variable
+    exists and in this case it uses it. For using default
+    values you should clear this variable. Note that <VERB>odeoptions</VERB>
+    does not create this variable. To create it you must execute
+    the command line displayed by <VERB>odeoptions</VERB>.</P>
+    <P>
+    The variable <VERB>%ODEOPTIONS</VERB> is a vector with the following elements:</P>
+    <VERBATIM>
+<![CDATA[
+[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,ml,mu]
+   ]]>
+    </VERBATIM>
+    <P>
+    The default value is:</P>
+    <VERBATIM>
+<![CDATA[
+[1,0,0,%inf,0,2,500,12,5,0,-1,-1]
+   ]]>
+    </VERBATIM>
+    <P>
+    The meaning of the elements is described below.</P>
+    <P><VERB>itask</VERB>
+     1 : normal computation at specified times
+     2 : computation at mesh points (given in first row of output of <VERB>ode</VERB>)
+     3 : one step at one internal mesh point and return
+     4 : normal computation without overshooting <VERB>tcrit</VERB>
+     5 : one step, without passing <VERB>tcrit</VERB>, and return</P>
+    <P><VERB>tcrit</VERB>
+      assumes <VERB>itask</VERB> equals 4 or 5, described above</P>
+    <P><VERB>h0</VERB>
+      first step tried</P>
+    <P><VERB>hmax</VERB>
+      max step size</P>
+    <P><VERB>hmin</VERB>
+      min step size</P>
+    <P><VERB>jactype</VERB>
+     0 : functional iterations, no jacobian used (<VERB>&quot;adams&quot;</VERB> or
+         <VERB>&quot;stiff&quot;</VERB> only)
+     1 : user-supplied full jacobian
+     2 : internally generated full jacobian
+     3 : internally generated diagonal jacobian (<VERB>&quot;adams&quot;</VERB> or 
+         <VERB>&quot;stiff&quot;</VERB> only)
+     4 : user-supplied banded jacobian (see <VERB>ml</VERB> and <VERB>mu</VERB> below)
+     5 : internally generated banded jacobian (<VERB>see</VERB> ml and <VERB>mu</VERB> below)</P>
+    <P><VERB>maxordn</VERB> 
+     maximum non-stiff order allowed, at most 12</P>
+    <P><VERB>maxords</VERB>
+     maximum stiff order allowed, at most 5</P>
+    <P><VERB>ixpr</VERB> 
+     print level, 0 or 1</P>
+    <P><VERB>ml</VERB>,<VERB>mu</VERB>
+     If <VERB>jactype</VERB> equals 4 or 5, <VERB>ml</VERB> and <VERB>mu</VERB> are the lower
+     and upper half-bandwidths of the banded jacobian: the band is the
+     i,j's with i-ml &lt;= j &lt;= ny-1.
+     If <VERB>jactype</VERB> equals 4 the jacobian function must return
+     a matrix J which is  ml+mu+1 x ny (where ny=dim of y in ydot=f(t,y))
+     such that column 1 of J is made of mu zeros followed by
+     df1/dy1, df2/dy1, df3/dy1, ... (1+ml possibly non-zero entries)
+     column 2 is made of mu-1 zeros followed by df1/dx2, df2/dx2, etc</P>
+  </DESCRIPTION>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <LINK>ode</LINK>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/differential_equations/macros/buildmacros.sce b/scilab/modules/differential_equations/macros/buildmacros.sce
new file mode 100644 (file)
index 0000000..f57a24d
--- /dev/null
@@ -0,0 +1,8 @@
+//------------------------------------
+// Allan CORNET INRIA 2005
+//------------------------------------
+SCI=getenv('SCI'); 
+TMPDIR=getenv('TMPDIR');
+//------------------------------------
+genlib('diffequlib','SCI/modules/differential_equations/macros');
+//------------------------------------
@@ -3,7 +3,7 @@ c
 C      implicit undefined (a-z)
 c     Copyright ENPC (Jean-Philippe Chancelier )
 c     -----------------------------------------------------
-      include '../stack.h'
+      include 'stack.h'
       character*(*) fname
       character*(nlgh+1)   efsub,edfsub,egsub,edgsub,eguess
       integer    kfsub,kdfsub,kgsub,kdgsub,kguess,topk
@@ -4,7 +4,7 @@ C     dasrt
 c ====================================================================
 c
 c     Copyright INRIA/ENPC 
-      INCLUDE '../stack.h'
+      INCLUDE 'stack.h'
 c
       character*(*) fname
       character*(nlgh+1) namjac
@@ -4,7 +4,7 @@ c     ============================================
       subroutine dassli(fname)\r
       character*(*) fname\r
 c     ============================================\r
-      INCLUDE '../stack.h'\r
+      INCLUDE 'stack.h'\r
 c\r
       integer iadr,sadr\r
       integer topk,topw, info(15),gettype\r
@@ -4,7 +4,7 @@ C     feval(x1,x2,external) -> external(x1(i),x2(j))
 C     feval(x1,external)    -> external(x1(i))
 c      implicit undefined (a-z)
 c     Copyright ENPC (Jean-Philippe Chancelier 
-      include '../stack.h'
+      include 'stack.h'
       character*(5) fname
       character*(nlgh+1)   ename
       integer m1,n1,lb,m2,n2,la,i,j,nn,lr,lc,lb1,lbc1,lrr,lcr
@@ -1,6 +1,6 @@
                subroutine sciimpl(fname)\r
 c     ==================================================\r
-      INCLUDE '../stack.h'\r
+      INCLUDE 'stack.h'\r
 c\r
       character*(*) fname\r
       integer iadr,sadr\r
@@ -3,7 +3,7 @@ c
 c     ode\r
 c\r
 c     Copyright INRIA\r
-      include '../stack.h'\r
+      include 'stack.h'\r
       integer iadr,sadr\r
 c\r
 c     common de lsode,lsoda,lsodar\r
@@ -3,7 +3,7 @@ c ====================================================================
 c     simulation non lineaire hybride
 c ====================================================================
 c     Copyright INRIA
-      include '../stack.h'
+      include 'stack.h'
       integer iadr,sadr
 c
 c     common de lsode,lsoda,lsodar
@@ -1116,7 +1116,7 @@ c     iw
 c     fin de odedc.....
       end
 c      subroutine pristk(il,n)
-c      include '../stack.h'
+c      include 'stack.h'
 c      write(6,*) (istk(il+i),i=0,n-1)
 c      end
 
similarity index 97%
rename from scilab/routines/interf/dassl.c
rename to scilab/modules/differential_equations/src/c/dassl.c
index 3b627b8..78c27b5 100644 (file)
@@ -1,7 +1,7 @@
 /* C driver over ddassl to handle longjump from xerhlt*/
 
 #include <setjmp.h>
-#include "../machine.h"
+#include "machine.h"
 extern jmp_buf slatec_jmp_env; 
 
 extern void C2F(ddassl)(void *res, int *neq, double *t, double *y, double *yprime, 
diff --git a/scilab/modules/differential_equations/src/c/differential_equations.vcproj b/scilab/modules/differential_equations/src/c/differential_equations.vcproj
new file mode 100644 (file)
index 0000000..7488cfe
--- /dev/null
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="8,00"\r
+       Name="differential_equations"\r
+       ProjectGUID="{F0190B5D-FB21-47A2-99AC-06627CDD0F8A}"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="../../includes;../../../core/includes;../../../../libs/MALLOC/includes;"\r
+                               PreprocessorDefinitions="_LIB;STRICT;_DEBUG;_CRT_SECURE_NO_DEPRECATE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="1"\r
+                               UsePrecompiledHeader="0"\r
+                               PrecompiledHeaderFile=""\r
+                               AssemblerListingLocation="$(ConfigurationName)/"\r
+                               ObjectFile="$(ConfigurationName)/"\r
+                               ProgramDataBaseFileName="$(ConfigurationName)/"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1036"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="../../../../libs/differential_equations.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                               CommandLine="cd &quot;$(IntDir)&quot; &gt;nul&#x0D;&#x0A;for %%f in (*.obj) do  ..\..\..\..\..\bin\dumpexts -o %%~nf.def -n libscilab.dll %%f &gt;nul&#x0D;&#x0A;copy *.def differential_equations.def &gt;nul&#x0D;&#x0A;copy differential_equations.def ..\..\..\..\..\libs\differential_equations.def &gt;nul&#x0D;&#x0A;del *.def &gt;nul&#x0D;&#x0A;cd .. &gt;nul&#x0D;&#x0A;"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               FavorSizeOrSpeed="1"\r
+                               AdditionalIncludeDirectories="../../includes;../../../core/includes;../../../../libs/MALLOC/includes;"\r
+                               PreprocessorDefinitions="NDEBUG;_LIB;STRICT;_CRT_SECURE_NO_DEPRECATE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="0"\r
+                               EnableFunctionLevelLinking="true"\r
+                               EnableEnhancedInstructionSet="1"\r
+                               UsePrecompiledHeader="0"\r
+                               PrecompiledHeaderFile=""\r
+                               AssemblerListingLocation="$(ConfigurationName)/"\r
+                               ObjectFile="$(ConfigurationName)/"\r
+                               ProgramDataBaseFileName="$(ConfigurationName)/"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               CompileAs="0"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1036"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="../../../../libs/differential_equations.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                               CommandLine="cd &quot;$(IntDir)&quot; &gt;nul&#x0D;&#x0A;for %%f in (*.obj) do  ..\..\..\..\..\bin\dumpexts -o %%~nf.def -n libscilab.dll %%f &gt;nul&#x0D;&#x0A;copy *.def differential_equations.def &gt;nul&#x0D;&#x0A;copy differential_equations.def ..\..\..\..\..\libs\differential_equations.def &gt;nul&#x0D;&#x0A;del *.def &gt;nul&#x0D;&#x0A;cd .. &gt;nul&#x0D;&#x0A;"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+                       >\r
+                       <File\r
+                               RelativePath=".\dassl.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations1.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations2.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations3.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations4.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations5.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\gw_differential_equations6.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_bvode.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_feval.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_int2d.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_int3d.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_intg.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\sci_gateway\c\sci_ode.c"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl"\r
+                       >\r
+               </Filter>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations1.fundef"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations2.fundef"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations3.fundef"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations4.fundef"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations5.fundef"\r
+                       >\r
+               </File>\r
+               <File\r
+                       RelativePath="..\..\sci_gateway\differential_equations6.fundef"\r
+                       >\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/scilab/modules/differential_equations/src/fortran/differential_equations_f.vfproj b/scilab/modules/differential_equations/src/fortran/differential_equations_f.vfproj
new file mode 100644 (file)
index 0000000..9601ede
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<VisualStudioProject ProjectType="typeStaticLibrary" ProjectCreator="Intel Fortran" Keyword="Static Library" Version="9.10" ProjectIdGuid="{28E4E9CA-3EEC-43EE-9F15-56259C6677B8}">\r
+       <Platforms>\r
+               <Platform Name="Win32"/></Platforms>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.lib;$(TargetPath)" ConfigurationType="typeStaticLibrary">\r
+                               <Tool Name="VFMidlTool" SuppressStartupBanner="true" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>\r
+                               <Tool Name="VFPreBuildEventTool"/>\r
+                               <Tool Name="VFPostBuildEventTool" CommandLine="cd $(IntDir)\r
+for %%f in (*.obj) do  ..\..\..\..\..\bin\dumpexts -o %%~nf.def -n scilex.dll %%f &gt;nul\r
+copy *.def differential_equations_f.def &gt;nul\r
+copy differential_equations_f.def ..\..\..\..\..\libs\differential_equations_f.def &gt;nul\r
+del *.def &gt;nul\r
+cd .."/>\r
+                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" OptimizeForProcessor="procOptimizeBlended" AdditionalIncludeDirectories="../../includes;../../../core/includes;" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebug" DisableDefaultLibSearch="true" CompileOnly="true"/>\r
+                               <Tool Name="VFCustomBuildTool"/>\r
+                               <Tool Name="VFLibrarianTool" OutputFile="../../../../libs/differential_equations_f.lib" SuppressStartupBanner="true"/>\r
+                               <Tool Name="VFPreLinkEventTool"/>\r
+                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration>\r
+               <Configuration Name="Release|Win32" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.lib;$(TargetPath)" ConfigurationType="typeStaticLibrary">\r
+                               <Tool Name="VFMidlTool" SuppressStartupBanner="true" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>\r
+                               <Tool Name="VFPreBuildEventTool"/>\r
+                               <Tool Name="VFPostBuildEventTool" CommandLine="cd $(IntDir)\r
+for %%f in (*.obj) do  ..\..\..\..\..\bin\dumpexts -o %%~nf.def -n scilex.dll %%f &gt;nul\r
+copy *.def differential_equations_f.def &gt;nul\r
+copy differential_equations_f.def ..\..\..\..\..\libs\differential_equations_f.def &gt;nul\r
+del *.def &gt;nul\r
+cd .."/>\r
+                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" OptimizeForProcessor="procOptimizePentiumProThruIII" AdditionalIncludeDirectories="../../includes;../../../core/includes;" PreprocessorDefinitions="WIN32" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="static /threads" DisableDefaultLibSearch="true" CompileOnly="true"/>\r
+                               <Tool Name="VFCustomBuildTool"/>\r
+                               <Tool Name="VFLinkerTool" MustRebuild="true" OutputFile="$(OutDir)/$(ProjectName)" SuppressStartupBanner="true"/>\r
+                               <Tool Name="VFLibrarianTool" MustRebuild="true" OutputFile="../../../../libs/differential_equations_f.lib" SuppressStartupBanner="true"/>\r
+                               <Tool Name="VFPreLinkEventTool"/>\r
+                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration></Configurations>\r
+       <Files>\r
+               <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">\r
+               <File RelativePath="int2d.f"/>\r
+               <File RelativePath="int3d.f"/>\r
+               <File RelativePath="intg.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_bvode.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_dasrt.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_dassl.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_feval.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_impl.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_ode.f"/>\r
+               <File RelativePath="..\..\sci_gateway\fortran\sci_odedc.f"/></Filter>\r
+               <Filter Name="Header Files" Filter="fi;fd"/>\r
+               <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations6.fundef"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations1.fundef"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations2.fundef"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations3.fundef"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations4.fundef"/>\r
+               <File RelativePath="..\..\sci_gateway\differential_equations5.fundef"/></Files>\r
+       <Globals/></VisualStudioProject>\r
similarity index 99%
rename from scilab/routines/interf/int2d.f
rename to scilab/modules/differential_equations/src/fortran/int2d.f
index 39af1c1..04f57b6 100644 (file)
@@ -3,7 +3,7 @@ C     --------------------------------------------
 c     Scilab intg 
 c      implicit undefined (a-z)
 c     Copyright INRIA
-      include '../stack.h'
+      include 'stack.h'
       character*(5) fname
       character*(nlgh+1) namef
       integer iero 
similarity index 99%
rename from scilab/routines/interf/int3d.f
rename to scilab/modules/differential_equations/src/fortran/int3d.f
index a005814..efeac20 100644 (file)
@@ -3,7 +3,7 @@ C     --------------------------------------------
 c     Scilab int3d 
 c      implicit undefined (a-z)
 c     Copyright INRIA
-      include '../stack.h'
+      include 'stack.h'
       character*(5) fname
       character*(nlgh+1) namef
       integer iero 
similarity index 98%
rename from scilab/routines/interf/intg.f
rename to scilab/modules/differential_equations/src/fortran/intg.f
index 610ad35..e3fab27 100644 (file)
@@ -5,7 +5,7 @@ c      implicit undefined (a-z)
 c     Copyright INRIA
       character*(4) fname
       character*6   namef
-      include '../stack.h'
+      include 'stack.h'
       integer iero 
       common/ierajf/iero
       common/cintg/namef
index 249baef..cb676d4 100644 (file)
                                >
                        </File>
                        <File
-                               RelativePath=".\dassl.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations1.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations2.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations3.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations4.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations5.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\gw_differential_equations6.c"
-                               >
-                       </File>
-                       <File
                                RelativePath=".\hmops.c"
                                >
                        </File>
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_bvode.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_feval.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_int2d.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_int3d.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_intg.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_ode.c"
-                               >
-                       </File>
-                       <File
                                RelativePath=".\stcreate.c"
                                >
                        </File>
                        </File>
                </Filter>
                <File
-                       RelativePath=".\bva.fundef"
-                       >
-               </File>
-               <File
-                       RelativePath=".\def.fundef"
-                       >
-               </File>
-               <File
                        RelativePath=".\dsRC.fundef"
                        >
                </File>
                <File
-                       RelativePath=".\feval.fundef"
-                       >
-               </File>
-               <File
-                       RelativePath=".\imp.fundef"
-                       >
-               </File>
-               <File
                        RelativePath=".\interp.fundef"
                        >
                </File>
                        >
                </File>
                <File
-                       RelativePath=".\odc.fundef"
-                       >
-               </File>
-               <File
-                       RelativePath=".\ode.fundef"
-                       >
-               </File>
-               <File
-                       RelativePath=".\polelm.fundef"
-                       >
-               </File>
-               <File
                        RelativePath=".\ric.fundef"
                        >
                </File>
index 6181937..4b11c2d 100644 (file)
@@ -6,32 +6,32 @@
                <Configuration Name="Debug|Win32" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.lib;$(TargetPath)" ConfigurationType="typeStaticLibrary">
                                <Tool Name="VFMidlTool" SuppressStartupBanner="true" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
                                <Tool Name="VFPreBuildEventTool"/>
-                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" OptimizeForProcessor="procOptimizeBlended" Preprocess="preprocessYes" AdditionalIncludeDirectories="../../modules/core/includes" OpenMPConditionalCompilation="false" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" Diagnostics="diagnosticsDisableAll" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebug" DisableDefaultLibSearch="true" CompileOnly="true"/>
                                <Tool Name="VFPostBuildEventTool" CommandLine="cd $(IntDir)
 for %%f in (*.obj) do  ..\..\..\..\bin\dumpexts -o %%~nf.def -n scilex.dll %%f &gt;nul
 copy *.def interf_f.def &gt;nul
 copy interf_f.def ..\..\..\..\libs\interf_f.def &gt;nul
 del *.def &gt;nul
 cd .."/>
+                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" OptimizeForProcessor="procOptimizeBlended" Preprocess="preprocessYes" AdditionalIncludeDirectories="../../modules/core/includes" OpenMPConditionalCompilation="false" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" Diagnostics="diagnosticsDisableAll" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebug" DisableDefaultLibSearch="true" CompileOnly="true"/>
                                <Tool Name="VFCustomBuildTool"/>
-                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/>
+                               <Tool Name="VFLibrarianTool" OutputFile="../../../libs/interf_f.lib" SuppressStartupBanner="true" IgnoreAllDefaultLibraries="true"/>
                                <Tool Name="VFPreLinkEventTool"/>
-                               <Tool Name="VFLibrarianTool" OutputFile="../../../libs/interf_f.lib" SuppressStartupBanner="true" IgnoreAllDefaultLibraries="true"/></Configuration>
+                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration>
                <Configuration Name="Release|Win32" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.lib;$(TargetPath)" ConfigurationType="typeStaticLibrary">
                                <Tool Name="VFMidlTool" SuppressStartupBanner="true" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
                                <Tool Name="VFPreBuildEventTool"/>
-                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" OptimizeForProcessor="procOptimizePentiumProThruIII" Preprocess="preprocessYes" AdditionalIncludeDirectories="../../modules/core/includes" PreprocessorDefinitions="WIN32" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreaded" DisableDefaultLibSearch="true" CompileOnly="true"/>
                                <Tool Name="VFPostBuildEventTool" CommandLine="cd $(IntDir)
 for %%f in (*.obj) do  ..\..\..\..\bin\dumpexts -o %%~nf.def -n scilex.dll %%f &gt;nul
 copy *.def interf_f.def &gt;nul
 copy interf_f.def ..\..\..\..\libs\interf_f.def &gt;nul
 del *.def &gt;nul
 cd .."/>
+                               <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" OptimizeForProcessor="procOptimizePentiumProThruIII" Preprocess="preprocessYes" AdditionalIncludeDirectories="../../modules/core/includes" PreprocessorDefinitions="WIN32" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreaded" DisableDefaultLibSearch="true" CompileOnly="true"/>
                                <Tool Name="VFCustomBuildTool"/>
                                <Tool Name="VFLinkerTool" MustRebuild="true" OutputFile="$(OutDir)/$(ProjectName)" SuppressStartupBanner="true"/>
-                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/>
+                               <Tool Name="VFLibrarianTool" MustRebuild="true" OutputFile="../../../libs/interf_f.lib" SuppressStartupBanner="true"/>
                                <Tool Name="VFPreLinkEventTool"/>
-                               <Tool Name="VFLibrarianTool" MustRebuild="true" OutputFile="../../../libs/interf_f.lib" SuppressStartupBanner="true"/></Configuration></Configurations>
+                               <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration></Configurations>
        <Files>
                <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
                <File RelativePath="..\followpath.f"/>
@@ -39,9 +39,6 @@ cd .."/>
                <File RelativePath="..\hndlops.f"/>
                <File RelativePath="..\indxg.f"/>
                <File RelativePath="..\insertfield.f"/>
-               <File RelativePath="..\int2d.f"/>
-               <File RelativePath="..\int3d.f"/>
-               <File RelativePath="..\intg.f"/>
                <File RelativePath="..\intl_e.f"/>
                <File RelativePath="..\intl_i.f"/>
                <File RelativePath="..\intlinmeq.f"/>
@@ -57,13 +54,6 @@ cd .."/>
                <File RelativePath="..\matric.f"/>
                <File RelativePath="..\misops.f"/>
                <File RelativePath="..\newsave.f"/>
-               <File RelativePath="..\sci_bvode.f"/>
-               <File RelativePath="..\sci_dasrt.f"/>
-               <File RelativePath="..\sci_dassl.f"/>
-               <File RelativePath="..\sci_feval.f"/>
-               <File RelativePath="..\sci_impl.f"/>
-               <File RelativePath="..\sci_ode.f"/>
-               <File RelativePath="..\sci_odedc.f"/>
                <File RelativePath="..\stack0.f"/>
                <File RelativePath="..\v2cunit.f"/>
                <File RelativePath="..\v2unit.f"/></Filter>
diff --git a/scilab/routines/interf/matimp.f b/scilab/routines/interf/matimp.f
deleted file mode 100644 (file)
index a80e1d0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-      subroutine matimp
-c ====================================================================
-c     impl dassl dasrt : simulation  de systeme algebrico-differentiel
-c ====================================================================
-c     Copyright INRIA
-      INCLUDE '../stack.h'
-c     impl     dassl     dasrt
-c     1         2          3
-      if (ddt .eq. 4) then
-         write(buf(1:4),'(i4)') fin
-         call basout(io,wte,' matimp '//buf(1:4))
-      endif
-c     
-      goto(10,100,1000) fin
-      return
-c     impl part 
- 10   call sciimpl("impl")
-      return
- 100  call dassli("dassl")
-      return
- 1000 call dasrti("dasrt")
-      return
-      end
-      
-   
\ No newline at end of file
index 16d7d12..c12c708 100644 (file)
@@ -94,6 +94,7 @@ clear  larg L
 
  exec("SCI/modules/helptools/etc/helptools.start",-1);
  
+ exec("SCI/modules/differential_equations/etc/differential_equations.start",-1);
  exec("SCI/modules/core/etc/core.start",-1);
  exec("SCI/modules/special_functions/etc/special_functions.start",-1);
  exec("SCI/modules/linear_algebra/etc/linear_algebra.start",-1);