Borrar filtros
Borrar filtros

how can i integrate a function?

1 visualización (últimos 30 días)
elham kreem
elham kreem el 16 de Feb. de 2018
Comentada: elham kreem el 16 de Feb. de 2018
i have this function fun4=@(y)(y.^2 - d1i'*y+d2i)* f1 * exp(-(y-bx).^2./(2*s*tau))
expectfun4=integral(fun4, -2,4,'ArrayValued',true)
but it is not running ; appear this :
| | * _Error using + Matrix dimensions must agree.
Error in @(y)(y.^2-d1i'*y+d2i)*f1*exp(-(y-bx).^2./(2*s*tau))
Error in integralCalc/iterateArrayValued (line 156) fxj = FUN(t(1)).*w(1);
Error in integralCalc/vadapt (line 130) [q,errbnd] = iterateArrayValued(u,tinterval,pathlen);
Error in integralCalc (line 75) [q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88) Q = integralCalc(fun,a,b,opstruct); ****
although i run as the same function but in another fuction
can you help me
thanks
  3 comentarios
Torsten
Torsten el 16 de Feb. de 2018
fun4=@(y)(y.^2 - d1i*y+d2i)* f1 .* exp(-(y-bx).^2./(2*s*tau))
if
(y.^2 - d1i*y+d2i)* f1 .* exp(-(y-bx).^2./(2*s*tau))
gives a senseful vector for y being a scalar value.
Best wishes
Torsten.
elham kreem
elham kreem el 16 de Feb. de 2018
i applied this function ; the result is :
fun4=@(y)(y.^2 - d1i'*y + d2i)* f1. * exp(-(y-bx).^2./(2*s*tau))
|
Error: Unexpected MATLAB operator.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 16 de Feb. de 2018
As soon as you write the formula a function instead of an anonymous function, you can debug it:
% Create anonymous function to provide parameters:
fun4 = @(y) fun4fcn(y, d1i, d2i, bx, s, tau);
... Call the integrator
% The actual function:
function dy = fun4fcn(y, d1i, d2i, bx, s, tau)
dy = (y .^ 2 - d1i' * y + d2i) * f1 * exp(-(y-bx) .^ 2 ./ (2 * s * tau));
end
Now use the debugger:
dbstop if error
When Matlab stops at the error, you can check the dimensions of the variables. Because there is only one "+" operator, I guess that d2i has an unexpected shape.
  2 comentarios
elham kreem
elham kreem el 16 de Feb. de 2018
only on"+" ; is that a problem?
d2i is a vector 50*1
before that
i run this function
fun3=@(y)(y.^2 + 2*d1i'*y.^3+d3i'*y.^2-d1i'*d2i*y)* f1 * exp(-(y-bx).^2./(2*s*tau))
expectfun3=integral(fun3, -2,4,'ArrayValued',true)
it ok and it is run
is fun3 as fun4?
they have the same dimension
elham kreem
elham kreem el 16 de Feb. de 2018
i used d2i' instead of d2i , the function is run . you are right . the problem is in d2i

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Numerical Integration and Differentiation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by