cumtrapz

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

Синтаксис

Q = cumtrapz(Y)
Q = cumtrapz(X,Y)
Q = cumtrapz(___,dim)

Описание

пример

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 содержит значения функции для в доменном [1 5].

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

Q = cumtrapz(Y)
Q = 1×5

         0    2.5000    9.0000   21.5000   42.0000

Это аппроксимированное интегрирование приводит к окончательному значению 42. В этом случае точный ответ немного меньше. Функция 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 = 10*X.^2 + 20*Y.^2;

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

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

Чтобы выполнить это двойное интегрирование, используйте вызовы вложенной функции 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

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

свернуть все

Числовые данные, заданные как вектор, матрица или многомерный массив. По умолчанию 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

Была ли эта тема полезной?