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

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

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

intg

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

Последовательность вызова

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

Аргументы

a, b

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

f

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

ea, er

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

ea

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

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 -- внешняя функция:

  • Если f -- функция, то её определение должно иметь вид y = f(t).

  • Если f -- список, то этот список должен быть в виде: list(f,x1,x2,...), где f -- функция с последовательностью вызова f(t,x1,x2,...).

  • Если f -- строка, то она ссылается на имя либо процедуры Fortran либо функции C с заданной последовательностью вызова:

    • в случае Fortran вызывающая последовательность должна быть в виде double precision function f(x), где x также является числом двойной точности.

    • В случае C вызывающая последовательность должна быть double f(double *x).

Примеры

// Функция, написанная на языке 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,fullfile(TMPDIR,'ffun.f'))

 
// компилируем функцию
 l=ilib_for_link('ffun',fullfile(TMPDIR,'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,fullfile(TMPDIR,'cfun.c'))

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

// добавляем  функцию в рабочее окружение
link(l,'cfun','c')
 
// интегрируем функцию
I=intg(0,2*%pi,'cfun')
abs(exact-I)

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

  • intc — интеграл Коши
  • intl — интеграл Коши
  • inttrap — интегрирование экспериментальных данных методом трапеций
  • intsplin — интегрирование экспериментальных данных кусочной интерполяцией
  • ode — программа решения обыкновенных дифференциальных уравнений

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

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

dqags.f и dqagse.f из quadpack

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 14:01:04 CEST 2014