<< integrate Дифференциальное счисление, интегрирование intl >>

Справка Scilab >> Дифференциальное счисление, интегрирование > intg

intg

определённый интеграл

Синтаксис

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

Аргументы

a, b

вещественные числа

f

внешняя функция (функция, список или строка)

ea, er

вещественные числа

ea

абсолютная ошибка, требуемая для результата. Значение по умолчанию: 1.d-13.

er

относительная ошибка, требуемая для результата. Значение по умолчанию: 1.d-8.

err

оцененная абсолютная ошибка результата.

Описание

intg(a,b,f) вычисляет определённый интеграл функции f(t) по dt в пределах от a до b. Функция f(t) должна быть непрерывной.

Вычисление, как можно ожидать, удовлетворяет следующему условию точности: abs(I-v)<= max(ea,er*abs(I)), где I -- точное значение интеграла.

f -- внешняя функция:

Примеры

// Функция, написанная на языке Scilab
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)

// Функция с аргументом, написанном на языке Scilab
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)

// Функция, написанная на Fortran (требуется компилятор Fortran)
// определение функции Fortran
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,'ffun.f')

// компилируем функцию
 l=ilib_for_link('ffun','ffun.f',[],'f');

// добавляем  функцию в рабочее окружение
link(l,'ffun','f')

// интегрируем функцию
I=intg(0,2*%pi,'ffun')
abs(exact-I)

// Функция, написанная на C (требуется компилятор C)
// определение C-функции
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,'cfun.c')

//  компилируем функцию
 l=ilib_for_link('cfun','cfun.c',[],'c');

// добавляем  функцию в рабочее окружение
link(l,'cfun','c')

// интегрируем функцию
I=intg(0,2*%pi,'cfun')
abs(exact-I)

Смотрите также

Используемые функции

Связанные подпрограммы можно найти в директории SCI/modules/differential_equations/src/fortran:

dqags.f и dqagse.f из quadpack


Report an issue
<< integrate Дифференциальное счисление, интегрирование intl >>