Получить интегрированные векторные значения
Я пытаюсь интегрировать синус-функцию. Моя цель - получить не только значение области между определенным расстоянием, но и конкретные значения интегрированного курса.
Одним из способов достижения этого является использование cumtrapz. Я хочу получить тот же результат, используя интеграл или квад. Так что мне интересно, есть ли что-то вроде cumquad?
Я пытался написать что-то для себя, но это работает очень медленно и, кажется, даже хуже, чем cumtrapz. Позже я хочу интегрировать измеренные данные. Так что это не будет так просто, как синус.
Вот мой текущий код:
a = 0; b = 10;
x = a:0.1:b;
y = 2*sin(3*x);
pp = spline(x,y);
y2=zeros(1,length(y));
y3=zeros(1,length(y));
y2(1)=integral(@(x)ppval(pp,x),x(1),x(2));
y3(1)=integral(@(x)ppval(pp,x),x(1),x(2));
for a=2:(length(y)-1)
y2(a) = y2(a-1)+integral(@(x)ppval(pp,x),x(a-1),x(a));
y3(a) = y3(a-1)+quad(@(x)ppval(pp,x),x(a-1),x(a));
end
y4=cumtrapz(x,y);
% y5=cumsum(y);
plot(x,y)
hold on
plot(x,y2,'-ro')
plot(x,y3,'-kx')
plot(x,y4,'g')
syms x % compare with analytical result
ya=2*sin(3*x);
ya5=int(ya)+(2/3);
ezplot(x,ya5)