主要内容

选择“函数”重新排列表达式

结合相同代数结构的项

符号数学工具箱™提供结合用于组合原始表达式的子表达式的函数。的结合函数对指定的函数使用数学恒等式。例如,结合三角表达式。

Syms x y组合(2*sin(x)*cos(x),'sincos')
ans =罪(2 * x)

如果不指定目标函数,结合在这些身份有效的地方使用这些身份获取权力:

  • 一个b一个c一个b+c

  • 一个cbc= (一个bc

  • 一个bc一个公元前

例如,默认情况下,该函数合并下列平方根。

结合(sqrt (2) * sqrt (x))
ans = (2 * x) ^ (1/2)

函数不结合平方根√x * sqrt (y)因为恒等式对于负的变量无效。

结合(sqrt (x) * sqrt (y))
ans = x ^ (1/2) * y ^ (1/2)

把这些平方根结合起来,用IgnoreAnalyticConstraints选择。

结合(sqrt (x) * sqrt (y),‘IgnoreAnalyticConstraints’,真的)
ans = (x * y) ^ (1/2)

IgnoreAnalyticConstraints提供一个快捷方式,使您可以在有关变量值的常用假设下组合表达式。或者,您可以明确地对变量设置适当的假设。例如,假设xy是积极的价值观。

假设((x, y),“积极”)结合(sqrt (x) * sqrt (y))
ans = (x * y) ^ (1/2)

为了进一步的计算,请明确对的假设xy通过重新使用它们信谊

信谊x y

作为目标函数,结合接受:经验值γint日志要求,sinhcosh

扩展表达式

对于基本表达式,使用扩大函数通过乘积的和对原始表达式进行变换。下载188bet金宝搏这个函数提供了一种展开多项式的简单方法。

将(x - 1)*(x - 2)*(x - 3)
Ans = x^3 - 6*x^2 + 11*x - 6
扩展(x*(x*(x - 6) + 11) - 6)
Ans = x^3 - 6*x^2 + 11*x - 6

该函数还扩展了指数和对数表达式。例如,展开下面包含指数的表达式。

扩展(exp(x + y)*(x + exp(x - y)))
Ans = exp(2*x) + x*exp(x)*exp(y)

展开包含对数的表达式。展开对数对一般复值无效,但对正值有效。

Syms a b c positive expand(log(a*b*c))
Ans = log(a) + log(b) + log(c)

为了进一步的计算,澄清假设。

Syms a b c

另外,使用IgnoreAnalyticConstraints扩展对数时的选项。

扩大(日志(a * b * c)、“IgnoreAnalyticConstraints”,真的)
Ans = log(a) + log(b) + log(c)

扩大也学习三角表达式。例如,展开这个表达式。

扩大(cos (x + y))
Ans = cosx * cosy - sinx *sin(y)

扩大在函数之间使用数学恒等式。

扩大(罪(5 * x))
ans = sin (x) - 12 * cos (x) ^ 2 * sin (x) + 16 * cos (x) ^ 4 * sin (x)
扩大(cos(3 *这些“可信赖医疗组织”(x)))
Ans = 4*x^3 - 3*x

扩大对所有子表达式递归工作。

将sin(3*x) + 1 *(cos(2*x) - 1)展开
ans = 2 * sin (x) + 2 * cos (x) ^ 2 - 10 * cos (x) ^ 2 * sin (x) + 8 * cos (x) ^ 4 * sin (x) - 2

为了防止所有三角、对数和指数子表达式的展开,请使用该选项ArithmeticOnly

扩展(exp(x + y)*(x + exp(x - y)),' arithmeconly ',true)
Ans = exp(x - y)*exp(x + y) + x*exp(x + y)
扩大(罪(3 * x) + 1) * (cos (2 * x) - 1),‘ArithmeticOnly’,真的)
Ans = cos(2*x) - sin3 *x + cos(2*x)*sin(3*x) - 1

系数表达式

要返回表达式的所有不可约因子,请使用因素函数。例如,找出这个多项式表达式的所有不可约多项式因子。结果表明,该多项式有三个根:x = 1x = 2,x = 3

Syms x factor(x^3 - 6*x^2 + 11*x - 6)
[x - 3, x - 1, x - 2]

