2017-03-08 25 views
1

2つの変数の合計が偶数の場合は0、奇数の場合は関数になります。私はこれを試してみました:区分的匿名関数の作成matlab

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*(m^2-n^2)^2); 

私の問題は、私はMのためにこれを行う= N、ならば、私がNaNの代わりに0がどのように私はそのような0フォロ何かを与えるために、これを解決することができ得るということでしょうか?

答えて

4

1/(m^2-n^2)は、機能を破壊しているNaNを生成しています。これを回避するには、あなたは分母に小さな有限を追加することができます(つまり、マシンイプシロン):

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + eps())); 

またはmnが十分に接近している場合にのみ非ゼロである用語を持っている:

fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + abs(m-n)<=eps(m))); 
+0

ありがとうございます。 didntはそれをすると思う – yankeefan11

関連する問題