0

matlabを使用して極値を見つけたい次の関数があります。

ここに画像の説明を入力

その関数は、結果を取得するために matlab で「normcdf」関数を使用する必要がありますが、シンボリック関数を作成しようとすると、いくつかのエラーが返されます。

私が与える入力は次のとおりです。

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 を使用していることを忘れていました。

4

2 に答える 2

0

私はそれを回避する方法を見つけました。を使用する代わりにnormcdf、それと同等の方程式を使用することができますerf

normcdf(x,mu,sig) = (1+erf((x-mu)/sig/sqrt(2)))/2
于 2012-08-18T10:16:45.693 に答える
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を見てください。

于 2012-08-16T12:01:49.117 に答える