1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2008 - INRIA
7 * This file must be used under the terms of the CeCILL.
8 * This source file is licensed as described in the file COPYING, which
9 * you should have received as part of this distribution. The terms
10 * are also available at
11 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
14 <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="ru">
16 <refname>intg</refname>
17 <refpurpose>определённый интеграл</refpurpose>
20 <title>Последовательность вызова</title>
21 <synopsis>[v,err]=intg(a,b,f [,ea [,er])</synopsis>
24 <title>Аргументы</title>
29 <para>вещественные числа</para>
35 <para>внешняя функция (функция, список или строка)</para>
41 <para>вещественные числа</para>
48 абсолютная ошибка, требуемая для результата. Значение по
57 относительная ошибка, требуемая для результата. Значение по
66 оцененная абсолютная ошибка результата.
73 <title>Описание</title>
75 <literal>intg(a,b,f)</literal> вычисляет определённый интеграл функции
76 <literal>f(t)</literal> по <literal>dt</literal> в пределах от
77 <literal>a</literal> до <literal>b</literal>.
78 Функция <literal>f(t)</literal> должна быть непрерывной.
81 Вычисление, как можно ожидать, удовлетворяет следующему условию точности:
82 <literal>abs(I-v)<= max(ea,er*abs(I))</literal>, где
83 <literal>I</literal> -- точное значение интеграла.
86 <literal>f</literal> -- внешняя функция:
91 Если <literal>f</literal> -- функция, то её определение должно иметь вид
92 <literal>y = f(t)</literal>.
97 Если <literal>f</literal> -- список, то этот список должен быть в виде:
98 <literal> list(f,x1,x2,...)</literal>, где <literal>f</literal> --
99 функция с последовательностью вызова <literal>f(t,x1,x2,...)</literal>.
104 Если <literal>f</literal> -- строка, то она ссылается на имя либо
105 процедуры Fortran либо функции C с заданной последовательностью вызова:
111 в случае Fortran вызывающая последовательность должна быть
112 в виде <literal>double precision function f(x)</literal>, где
113 <literal>x</literal> также является числом двойной точности.
118 В случае C вызывающая последовательность должна быть
119 <literal>double f(double *x)</literal>.
126 <title>Примеры</title>
127 <programlisting role="example"><![CDATA[
128 // Функция, написанная на языке Scilab
129 function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
134 // Функция с аргументом, написанном на языке Scilab
135 function y=f1(x,w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
136 I=intg(0,2*%pi,list(f1,30))
140 // Функция, написанная на Fortran (требуется компилятор Fortran)
141 // определение функции Fortran
143 F=[' double precision function ffun(x)'
144 ' double precision x,pi'
145 ' pi=3.14159265358979312d+0'
146 ' ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)'
149 mputl(F,fullfile(TMPDIR,'ffun.f'))
152 // компилируем функцию
153 l=ilib_for_link('ffun',fullfile(TMPDIR,'ffun.f'),[],'f');
155 // добавляем функцию в рабочее окружение
158 // интегрируем функцию
159 I=intg(0,2*%pi,'ffun')
162 // Функция, написанная на C (требуется компилятор C)
163 // определение C-функции
164 C=['#include <math.h>'
165 'double cfun(double *x)'
167 ' double y,pi=3.14159265358979312;'
169 ' return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);'
171 mputl(C,fullfile(TMPDIR,'cfun.c'))
173 // компилируем функцию
174 l=ilib_for_link('cfun',fullfile(TMPDIR,'cfun.c'),[],'c');
176 // добавляем функцию в рабочее окружение
179 // интегрируем функцию
180 I=intg(0,2*%pi,'cfun')
184 <refsection role="see also">
185 <title>Смотрите также</title>
186 <simplelist type="inline">
188 <link linkend="intc">intc</link>
191 <link linkend="intl">intl</link>
194 <link linkend="inttrap">inttrap</link>
197 <link linkend="intsplin">intsplin</link>
200 <link linkend="ode">ode</link>
205 <title>Используемые функции</title>
206 <para>Связанные подпрограммы можно найти в директории
207 SCI/modules/differential_equations/src/fortran:
209 <para>dqags.f и dqagse.f из quadpack</para>