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 содержит значения функции для 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

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

свернуть все

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