Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: Français - Português - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Differential calculus, Integration > intg

intg

definite integral

Calling Sequence

[v,err]=intg(a,b,f [,ea [,er])

Arguments

a, b

real numbers.

f

external (function or list or string).

ea, er

real numbers.

ea

absolute error required on the result. Default value: 1.d-14.

er

relative error required on the result. Default value: 1.d-8.

err

estimated absolute error on the result.

Description

intg(a,b,f) evaluates the definite integral from a to b of f(t)dt. The function f(t) should be continuous.

The evaluation hopefully satisfies following claim for accuracy: abs(I-v)<= max(ea,er*abs(I)) where I stands for the exact value of the integral.

f is an external :

If f is function its definition must be as follows y = f(t)

If f is a list the list must be as follows: list(f,x1,x2,...) where f is a function with calling sequence f(t,x1,x2,...).

If f is a string it refers to a the name of a Fortran function or a C prodedure with a given calling sequence:

In the fortran case the calling sequence should be double precision function f(x) where x is also a double precision number.

In the C case the calling sequence should be double f(double *x) .

Examples

// Function written in the Scilab language
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)

// Function with an argument written in the Scilab language
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)

// Function written in Fortran (a Fortran compiler is required)
// define a Fortran function
cd TMPDIR;
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,fullfile(TMPDIR,'ffun.f'))

// compile the function
l=ilib_for_link('ffun',fullfile(TMPDIR,'ffun.f'),[],'f');

// add the function to the working environment
link(l,'ffun','f')

// integrate the function
I=intg(0,2*%pi,'ffun')
abs(exact-I)

// Function written in C (a C compiler is required)
// define a C function
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,fullfile(TMPDIR,'cfun.c'))

// compile the function
l=ilib_for_link('cfun',fullfile(TMPDIR,'cfun.c'),[],'c');

// add the function to the working environment
link(l,'cfun','c')

// integrate the function
I=intg(0,2*%pi,'cfun')
abs(exact-I)

See Also

  • intc — Cauchy integral
  • intl — Cauchy integral
  • inttrap — integration of experimental data by trapezoidal interpolation
  • intsplin — integration of experimental data by spline interpolation
  • ode — ordinary differential equation solver

Used Functions

The associated routines can be found in SCI/modules/differential_equations/src/fortran directory :

dqag0.f and dqags.f from quadpack

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:34:40 CEST 2012