Can't integrate exponential function

2 次查看(过去 30 天)
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 个评论
Gabriel Sharp
Gabriel Sharp 2022-2-11
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.

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2022-2-11
编辑:Matt J 2022-2-11
%syms x - doesn't belong here
myFunc = @(x) (exp(x)./x); %use ./
y = integral(myFunc,3.5,4.5)
y = 14.0083

更多回答(2 个)

Voss
Voss 2022-2-11
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 个评论
Matt J
Matt J 2022-2-11
编辑:Matt J 2022-2-11
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 2022-2-11
I still do my integrals by hand, but @Gabriel Sharp may be interested in your comment.

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2022-2-11
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.

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by