Computing an integral inside a function

7 visualizaciones (últimos 30 días)
Daniel
Daniel el 30 de Jun. de 2013
Hi guys!
I need to compute an integral inside a function. To compute an integral I use int function, first argument of which is the function to be integrated. I specify this function inside my big function
function [Put]=Putprice(S,K,r,q,T,a1,a2,b1,b2,c,beta)
function y=b(s)
y=b1*s+b2;
end
alpha=r-q+b;
f=a^2*exp(-2*abs(beta)*int(alpha,s,0,u));
tau=int(f,u,0,T);
all the other parameters are specified. What's wrong?
Daniel.

Respuestas (2)

Wayne King
Wayne King el 30 de Jun. de 2013
Editada: Wayne King el 30 de Jun. de 2013
It really helps when you show what error you are getting and how you are calling the function at the command line. Give people a simple example so that they can reproduce your error.
int() expects symbolic variables, are you using symbolic variables here?
If not, look at the help for integral()
value = integral(@(x) 1/sqrt(2*pi)*exp(-x.^2./2),0,3)
  2 comentarios
Daniel
Daniel el 30 de Jun. de 2013
Yes, you are right. I want to compute a definite integral, so the function integral() suits here best.
The problem is that when I define a function for this integral(), it contains another integral, which is symbolic...
b = @(s) r-q+b1*s+b2;
a = @(u) (a1*u+a2)^2;
tau=integral(a*exp(-2*abs(beta)*int(b,s,0,u)),0,T);
Daniel
Daniel el 30 de Jun. de 2013
Editada: Daniel el 30 de Jun. de 2013
syms s;
b = r-q+b1*s+b2;
a = @(u) (a1*u+a2)^2*exp(-2*abs(beta)*int(b,s,0,u));
tau=integral(a,0,T);
Still cannot compute tau :(

Iniciar sesión para comentar.


Shashank Prasanna
Shashank Prasanna el 30 de Jun. de 2013
Integral is for numerical integration. What are you expecting the result in?
Once you compute the symbolic integral use subs to evaluate the result:
Or use matlabFunction to convert the integrated function into a matlab function handle:
Ofcourse I am assuming that you know what the other parameters are.
  1 comentario
Daniel
Daniel el 30 de Jun. de 2013
Editada: Daniel el 30 de Jun. de 2013
I expect a number at the end. T=1 and I want to calculate tau. should I use smth like this?
a = @(u) (a1*u+a2)^2*exp(-2*abs(beta)*matlabFunction(int(b,s,0,u)));
I'm really stuck at this step

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by