如果多项式表达式是不可约的,因素返回原始表达式。

因式(x^3 - 6*x^2 + 11*x - 5)
Ans = x^3 - 6*x^2 + 11*x - 5

求表达式的不可约多项式因子x ^ 6 + 1.默认情况下,因素对有理数进行因式分解使有理数保持精确的符号形式。这个表达式的结果因子不显示多项式根。

因素(x ^ 6 + 1)
Ans = [x^2 + 1, x^4 - x^2 + 1]

使用其他分解模式可以进一步分解这个表达式。例如,在复数上分解相同的表达式。

因子(x ^ 6 + 1,“FactorMode”,“复杂的”)
Ans = [x + 0.86602540378443864676372317075294 + 0.5i,…]X + 0.86602540378443864676372317075294 - 0.5i,…1.0 x +我,……x - 1.0我,……X - 0.86602540378443864676372317075294 + 0.5i,…X - 0.86602540378443864676372317075294 - 0.5i]

因素也适用于多项式和有理表达式以外的表达式。例如,可以分解包含对数、正弦和余弦函数的下列表达式。在内部,因素通过用变量替换子表达式,将这些表达式转换为多项式和有理表达式。在计算了不可约因子之后,函数恢复了原始的子表达式。

因式(log(x)^2 - 1)/(cos(x)^2 - sin(x)^2))
ans =[日志(x) - 1,日志(x) + 1, 1 / cos (x) - (sin (x)), 1 / cos (x) + sin (x)))

使用因素分解符号整数和符号有理数。

因子(信谊(902834092))因子(1 /信谊(210))
Ans = [1, 2, 47, 379, 12671]

因素也可以分解大于flintmaxMATLAB的®因素不能。要准确地表示较大的数字,请将数字放在引号内。

因子(信谊(' 41758540882408627201 '))
Ans = [479001599, 87178291199]

从Expression中提取子表达式

孩子们函数返回表达式的子表达式。

定义一个表达式f子表达式。

信谊x y f = exp (3 * x) * y ^ 3 + exp (2 * x) * y ^ 2 + exp (x) * y;

的子表达式f通过使用孩子们

expr =孩子(f)
[y^2*exp(2*x), y^3*exp(3*x), y*exp(x)]

您可以通过调用来提取低级子表达式孩子们反复对结果。

的子表达式expr (1)通过调用孩子们反复。当输入到孩子们是向量,输出是单元格数组。

Expr1 = children(expr(1)) expr2 = children(Expr1))
Expr1 = [y^2, exp(2*x)] = 1×2 cell array {1×2 sym} {1×1 sym}

访问单元格数组的内容expr2使用括号。

expr2 {1} expr2 {2}
Ans = [y, 2] Ans = 2*x

以相同权力收取条款

如果一个数学表达式包含与指定变量或表达式幂相同的项,则收集函数通过对这些术语进行分组来重新组织表达式。当调用收集,指定函数必须考虑为未知数的变量。的收集函数把原始表达式看作是给定未知数的多项式,并将系数按幂等分组。将表达式的各项用幂相等的集合x

信谊x y z expr = x * y ^ 4 + x * z + 2 * x ^ 3 + x ^ 2 * y * z +……3*x^3*y^4*z^2 + y*z^2 + 5*x*y*z收集(expr x)
ans = (3 * y ^ 4 * z ^ 2 + 2) * x ^ 3 + y * z * x ^ 2 + y ^ 4 + 5 * * y + z) * x + y * z ^ 2

将同一表达式的各项用幂等分组y

收集(expr, y)
ans = (3 * x ^ 3 * z ^ 2 + x) * y ^ 4 + x (x ^ 2 * z + 5 * * z + z ^ 2) * y + 2 * x ^ 3 + z * x

将同一表达式的各项用幂等分组z

收集(expr, z)
ans = (3 * x ^ 3 * y ^ 4 + y) * z ^ 2 + (x + 5 * * y + x ^ 2 * y) * z + 2 * x ^ 3 + x * y ^ 4

如果你没有指定变量收集必须考虑为未知数,函数使用symvar来确定默认变量。

收集(expr)
ans = (3 * y ^ 4 * z ^ 2 + 2) * x ^ 3 + y * z * x ^ 2 + y ^ 4 + 5 * * y + z) * x + y * z ^ 2

