cumtrapz

Совокупное трапеций-численное интегрирование

Описание

пример

Q = cumtrapz(Y) вычисляет приблизительный совокупный интеграл Y методом трапеций с единичным интервалом. Размер Y определяет размерность для интегрирования между:

  • Если Y является вектором, тогда cumtrapz(Y) - совокупный интеграл Y.

  • Если Y является матрицей, тогда cumtrapz(Y) - совокупный интеграл по каждому столбцу.

  • Если Y является многомерным массивом, затем cumtrapz(Y) интегрируется по первой размерности, размер которого не равен 1.

пример

Q = cumtrapz(X,Y) интегрирует Y относительно координат или скалярного интервала, заданного X.

  • Если X является вектором координат, затем length(X) должно быть равно размеру первой размерности Y чей размер не равен 1.

  • Если X является скалярным интервалом, тогда cumtrapz(X,Y) эквивалентно X*cumtrapz(Y).

пример

Q = cumtrapz(___,dim) интегрируется вдоль размерности dim использование любого из предыдущих синтаксисов. Вы должны задать Y, и опционально можно задать X. Если вы задаете X, тогда это может быть скаляр или вектор с длиной, равной size(Y,dim). Для примера, если Y является матрицей, тогда cumtrapz(X,Y,2) кумулятивно интегрирует каждую строку Y.

Примеры

свернуть все

Вычислите совокупный интеграл вектора, где интервал между точками данных равен 1.

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

Y = [1 4 9 16 25];

Y содержит значения функций для f(x)=x2 в область [1 5].

Используйте cumtrapz, чтобы интегрировать данные с модулем интервалом.

Q = cumtrapz(Y)
Q = 1×5

         0    2.5000    9.0000   21.5000   42.0000

Это приблизительное интегрирование дает окончательное значение 42. В этом случае точный ответ чуть меньше, 4113. The cumtrapz функция переоценивает значение интеграла, потому что f (x) вогнуто.

Вычислите совокупный интеграл вектора, где интервал между точками данных равномерен, но не равен 1.

Создайте вектор области.

X = 0:pi/5:pi;

Вычислите синус X.

Y = sin(X');

Кумулятивно интегрируйте Y использование cumtrapz. Когда интервал между точками является постоянным, но не равным 1, альтернатива созданию вектора для X задает скалярное значение интервала. В этом случае cumtrapz(pi/5,Y) то же, что и pi/5*cumtrapz(Y).

Q = cumtrapz(X,Y)
Q = 6×1

         0
    0.1847
    0.6681
    1.2657
    1.7491
    1.9338

Кумулятивно интегрируйте строки матрицы, где данные имеют неоднородный интервал.

Создайте вектор x-координат и матрицу наблюдений, которые происходят в неправильных интервалах. Строки Y представляют данные о скорости, взятые во времени, содержащемся в X, для трех различных испытаний.

X = [1 2.5 7 10];
Y = [5.2   7.7   9.6   13.2;
     4.8   7.0  10.5   14.5;
     4.9   6.5  10.2   13.8];

Использование cumtrapz чтобы интегрировать каждую строку независимо и найти совокупное расстояние, пройденное в каждом испытании. Поскольку данные не оцениваются с постоянными интервалами, задайте X для указания интервала между точками данных. Задайте dim = 2 поскольку данные находятся в строках Y.

Q1 = cumtrapz(X,Y,2)
Q1 = 3×4

         0    9.6750   48.6000   82.8000
         0    8.8500   48.2250   85.7250
         0    8.5500   46.1250   82.1250

Результатом является матрица того же размера, что и Y с кумулятивным интегралом каждой строки.

Выполните вложенные интегрирования в направлениях x и y. Постройте график результатов, чтобы визуализировать совокупное интегральное значение в обоих направлениях.

Создайте сетку значений для области.

x = -2:0.1:2;
y = -2:0.2:2;
[X,Y] = meshgrid(x,y);

Вычислим функцию f(x,y)=10x2+20y2 на сетке.

F = 10*X.^2 + 20*Y.^2;

cumtrapz интегрирует числовые данные, а не функциональные выражения, поэтому в целом не нужно знать, что базовая функция используется cumtrapz на матрице данных. В случаях, когда функциональное выражение известно, можно вместо этого использовать integral, integral2, или integral3.

Использование cumtrapz для аппроксимации двойного интеграла

I(a,b)=-2b-2a(10x2+20y2)dxdy.

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

I = cumtrapz(y,cumtrapz(x,F,2));

Постройте график поверхности, представляющей исходную функцию, а также поверхности, представляющей совокупное интегрирование. Каждая точка на поверхности совокупного интегрирования задает промежуточное значение двойного интеграла. Последнее значение в I приводит общее приближение двойного интеграла, I(end) = 642.4. Отметьте эту точку на графике красной звездой.

surf(X,Y,F,'EdgeColor','none')
xlabel('X')
ylabel('Y')
hold on
surf(X,Y,I,'FaceAlpha',0.5,'EdgeColor','none')
plot3(X(end),Y(end),I(end),'r*')
hold off

Figure contains an axes. The axes contains 3 objects of type surface, line.

Входные параметры

свернуть все

Числовые данные, заданные как векторный, матричный или многомерный массив. По умолчанию cumtrapz интегрируется вдоль первой размерности Y чей размер не равен 1.

Типы данных: single | double
Поддержка комплексного числа: Да

Интервал между точками, заданный как 1 (по умолчанию), равномерный скалярный интервал или вектор координат.

  • Если X является скаляром, затем задает равномерный интервал между точками данных и cumtrapz(X,Y) эквивалентно X*cumtrapz(Y).

  • Если X является вектором, затем задает x -cordinates для точек данных и length(X) должен быть таким же, как размер интегрирования размерности в Y.

Типы данных: single | double

Размерность для работы, заданная как положительный целочисленный скаляр Если значение не задано, то по умолчанию это первое измерение массива, не равный 1.

Рассмотрим двумерный входной массив, Y:

  • cumtrapz(Y,1) работает над последовательными элементами в столбцах Y.

  • cumtrapz(Y,2) работает над последовательными элементами в строках Y.

Если dim больше ndims(Y), затем cumtrapz возвращает массив нулей того же размера, что и Y.

Совет

  • Использовать trapz и cumtrapz для выполнения численного интегрирования на дискретных наборах данных. Использовать integral, integral2, или integral3 вместо этого, если функциональное выражение для данных доступно.

  • trapz уменьшает размер размерности, на которой он работает, до 1 и возвращает только окончательное значение интегрирования. cumtrapz также возвращает промежуточные значения интегрирования, сохраняя размер размерности, с которой он работает.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Представлено до R2006a