为什么在使用“符号工具箱”时,检查相等性有时会失败?

7次观看(过去30天)
为什么使用“符号工具箱”时,用“isequal”检查相等有时会失败?例如:
> >符号xy
> > isequal (x * y + x, x * (y + 1))
ans =
逻辑
0

接受的答案

MathWorks支万博1manbetx持团队
一般来说,象征性的表达可以有两个平等的概念。
1)数学上的相等:如果两个表达式对它们所基于的符号变量的每一个可能值产生相同的结果,那么它们在数学上是等价的。数学等式考虑到了变量的假设和数学变换。例如,表达式'x'和'√(x^2)'通常在数学上是不相等的。但是,如果假设x是非负的
假设(x >= 0)
那么上述表达式在数学上确实是等价的。
要测试表达式之间的数学等价性,你应该使用下面链接中描述的'isAlways'函数:
'isAlways'函数对条件进行操作,并测试对于输入变量的每个可能值,条件总是为真。因此,要测试两个表达式'expr1'和'expr2'在数学上是否相等,可以使用以下命令
> isAlways(expr1 == expr2)
“逻辑”函数与“isAlways”函数相似,只是它不总是考虑变量假设或数学转换。有关“逻辑”函数的更多信息,请参见以下链接:
2)结构相等:如果两个表达式递归相同,则它们在结构上等价。在测试结构相等性时,我们将符号表达式视为简单的MATLAB对象,没有任何数学意义。如果两个MATLAB符号对象具有相同的属性和相同的子表达式,我们就说它们在结构上是相等的。
“isequal”和“isequaln”函数测试的是结构相等而不是数学相等。因此,以下命令返回false,即使表达式在数学上是等价的:
> >符号xy > > isequal (x * y + x, x * (y + 1))
有关'isequal'函数的更多信息,请参见以下链接:

更多的答案(0)

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!