У меня есть векторные данные rdata
и rho
.Каждый из них представляет собой вектор размером 641 x 1, а rho
является функцией rdata
.Я хочу интегрировать rho (rdata) * 2 * pi * rdata от 0 до rmax.Однако, когда я делаю следующее, я получаю «NaN» за результат.Я настраиваю это неправильно?Есть ли лучший способ численной интеграции векторных данных в Matlab?
% turn data into function
fr = @(r)interp1(rdata,rho,r);
% integrate
h = integral(@(r)fr(r)*2*pi*r,0,35.8,'ArrayValued',true);
ОБНОВЛЕНИЕ
Я узнал о функции trapz
и попробовалпосле
dens = 2*pi*rho.*rdata;
trapz(rdata,dens)
и получил значение около 2,5, что примерно на два порядка ниже, чем я ожидал.Я неправильно это реализую?rdata
имеет неравномерный интервал, если это имеет значение.