0

我正在尝试集成该功能。我收到错误 Undefined function 'int' for input arguments of type 'double'. 这是我的代码:

P = @(m,sigma,t,C) (normcdf((C-m/sigma)/sqrt(t),0,1) - exp(2*C*m/sigma)*normcdf((-C-m/sigma)/sqrt(t),0,1));
Pr = @(m1,m2,sigma_1, sigma_2,t,C) (P(m1,sigma_1,t,C)*P(m2,sigma_2,t,C));
P_S = @(m1,m2,sigma_1,sigma_2,C) (1 - int(Pr(m1,m2,sigma_1,sigma_2,t,C), t, 0, inf));

我在做什么错以及如何集成此功能?

4

1 回答 1

0

normcdf用于浮点计算,不支持符号输入。你需要自己写。幸运的是,这很容易。尝试用normcdf这个替换:

normcdf_sym = @(x,mu,sig) (1./(sig*sqrt(2*sym('pi'))))*int(exp(-(t-mu).^2./(2*sig.^2)),t,-Inf,x);

或者用这个,相当于上面的:

normcdf_sym = @(x,mu,sig) (1+erf((x-mu)./(sig*sqrt(2))))/2;

此外,您可能希望将符号变量定义为实数:syms m sigma t C real;. 或使用assumeassumeAlso功能。

所有这一切都假设您首先要使用符号积分,而不是数字积分。

于 2013-06-05T21:56:48.713 回答