For my own script, I need to combine several functions and finally calculate the integral of the lot. To simplify it, I made a simple problem with the same error:
"Input function must return 'double' or 'single' values. Found 'function_handle'.". The actual code is much larger, has more parameters and because of the size of the function I prefer multiple seperate functions.
a = @(x) x;
b = @(x) a*cos(x);
C = integral(@(x) b,0,5);
I understand the @(x) is not the right way for using the integral-function, because it should have double or single values, as stated in the error. But in what way should I handle this problem to get the right answer out this simple example? (ans = -5,51...)

 Réponse acceptée

Star Strider
Star Strider le 3 Nov 2019
Since ‘a’ is a function of ‘x’, call it as a function.
Try this:
a = @(x) x;
b = @(x) a(x).*cos(x);
C = integral(b,0,5)
returning:
C =
-5.51095918785247
Also, since ‘b’ already exists as a function, the extra function handle is not necessary (unless it is a function of several variables, and only integrating with respect to one). In that event, it is still necessary to refer to it as a function:
C = integral(@(x)b(x),0,5)

2 commentaires

Jasper Kregting
Jasper Kregting le 3 Nov 2019
I tried this solution within my own script and it works! Thanks a lot.
Star Strider
Star Strider le 3 Nov 2019
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Mathematics dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by