无法集成功能。双倍到sym

时间:2013-06-05 20:33:30

标签: matlab integration

我正在尝试整合这个功能。我收到了错误 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));

我做错了什么以及如何整合这个功能?

1 个答案:

答案 0 :(得分: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函数。

所有这一切都假设你想要首先使用符号集成,而不是数字集成。