Как выполнить численное интегрирование вектора в MATLAB?

У меня есть вектор из 358 чисел. Я хотел бы произвести численное интегрирование этого вектора, но я не знаю функции этого.

Я обнаружил, что мы можем использовать trapz или quad, но я не совсем понимаю, как интегрироваться без этой функции.


person Community    schedule 18.05.2010    source источник
comment
Посмотрите мой ответ на аналогичный вопрос, где я использую trapz для интеграции: stackoverflow.com/questions/2641809/   -  person Jonas    schedule 19.05.2010
comment
Я добавлю это как комментарий, так как он слишком короткий, чтобы быть правильным ответом. Интеграция без использования встроенных функций MATLAB потребует от вас наличия численного метода для использования. Метод трапеций — один из самых простых; вы просто находите площадь под графиком между соседними точками, соединенными линией (при условии, что интервал по оси x равен 1, поскольку в вопросе не упоминался интервал). При таком предположении простой и наивной схемой для вектора fx будет (fx(2:end)+fx(1:end-1))/2.   -  person JS Ng    schedule 19.05.2010
comment
Численные схемы, используемые trapz и quad, в некоторой степени описаны в документации, вы можете найти их в файле справки MATLAB или в Интернете. Если вам нужно более полное описание простого алгоритма, дайте мне знать, и я добавлю более полный ответ.   -  person JS Ng    schedule 19.05.2010


Ответы (3)


Если вы знаете горизонтальное расстояние вашего вектора, вы можете использовать trapz в чтобы интегрировать его без функции. Например, чтобы интегрировать y=sin(x) от 0 до pi с 358 разделами,

x=0:pi/357:pi;
y=sin(x);
area=trapz(x,y);

Если вы просто используете trapz(y), вы получите гораздо большее число, поскольку предполагается, что расстояние между точками по умолчанию равно 1. Эту проблему можно решить, умножив на расстояние между x точками:

area=pi/357*trapz(y);
person Doresoom    schedule 18.05.2010

Вам не нужно знать функцию для численного интегрирования; в этом суть trapz и quad. Просто передайте trapz свой вектор. Вот ссылка на документацию.

person Matt Ball    schedule 18.05.2010

Подумайте об интегрировании, чтобы найти площадь под кривой, которая образована вашим вектором. На самом деле это не кривая, а многоугольная цепочка. Что делает функция TRAPZ, она находит сумму площадей каждой трапеции образован каждые две соседние точки в вашем векторе и их проекция на ось X. См. документацию по функции, если у вас неравномерное расстояние между вашими точками или если расстояние не равно единице.

Подробнее об этом методе можно прочитать, например, в Википедии.

person yuk    schedule 18.05.2010