I dont get why I am encountering an error message when running this code.
Show older comments
I want to find the integral for a function with variable limit and plot it.
This is the error I get:
Error using integralCalc/finalInputChecks
Input function must return 'double' or 'single' values. Found 'sym'.
Error in integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 87)
Q = integralCalc(fun,a,b,opstruct);
Error in rough>@(x)integral(@(t)v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2))),1,x) (line 6)
ln_scalar = @(x)integral(@(t)v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2))),1,x);
Error in rough>@(x)arrayfun(ln_scalar,x) (line 7)
ln = @(x)arrayfun(ln_scalar,x);
Error in rough (line 9)
plot(x,ln(x))
%v_t=20;
%v_i=1;
%g=10;
%expo1=-2*g*t./v_t;
%expo2=-2*g*t./v_i;
%function I want to integrate and plot:v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2)))
%My code:
v_t=20;
v_i=1;
g=10;
expo1=-2*g*t./v_t;
expo2=-2*g*t./v_i;
ln_scalar = @(x)integral(@(t)v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2))),1,x);
ln = @(x)arrayfun(ln_scalar,x);
x = linspace(0.02,10,100);
plot(x,ln(x))
1 Comment
Rik
on 27 Sep 2022
The code you posted will not run because you didn't define t yet.
Answers (1)
%v_t=20;
%v_i=1;
%g=10;
%expo1=-2*g*t./v_t;
%expo2=-2*g*t./v_i;
%function I want to integrate and plot:v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2)))
%My code:
v_t=20;
v_i=1;
g=10;
t = 2;
expo1=-2*g*t./v_t;
expo2=-2*g*t./v_i;
ln_scalar = @(x)integral(@(t) v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2))),1,x,'ArrayValued',1);
ln = @(x)arrayfun(ln_scalar,x);
x = linspace(0.02,10,100);
plot(x,ln(x))
1 Comment
VBBV
on 27 Sep 2022
Define t first before evaluating integral
t = 2;
and set Arrayvalued option to true in integral function
ln_scalar = @(x)integral(@(t) v_t*(1-exp(expo1)+v_i*(1+exp(expo2)))./(v_t*(1+exp(expo1))+v_i*(1-exp(expo2))),1,x,'ArrayValued',1);
Categories
Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!