Computing an integral inside a function

3 ビュー (過去 30 日間)
Daniel
Daniel 2013 年 6 月 30 日
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.

回答 (2 件)

Wayne King
Wayne King 2013 年 6 月 30 日
編集済み: Wayne King 2013 年 6 月 30 日
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 件のコメント
Daniel
Daniel 2013 年 6 月 30 日
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 2013 年 6 月 30 日
編集済み: Daniel 2013 年 6 月 30 日
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 :(

サインインしてコメントする。


Shashank Prasanna
Shashank Prasanna 2013 年 6 月 30 日
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 件のコメント
Daniel
Daniel 2013 年 6 月 30 日
編集済み: Daniel 2013 年 6 月 30 日
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

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by