I dont get why I am encountering an error message when running this code.
Afficher commentaires plus anciens
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 commentaire
Rik
le 27 Sep 2022
The code you posted will not run because you didn't define t yet.
Réponses (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 commentaire
VBBV
le 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);
Catégories
En savoir plus sur Creating, Deleting, and Querying Graphics Objects 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!
