用符号函数除以零
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.
如果我想在 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.