0

我尝试使用这些命令

x = sym('x');
f(x) = sym('f(x)');
f(x) = x/x;

f(x) = sym('x/x');

,但它们都产生

f(x) = 1

(是的..对于每个实数 x 包括 0)

问题是如何避免在命令“sym”中进行预评估,或者存在另一种处理此问题的方法。

非常感谢你!

2014 年 5 月 21 日更新:

让我稍微描述一下这个问题。

考虑

f(x) = x/x

g(x) = 1

很明显,f和分别gR-{0}R

自动简化sym/syms可能会导致丢失一些信息。

4

2 回答 2

1

您的代码中没有预评估。F(x) = x/x 始终为 1,即使 x = 0,Matlab 只是简化了函数的表达方式,但没有 pe 评估。

我认为你应该看看不确定的表格来理解为什么 x = 0, x/x = 1。看看维基百科:http ://en.wikipedia.org/wiki/Indeterminate_form

于 2014-05-20T14:55:45.723 回答
1

@pabaldonedo 的回答很好。似乎 MuPad 和 Symbolic Toolbox 的设计者做出了一个x/x不确定的选择。

如果您确实想要0, Inf, -Inf, or NaN,NaN而不是1then ,您可以将符号变量与匿名函数结合使用:

f = @(x)sym(x)./sym(x);
f([-Inf -1 0 1 Inf NaN])

返回

ans =

[ NaN, 1, NaN, 1, NaN, NaN]

或者,如果输入已经是象征性的,你可以使用这个:

f = @(x)x./x;
f(sym([-Inf -1 0 1 Inf NaN]))
于 2014-05-20T16:12:50.357 回答