matlab – 当用于评估NaN时,符号数学工具箱达到除以零误差

我刚刚更新到Matlab 2014a.我有很多脚本使用符号数学工具箱,以前工作正常,但现在出现以下错误:

Error using mupadmex
Error in MuPAD command: Division by zero. [_power]
  Evaluating: symobj::trysubs

我不能在这里发布我的实际代码,但这是一个简化的例子:

syms f x y
f = x/y
results = double(subs(f, {'x','y'}, {1:10,-4:5}))

在我的实际脚本中,我将两个23×23网格值传递给一个复杂的函数,我事先并不知道这些值中的哪一个会导致除以零.我在Google上找到的所有内容都告诉我不要尝试进行评估,以便将除以零.没用!我曾经得到’inf'(或’NaN’ – 我不能特别记得)那些无法评估我可以在我对这些数据进行后续步骤时轻松过滤的那些.

有谁知道如何强制Matlab 2014a回到那种行为而不是抛出错误?或者我注定要永远运行旧版本的Matlab,或者经历了改变我的方法以避免零除的重大痛苦?

最佳答案 您可以定义具有所需行为的除法,此除法函数返回inf以除以零:

mydiv=@(x,y)x/(dirac(y)+y)+dirac(y)
f = mydiv(x,y)
results = double(subs(f, {'x','y'}, {1:10,-4:5}))
点赞