# Trapz gives "Second and third argument must either be variables or a variable and a nonnegative integer specifying the number of differentiations."

12 views (last 30 days)
Amrit Lohia on 3 Dec 2019
Answered: Stephan on 3 Dec 2019
Why does the following not work:
f_scalar = @(x) 5*x^2+3*x-4; g_scalar = @(x) -4*x^2+6*x+5;
f = @(vec) arrayfun(f_scalar,vec); g = @(vec) arrayfun(g_scalar, vec);
points = solve(f(x) == g(x), x);
h = @(x) g(x) - f(x);
vals = linspace(points(1),points(2),100);
disp(trapz(vals,h(vals)));
It gives "Error using sym/diff (line 36)
Second and third argument must either be variables or a variable and a nonnegative integer specifying the
number of differentiations."

Stephan on 3 Dec 2019
syms x
f_scalar = @(x) 5*x^2+3*x-4; g_scalar = @(x) -4*x^2+6*x+5;
f = @(vec) arrayfun(f_scalar,vec); g = @(vec) arrayfun(g_scalar, vec);
points = solve(f(x) == g(x), x);
points = double(points);
h = @(x) g(x) - f(x);
vals = linspace(points(1),points(2),100);
disp(trapz(vals,h(vals)));