检查表达式是否包含特定的子表达式
使用有
函数检查表达式是否包含特定的变量或子表达式。
检查这些表达式是否包含变量z
.
Syms x y z has(x + y + z, z)
逻辑1
有(x + y, z)
逻辑0
检查是否X + y + z
包含以下子表达式。请注意,有
发现子表达式x + z
即使条款x
和z
在表达中不要紧挨着对方出现。
have (x + y + z, x + y) Has (x + y + z, y + z) Has (x + y + z, x + z)
Ans = logical 1 Ans = logical 1
检查表达式是否(x + 1) ^ 2
包含x ^ 2
.虽然(x + 1) ^ 2
在数学上与表达式等价吗X ^2 + 2* X + 1
,结果是合乎逻辑的0
因为有
在测试子表达式时,通常不会将表达式转换为不同的形式。
有(x + 1)^2, x^2
逻辑0
展开表达式,然后调用有
检查结果是否包含x ^ 2
.因为扩大((x + 1) ^ 2)
将原始表达式转换为X ^2 + 2* X + 1
,有
函数查找子表达式x ^ 2
并返回逻辑1
.
将(x + 1)^2, x^2展开
逻辑1
检查符号表达式是否包含指定为向量元素的任何子表达式。
如果一个表达式包含一个或多个指定的子表达式,有
返回逻辑1
.
信谊x (sin (x) + cos (x) + x ^ 2, (tan (x),床(x) sin (x), exp (x)))
逻辑1
如果表达式不包含任何指定的子表达式,有
返回逻辑0
.
信谊x (sin (x) + cos (x) + x ^ 2, (tan (x),床(x) exp (x)))
逻辑0
使用有
,找到符号矩阵中包含特定子表达式的元素。
首先,创建一个矩阵。
syms x y M = [sin(x)*sin(y), cos(x*y) + 1;谭(x), cos (x) * 2 * sin (x) ^ 2)
M = (sin (x) * sin (y), cos (x * y) + 1] [tan (x), cos (x) * 2 * sin (x) ^ 2)
使用有
来检查米
包含sin (x)
.结果是一个大小相同的矩阵米
,1
和0
作为它的元素。对于元素米
包含指定表达式的,有
返回逻辑1
.对于不包含该子表达式的元素,有
返回逻辑0
.
T = has(M, sinx)
T = 2×2 logical array 1 0 0 1 .输出说明
只返回包含sin (x)
并将所有其他元素替换为0
乘以米
通过T
elementwise。
T m . *
Ans = [sin(x)*sin(y), 0] [0,2 *sin(x)²]
若要检查任何矩阵元素是否包含特定的子表达式,请使用任何
.
任何((M (:), sin (x)))
逻辑1
任何((M(:),因为(y)))
逻辑0
使用有
,查找符号向量中包含任何指定子表达式的元素。
信谊x y z T = ([x + 1, cos (y) + 1, y + z, 2 * x * cos (y)], [x,因为(y)])
T = 1×4 logical array 1 1 0 1 .输出说明
只返回包含的原始向量的元素x
或因为(y)
或者两者兼而有之,然后用0
用原始向量乘以T
elementwise。
[x + 1, cos(y) + 1, y + z, 2*x*cos(y)]
Ans = [x + 1, cos(y) + 1,0,2 *x*cos(y)]
有
符号函数如果expr
或subexpr
是一个符号函数,有
使用公式(expr)
或公式(subexpr)
.这种方法允许有
函数检查表达式是否定义了符号函数expr
包含定义符号函数的表达式subexpr
.
创建一个符号函数。
Syms x f(x) = sinx + cos(x);
在这里,sin (x) + cos (x)
一个表达式定义了符号函数吗f
.
公式(f)
Ans = cosx + sinx
检查是否f
和f (x)
包含sin (x)
.在这两种情况下有
检查表达式是否sin (x) + cos (x)
包含sin (x)
.
Has (f, sin(x)) Has (f(x), sin(x))
Ans = logical 1
检查是否f (x ^ 2)
包含f
.对这些参数,有
返回逻辑0
(false)因为它不检查表达式是否f (x ^ 2)
包含字母f
.这个调用等价于(f (x ^ 2),公式(f))
,而它又决定有cos(x^2) + sin(x^2) cos(x) + sin(x)
.
(f (x ^ 2), f)
逻辑0
通过指定函数名作为第二个参数来检查对特定函数的调用。通过将多个函数指定为字符向量的单元格数组,检查对多个函数中的任何一个函数的调用。
集成谭(x ^ 7)
.通过检查调用的结果来确定集成是否成功int
.因为有
找到了int
函数并返回逻辑1
(真正的
),整合不成功。
Syms x f = int(tan(x^7), x);(f,“int”)
逻辑1
检查微分方程的解是否包含对其中任意一个的调用罪
或因为
通过指定第二个参数为{‘罪’,‘因为’}
.的有
函数返回逻辑0
(假
),这意味着解决方案不包含对两者的调用罪
或因为
.
Syms y(x) a sol = dsolve(diff(y,x) == a*y);(索尔,{‘因为’‘罪恶’})
逻辑0
有
不转换或简化表达式。这就是为什么它找不到类似的子表达式x ^ 2
这样的表情(x + 1) ^ 2
.然而,在某些情况下有
可能会发现表达式或子表达式可以用其原始形式以外的形式表示。例如,有
发现表达式- x - 1
可以表示为——(x + 1)
.因此,调用有(-x - 1, x + 1)
返回1
.
如果expr
为空符号数组,有
返回与。相同大小的空逻辑数组expr
.