用符号函数除以零

Division by zero with symbolic functions

如果我想在 Matlab 中绘制 y=1/x 的图,我可以使用以下代码:

X=-10:0.1:10;
Y=1./(X);
plot(X,Y);

但是我想用符号函数来区分它们,所以我有这个代码:

syms x;
f(x) = 1./x;

X=-10:0.1:10;
Y=f(X);
plot(X,Y);

不幸的是我得到了一个错误

Error in MuPAD command: Division by zero. [_power]

这是合理的,因为在某些时候它会尝试将 1 除以 0。我怎样才能让它工作,以便它 return Inf 当发生被零除时,就像在 a=6/0;?

形式的常规计算中

ezplot函数可用于直接绘制符号函数和表达式。

syms x;
f(x) = 1/x;
ezplot(f,[-10 10]);

如果你想把你的表达式转换成可以数值计算的东西,你可以使用matlabFunction to convert the symbolic function to a function handle:

syms x;
f(x) = 1/x;
X = -10:0.1:10;
F = matlabFunction(f);
plot(X,F(X));

为什么 MuPAD return infinity for 1/0? In floating point, this is well-defined, but in mathematics, divison by zero is undefined. If you want to evaluate your function entirely in MuPAD you'll need to call underlying functions from Matlab and handle errors.