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 >> Дифференциальное счисление, интегрирование > int3d

int3d

определённый трёхмерный интеграл методом квадратуры и кубатуры

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

[result,err]=int3d(X,Y,Z,f [,nf[,params]])

Аргументы

X

массив 4 на NUMTET, содержащий абсциссы вершин NUMTET тетраэдров.

Y

массив 4 на NUMTET, содержащий ординаты вершин NUMTET тетраэдров.

Z

массив 4 на NUMTET, содержащий третьи координаты вершин NUMTET тетраэдров.

f

внешняя (функция, список или строка), определяющая подынтегральную функцию f(xyz,nf), где xyz -- вектор координат точек, а nf -- число функций.

nf

число интегрируемых функций (по умолчанию 1).

params

вещественный вектор [minpts, maxpts, epsabs, epsrel]. Значение по умолчанию [0, 1000, 0.0, 1.d-5].

epsabs

Желаемые пределы абсолютной ошибки.

epsrel

Желаемые пределы относительной ошибки.

minpts

Минимально число вычислений функции.

maxpts

максимальное число вычислений функции. Число вычислений функции по каждому малому участку равно 43.

result

целочисленное значение или вектор целочисленных значений.

err

оценки абсолютных ошибок.

Описание

Данная функция вычисляет аппроксимацию данного вектора определённых интегралов

I  I  I (F ,F ,...,F )      dx(3)dx(2)dx(1),
          1  2      numfun

где область интегрирования является набором из NUMTET тетраэдров и где

F = F (X(1),X(2),X(3)), J = 1,2,...,NUMFUN.
 J   J

Для того, чтобы вычислить аппроксимации result(k), удовлетворяющие для каждого элемента I условию точности: abs(I(k)-result(k))<=max(epsabs,epsrel*abs(I(k))), применяется глобально адаптивная стратегия.

Функция int3d циклично делит тетраэдры с наибольшими ошибками изделия и оценивает интегралы и ошибки по новым меньшим тетраэдрам до тех пор, пока запрошенная ошибка не будет достигнута, либо не будет использовано maxpts вычислений функций.

Применяется правило интегрирования по 43 точкам со всеми точками вычисления внутри тетраэдра. Правило имеет степень полинома 8.

Если значения входных параметров epsabs или epsrel выбираются достаточно большими, то правило интегрирования применяется к каждому тетраэдру и результаты прибавляются к заданным аппроксимациям result(k). Никаких дальнейших делений тетраэдров не будет.

Когда int3d вычисляет оценки для вектора интегралов, то все элементы вектора обрабатываются одинаково. То есть, I(Fj) и I(Fk) для j неравном k оцениваются с тем же самым делением области интегрирования. Для интегралов с достаточной схожестью мы може сберечь время, применяя int3d ко всем подынтегральным функциям за один вызов. Для интегралов, которые меняются постоянно как функции некоторого параметра, оценки, полученные int3d, будут меняться непрерывно при применении одного и того же деления ко всем элементам. Это в общем случае не то же самое, когда различные элементы обрабатываются по-своему.

С другой стороны, эту возможность следует использовать осторожно, когда различные элементы интегралов требуют явно разных делений.

Сcылки

Fortran routine dcutet.f

Примеры

X=[0;1;0;0];
Y=[0;0;1;0];
Z=[0;0;0;1];
[RESULT,ERROR]=int3d(X,Y,Z,'int3dex')
// вычисляет подынтегральную функцию exp(x*x+y*y+z*z) по 
//тетраэдру (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)
 
//интеграция по кубу  -1<=x<=1;-1<=y<=1;-1<=z<=1
 
//  низ  -верх-   право    -лево-   перед   -зад- 
X=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;          
   -1,-1,   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1,-1; 
    1,-1,    1,-1,    1, 1,   -1,-1,    1,-1,    1,-1;     
    1, 1,    1, 1,    1, 1,   -1,-1,    1, 1,    1, 1];         
Y=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0; 
   -1,-1,   -1,-1,   -1, 1,   -1, 1,   -1,-1,    1, 1;
   -1, 1,   -1, 1,    1, 1,    1, 1,   -1,-1,    1, 1;   
    1, 1,    1, 1,   -1,-1,   -1,-1,   -1,-1,    1, 1]; 
Z=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
   -1,-1,    1, 1,   -1, 1,   -1, 1,   -1,-1,   -1,-1; 
   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1, 1,   -1, 1;  
   -1,-1,    1, 1,    1, 1,    1, 1,    1, 1,    1, 1];      
 
function v=f(xyz, numfun),v=exp(xyz'*xyz),endfunction
[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])
 
function v=f(xyz, numfun),v=1,endfunction
[result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])

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

  • intc — интеграл Коши
  • intl — интеграл Коши
  • int2d — определённый двумерный интеграл методом квадратуры и кубатуры
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