我有一个表达式,如果两个变量的总和是偶数,我想要为0,如果和是奇数,我想要一个函数。我试过这个:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*(m^2-n^2)^2);
我的问题是,如果我为m = n执行此操作,那么我得到的是NaN而不是0.如何解决此问题,以便给出0这样的东西?
答案 0 :(得分:4)
1/(m^2-n^2)
正在生成正在破坏您的功能的NaN
。为了解决这个问题,您可以为分母(即机器epsilon)添加一个小的有限性:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + eps()));
或当m
与n
足够接近时,其字词仅为非零:
fmn = @(m,n) (mod(m+n,2)~=0)*16*m*n/(pi^2*((m^2-n^2)^2 + abs(m-n)<=eps(m)));