Can't integrate exponential function

2 visualizaciones (últimos 30 días)
Gabriel Sharp
Gabriel Sharp el 11 de Feb. de 2022
Comentada: Gabriel Sharp el 11 de Feb. de 2022
I am trying to figure out how to write integral functions that have exponential numbers in the functions.
Matlab gives me an error for the following function:
%Practice integral with exponent
clc
clear
syms x
myFunc = @(x) (exp(x)/x);
y = integral(myFunc,3.5,4.5);
  1 comentario
Gabriel Sharp
Gabriel Sharp el 11 de Feb. de 2022
I get an error message:
Error using integralCalc/finalInputChecks (line 526)
Output of the function must be the same size as the input. If FUN is an array-valued
integrand, set the 'ArrayValued' option to true.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 11 de Feb. de 2022
Editada: Matt J el 11 de Feb. de 2022
%syms x - doesn't belong here
myFunc = @(x) (exp(x)./x); %use ./
y = integral(myFunc,3.5,4.5)
y = 14.0083
  1 comentario
Gabriel Sharp
Gabriel Sharp el 11 de Feb. de 2022
What does the period do? It now works, by the way, thanks for the help.

Iniciar sesión para comentar.

Más respuestas (2)

Voss
Voss el 11 de Feb. de 2022
Telling integral() that the function is array-valued seems to work ok:
myFunc = @(x) (exp(x)/x);
y = integral(myFunc,3.5,4.5,'ArrayValued',true)
y = 14.0083
  2 comentarios
Matt J
Matt J el 11 de Feb. de 2022
Editada: Matt J el 11 de Feb. de 2022
Yes, but less efficiently. The integral computation will not be vectorized.
wp=linspace(3.5,4.5,1e5);
myFunc = @(x) (exp(x)/x);
tic;
y = integral(myFunc,3.5,4.5,'ArrayValued',true,'WayPoints',wp);
toc
Elapsed time is 2.280323 seconds.
myFunc = @(x) (exp(x)./x);
tic;
y = integral(myFunc,3.5,4.5,'WayPoints',wp);
toc
Elapsed time is 0.070478 seconds.
Voss
Voss el 11 de Feb. de 2022
I still do my integrals by hand, but @Gabriel Sharp may be interested in your comment.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 11 de Feb. de 2022
syms x
myFunc = (exp(x)/x);
tic; y1 = int(myFunc,3.5,4.5), double(y1), toc
y1 = 
ans = 14.0083
Elapsed time is 0.560509 seconds.
tic; y2 = vpaintegral(myFunc,3.5,4.5), double(y2), toc
y2 = 
14.0083
ans = 14.0083
Elapsed time is 0.159376 seconds.
  1 comentario
Gabriel Sharp
Gabriel Sharp el 11 de Feb. de 2022
Interesting how many ways the integral can be done!

Iniciar sesión para comentar.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by