通过将表达式中的几个未知数指定为向量来收集这些未知数。

收集(expr [y, z])
ans = 3 * x ^ 3 * y ^ 4 * z x ^ 2 + y ^ * 4 + y * z ^ 2 + (x ^ 2 + 5 * x) * y * z + x * z + 2 * x ^ 3

用其他函数重写表达式

用特定的功能、用法来表示一个表达式重写.这个函数在函数之间使用数学恒等式。例如,用一个特定的三角函数重写一个包含三角函数的表达式。

信谊x重写(sin (x),“谭”)
Ans = (2*tan(x/2))/(tan(x/2)^2 + 1)
重写(cos (x),“谭”)
Ans = -(tan(x/2)²- 1)/(tan(x/2)²+ 1)
重写(sin (2 * x) + cos (3 * x) ^ 2,“谭”)
谭ans = (((3 * x) / 2) ^ 2 - 1) ^ 2 / (tan ((3 * x) / 2) ^ 2 + 1) ^ 2 +…(2 * tan (x)) / (tan (x) ^ 2 + 1)

使用重写用指数函数来表示三角函数。

重写(sin (x),“经验值”)
Ans = (exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2
重写(cos (x),“经验值”)
exp(-x*1i)/2 + exp(x*1i)/2

使用重写用指数函数来表示双曲函数。

重写(sinh (x),“经验值”)
exp(x)/2 - exp(-x)/2
重写(cosh (x),“经验值”)
exp(-x)/2 + exp(x)/2

重写也用对数表示反双曲函数。

重写(双曲正弦(x),“日志”)
Ans = log(x + (x²+ 1)^(1/2))
重写(作用(x),“日志”)
Ans = log(x + (x - 1))^(1/2)*(x + 1)^(1/2)

计算表达式的部分分式分解

partfrac函数返回多项式和有理项的和形式的有理表达式。在每个有理项中,分子的次数小于分母的次数。对于一些表达式,partfrac返回明显更简单的表单。

Syms x n = x^6 + 15*x^5 + 94*x^4 + 316*x^3 + 599*x^2 + 602*x + 247;D = x^6 + 14*x^5 + 80*x^4 + 238*x^3 + 387*x^2 + 324*x + 108;partfrac (n / d, x)
Ans = 1/(x + 1) + 1/(x + 2)^2 + 1/(x + 3)^3 + 1

有理项中的分母表示原表达式的因式公分母。

因素(d)
Ans = [x + 1, x + 2, x + 2, x + 3, x + 3]

计算有理表达式的正规形式

simplifyFraction函数将原始有理表达式表示为分子和分母展开的单个有理项。返回表达式的分子和分母的最大公约数是1。这个函数在简化分数方面比简化函数。

syms x y simplifyFraction(x^3 + 3*y^2)/(x^2 - y^2) + 3
Ans = (x^3 + 3*x^2)/(x^2 - y^2)

simplifyFraction消去分子和分母上的公因数。

(x^2/(x + y) - y^2/(x + y))
Ans = x - y

simplifyFraction也处理多项式和有理函数以外的表达式。在内部,它通过用标识符替换子表达式,将这些表达式转换成多项式或有理函数。用临时变量对表达式进行规范化后,simplifyFraction恢复原始子表达式。

simplifyFraction (exp (2 * x)——exp (2 * y)) / (exp (x) - exp (y)))
Ans = exp(x) + exp(y)

使用霍纳嵌套形式表示多项式

霍纳式或嵌套式多项式表达式对于数值计算是有效的,因为与相同多项式的其他数学等价形式相比,它通常涉及较少的算术运算。通常,这种形式的表达式在数值上是稳定的。要用嵌套形式表示多项式表达式,请使用霍纳函数。

Syms x horner(x^3 - 6*x^2 + 11*x - 6)
Ans = x*(x*(x - 6) + 11) - 6

如果多项式系数是浮点数,得到的霍纳形式将它们表示为有理数。

霍纳(1.1 + 2.2*x + 3.3*x^2)
Ans = x*((33*x)/10 + 11/5) + 11/10

若要将结果中的系数转换为浮点数,请使用vpa

vpa (ans)
Ans = x*(3.3*x + 2.2) + 1.1