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 на матрице данных. В случаях, где функциональное выражение известно, можно вместо этого использовать integralintegral2, или 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