[Math] Plotting an integral of a function in Octave

graphing-functionsintegrationoctave

I try to integrate a function and plot it in Octave.
Integration itself works, i.e. I can evaluate the function g like g(1.5) but plotting fails.

f = @(x) ( (1) .* and((0 < x),(x <= 1)) + (-1) .* and((1 <x),(x<=2)));
g = @(x) (quadcc(f,0,x));

x = -1.0:0.01:3.0;
plot(x,g(x));

But receive the following error:

quadcc: upper limit of integration (B) must be a single real scalar

As far as I can tell this is because the plot passes a vector (namely x) to g which passes it down to quadcc which cannot handle vector arguments for the third argument.

So I understand what's the reason for the error but have no clue how to get the desired result instead.

N.B.
This is just a simplified version of the real function I use, but the real function is also constant on a finite set of intervals ( number of intervals is less than ten if that matters).
I need to integrate the real function 3 times in succession (f represents a jerk and I need to determine functions for acceleration, velocity and distance). So I cannot compute the integrals by hand like I could in this simple case.

Best Answer

You could use cumtrapz instead of quadcc.

Related Question