File: intsplin.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (25 lines) | stat: -rw-r--r-- 687 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function v = intsplin(x,s)
//splin  numerical integration.
//v = intsplin(x,s) computes the integral of y with respect to x using
//splin interpolation and integration.  
//x and y must be vectors of the same dimension
//
//v = intsplin(s) computes the integral of y assuming unit
//spacing between the data points. 
//!
// Copyright INRIA
[lhs,rhs]=argn(0)
if rhs<2 then
  s=x;
  s=s(:);
  d=splin((1:size(s,'*'))',s);
  v=sum((d(1:$-1)-d(2:$))/12 + (s(1:$-1)+s(2:$))/2);
else
  if size(x,'*')<>size(s,'*') then
    error('input vectors must have the same dimension');
  end
end
x=x(:);s=s(:);
d=splin(x,s);
h=x(2:$)-x(1:$-1);
v=sum((h.*(d(1:$-1)-d(2:$))/12 + (s(1:$-1)+s(2:$))/2).*h);