1 <?xml version="1.0" encoding="UTF-8"?>
2 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="intg" xml:lang="fr">
4 <refname>intg</refname>
5 <refpurpose>intégration numérique adaptative</refpurpose>
8 <title>Séquence d'appel</title>
9 <synopsis>[v,err]=intg(a,b,f [,ea [,er])</synopsis>
12 <title>Paramètres</title>
17 <para>nombres réels.</para>
23 <para>fonction externe (fonction Scilab ou chaîne de caractères ou
31 <para>nombres réels.</para>
37 <para>erreur absolue désirée (1.d-14 par défaut).</para>
43 <para>erreur relative (1.d-8 par défaut).</para>
49 <para>estimation de l'erreur absolue sur le résultat.</para>
55 <title>Description</title>
57 <literal>intg(a,b,f)</literal> approche l'intégrale de
58 <literal>a</literal> à <literal>b</literal> de <literal>f(t)dt</literal>.
59 La fonction <literal>f</literal> doit être continue.
62 L'évaluation satisfait si possible <literal>abs(I-v)<=
65 où <literal>I</literal> représente la valeur exacte de
69 <literal>f</literal> est une fonction externe :
72 Si <literal>f</literal> est une fonction Scilab elle doit avoir la
73 liste d'appel : <literal>y = f(t)</literal>
76 Si <literal>f</literal> est une liste, cette liste doit avoir la
77 structure suivante : <literal> list(f,x1,x2,...)</literal> où
78 <literal>f</literal> est une fonction Scilab avec la liste d'appel :
79 <literal>f(t,x1,x2,...)</literal>.
82 Si <literal>f</literal> est une chaîne de caractères, ce paramètre
83 désigne le nom d'un fonction Fortran ou d'une procédure C ayant une liste
87 Dans le cas Fortran la liste d'appel doit être: <literal>double
88 precision function f(x)
90 où <literal>x</literal> est aussi un
91 nombre double precision.
94 Dans la cas C la liste d'appel doit être: <literal>double f(double
101 <title>Exemples</title>
102 <programlisting role="example"><![CDATA[
103 //External écrit en Scilab
104 function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
109 //External écrit en Scilab avec un argument
110 function y=f1(x,w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
111 I=intg(0,2*%pi,list(f1,30))
115 // External écrit en Fortran (un compilateur Fortran est nécessaire)
116 // Ecriture du code fortran
118 F=[' double precision function ffun(x)'
119 ' double precision x,pi'
120 ' pi=3.14159265358979312d+0'
121 ' ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)'
124 mputl(F,fullfile(TMPDIR,'ffun.f'))
126 // compilation du code Fortran
127 l=ilib_for_link('ffun',fullfile(TMPDIR,'ffun.f'),[],'f');
132 // integration de la fonction
133 I=intg(0,2*%pi,'ffun')
136 // External écrit en C (un compilateur C est nécessaire)
137 // Ecriture du code C
138 C=['#include <math.h>'
139 'double cfun(double *x)'
141 ' double y,pi=3.14159265358979312;'
143 ' return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);'
145 mputl(C,fullfile(TMPDIR,'cfun.c'))
147 // compilation du code C
148 l=ilib_for_link('cfun',fullfile(TMPDIR,'cfun.c'),[],'c');
150 // incremental linking
153 // integration de la fonction
154 I=intg(0,2*%pi,'cfun')
158 <refsection role="see also">
159 <title>Voir aussi</title>
160 <simplelist type="inline">
162 <link linkend="intc">intc</link>
165 <link linkend="intl">intl</link>
168 <link linkend="inttrap">inttrap</link>
171 <link linkend="intsplin">intsplin</link>
174 <link linkend="ode">ode</link>
179 <title>Fonctions Utilisées</title>
180 <para>Les programmes correspondants (dqag0.f et dqags.f de quadpack) se
181 trouvent dans le répertoire SCI/modules/differential_equations/src/fortran/.