我正在尝试整合这个功能。我收到了错误
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));
我做错了什么以及如何整合这个功能?
答案 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;
。或使用assume
和assumeAlso
函数。
所有这一切都假设你想要首先使用符号集成,而不是数字集成。