无法整合功能。双倍到 sym

问题描述 投票:0回答:1

我正在尝试集成该功能。我收到错误

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));

我做错了什么以及如何集成这个功能?

matlab symbolic-integration
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;
。或者使用
assume
assumeAlso
函数。

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

© www.soinside.com 2019 - 2024. All rights reserved.