Getting error in this code.

1 visualización (últimos 30 días)
AVINASH SAHU
AVINASH SAHU el 2 de Jun. de 2022
Comentada: Jan el 3 de Jun. de 2022
betasqr=0.2;
gamma=0.3;
psi = 0.001;
mu = 1.0;
sbar = 50;
A = @(x) (4+sbar)-(sbar*betasqr*gamma).*(x.*(1-x)).^0.5;
B = @(x) (1-(betasqr)*((x.*(1-x)).^(0.5)));
E = @(x) ((6*(2+sbar))-((2*betasqr*sbar*gamma)*((x.*(1-x)).^(0.5))));
G = @(x) (12*psi*(1+sbar)) + A/B;
C = @(x) E/G;
IntEbyG = integral(C,0,1)
  1 comentario
Jan
Jan el 2 de Jun. de 2022
Editada: Jan el 2 de Jun. de 2022
A simpler version - note that sqrt(x) is much cheaper than x^0.5:
betasqr = 0.2;
gamma = 0.3;
psi = 0.001;
mu = 1.0;
sbar = 50;
A = @(x) 4 + sbar - sbar*betasqr*gamma .* sqrt(x .* (1-x));
B = @(x) 1 - betasqr * sqrt(x .* (1-x));
E = @(x) 12 + 6 * sbar - 2*betasqr*sbar*gamma * sqrt(x .* (1-x));
G = @(x) 12 * psi * (1 + sbar) + A/B; % ERROR
C = @(x) E/G; % ERROR
IntEbyG = integral(C,0,1)
Error using /
Arguments must be numeric, char, or logical.

Error in solution (line 9)
G = @(x) 12 * psi * (1 + sbar) + A/B;

Error in solution (line 10)
C = @(x) E(x)/G(x);

Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);

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);
I've displayed the error message. This is very useful, if you ask a question, because solving a problem is much easier than guessing, what the problem is. Whenever you mention an error in the forum, attach a copy of the complete message.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 2 de Jun. de 2022
A simpler version - note that sqrt(x) is much cheaper than x^0.5:
betasqr = 0.2;
gamma = 0.3;
psi = 0.001;
mu = 1.0;
sbar = 50;
A = @(x) 4 + sbar - sbar*betasqr*gamma .* sqrt(x .* (1-x));
B = @(x) 1 - betasqr * sqrt(x .* (1-x));
E = @(x) 12 + 6 * sbar - 2*betasqr*sbar*gamma * sqrt(x .* (1-x));
G = @(x) 12 * psi * (1 + sbar) + A(x) ./ B(x); % <-- bug fix
C = @(x) E(x) ./ G(x); % <-- bug fix
IntEbyG = integral(C,0,1)
IntEbyG = 5.3442
The error message tells you, that / does not work for function handles. Append the argument.
  3 comentarios
Image Analyst
Image Analyst el 2 de Jun. de 2022
If Jan solved the problem, then please click the "Accept this Answer" link to award Jan his "Reputation points." Thanks in advance. 🙂
Jan
Jan el 3 de Jun. de 2022
I have more reputation points than I need for my daily living. I'd prefer cookies: 🍪
For other readers it is useful to mark a question as solved by accepting an answer.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Function Creation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by