2012-08-16 352 views
0

我有以下功能,我想用MATLAB找到极值。Matlab的符号函数与normcdf

enter image description here

这个功能必须使用“normcdf”功能的MATLAB,以获得满意的结果,但是当我试图创建符号功能我找回了一些错误。

输入我给出如下:

syms z fz t sz 
fv = 1000 * ((z * fz * normcd(t,fz,sz))/(20 * 50 * normcd(t,50,20))) + 1000 * normcdf((20 * 50 * normcd(t,50,20) + z * fz * normcd(t,fz,sz))/2000, 50 * normcd(t,50,20), 20) - 10 * z 

,我找回了错误有以下几种:

??? Error using ==> sym.le at 11 
Function 'le' is not implemented for MuPAD symbolic objects. 

Error in ==> normcdf at 57 
sigma(sigma <= 0) = NaN; 

有谁知道我怎样才能解决呢?提前致谢。

我忘了提及我使用matlab版本R2009a。

回答

0

我找到了解决办法。可以使用normcdf而不是normcdf,它可以使用与erf等效的等式,然后工作正常。

normcdf(x,mu,sig) = (1+erf((x-mu)/sig/sqrt(2)))/2 
+0

来自Mathematica的背景,这只是可笑:) – 2012-11-23 21:41:41

0

这似乎为我工作:

>> syms z fz t sz 
>> fv = 1000 * ((z * fz * normcdf(t,fz,sz))/(20 * 50 * normcdf(t,50,20))) + 1000 * normcdf((20 * 50 * normcdf(t,50,20) + z * fz * normcdf(t,fz,sz))/2000, 50 * normcdf(t,50,20), 20) - 10 * z 

>> subs(fv,{fz,sz,t,z},{1,2,3,4}); 

ans = 

809.2922 

看一看的Subs

+0

您正在使用哪个版本的matlab?我有R2009a。也许你有我更新的版本。 – gkaran89 2012-08-16 12:13:07

+0

我使用'7.14.0.739(R2012a)'。希望其他人可以参加。 – AGS 2012-08-16 12:17:02