2012-08-16 39 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