Integral of user-defined function

7 Ansichten (letzte 30 Tage)
Vishakha Ramani
Vishakha Ramani am 4 Jun. 2023
Beantwortet: John D'Errico am 4 Jun. 2023
I have the following MATLAB code, and would like to evaluate the integral of compcdf_mgc function with respect to variable y. However, I'm getting the following error: "Unable to perform assignment because the left and right sides have a different number of elements."
rate = 1;
num_steps = 2;
num_proc = num_steps;
f = @(y) compcdf_mgc(num_steps, rate, num_proc, y);
integral_value = integral(f, 0, Inf);
function final = compcdf_mgc(num_steps, rate, c, y)
n = num_steps;
scale = 1/rate; % this is b = 1/lambda
compcdfvec = zeros(n, 1);
for i = 1:n
compcdfvec(i) = 1 - gamcdf(y, n+i, scale);
end
final = ((1/n)*sum(compcdfvec))^c;
end

Akzeptierte Antwort

Torsten
Torsten am 4 Jun. 2023
Bearbeitet: Torsten am 4 Jun. 2023
Your function is not vectorized. Thus you have to use
integral_value = integral(f, 0, Inf, 'ArrayValued',true)
instead of
integral_value = integral(f, 0, Inf)

Weitere Antworten (1)

John D'Errico
John D'Errico am 4 Jun. 2023
Is your code vectorized? That is, what happens when a VECTOR of elements for y is passed in? (It does not appear to be.)
integral assumes a vectorized function.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by