exponenta event banner

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. 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 для точек данных и 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++ с помощью MATLAB ® Coder™

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