1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 function v = intsplin(x,s)
11 //splin  numerical integration.
12 //v = intsplin(x,s) computes the integral of y with respect to x using
13 //splin interpolation and integration.
14 //x and y must be vectors of the same dimension
15 //
16 //v = intsplin(s) computes the integral of y assuming unit
17 //spacing between the data points.
19 [lhs,rhs]=argn(0)
20 if rhs<2 then
21   s=x;
22   s=s(:);
23   d=splin((1:size(s,'*'))',s);
24   v=sum((d(1:\$-1)-d(2:\$))/12 + (s(1:\$-1)+s(2:\$))/2);
25 else
26   if size(x,'*')<>size(s,'*') then
27     error(msprintf(gettext("%s: Wrong size for input arguments: Same size expected.\n"),"intsplin"));
28   end
29 end
30 x=x(:);s=s(:);
31 d=splin(x,s);
32 h=x(2:\$)-x(1:\$-1);
33 v=sum((h.*(d(1:\$-1)-d(2:\$))/12 + (s(1:\$-1)+s(2:\$))/2).*h);
34 endfunction