选择函数来重新排列表达式
转换类型 | 函数 |
---|---|
合并相同代数结构的项 | 结合 |
扩展表达式 | 扩大 |
系数表达式 | 因素 |
从表达式中提取子表达式 | 孩子们 |
收集具有相同权力的术语 | 收集 |
用其他函数重写表达式 | 重写 |
计算表达式的部分分式分解 | partfrac |
计算有理表达式的标准形式 | simplifyFraction |
用霍纳嵌套形式表示多项式 | 霍纳 |
合并相同代数结构的项
符号数学工具箱™提供结合
函数,用于组合原始表达式的子表达式。的结合
函数对指定的函数使用数学恒等式。例如,结合三角表达式。
Syms xy combine(2*sin(x)*cos(x),'sincos')
Ans = sin(2*x)
如果不指定目标函数,结合
在有效的地方使用幂的恒等式:
一个b一个c=一个b+c
一个cbc= (一个b)c
(一个b)c=一个公元前
例如,默认情况下,该函数组合以下平方根。
结合(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
提供一个快捷方式,允许您根据关于变量值的常用假设组合表达式。或者,您可以显式地对变量设置适当的假设。例如,假设x
而且y
都是正值。
假设((x, y),“积极”)结合(sqrt (x) * sqrt (y))
Ans = (x*y)^(1/2)
为了进一步的计算,清除上的假设x
而且y
通过使用信谊
.
符号x y
作为目标函数,结合
接受:
,经验值
,γ
,int
,日志
,要求
,sinhcosh
.
扩展表达式
对于基本表达式,使用扩大
函数通过乘积和来转换原始表达式。s manbetx 845这个函数提供了一种展开多项式的简单方法。
扩展((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)
展开包含对数的表达式。展开对数对一般的复值无效,但对正数值有效。
表示a b c正扩展(log(a*b*c))
Ans = log(a) + log(b) + logc
为了进一步的计算,清除假设。
表示a b c
或者,使用IgnoreAnalyticConstraints
展开对数时的选项。
扩大(日志(a * b * c)、“IgnoreAnalyticConstraints”,真的)
Ans = log(a) + log(b) + logc
扩大
也适用于三角表达式。例如,展开这个表达式。
展开(cos(x + y))
Ans = cos(x)*cos(y) - sinx * siny
扩大
使用函数之间的数学恒等式。
扩大(罪(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)),'ArithmeticOnly',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)* sin3 *x - 1
系数表达式
要返回表达式的所有不可约因子,请使用因素
函数。例如,求出这个多项式表达式的所有不可约多项式因子。结果表明,该多项式有三个根:X = 1
,X = 2
,X = 3
.
符号x因子(x^3 - 6*x^2 + 11*x - 6)
Ans = [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]
使用其他分解模式可以进一步分解这个表达式。例如,相同的表达式除以复数。
factor(x^6 + 1,' factor mode ','complex')
Ans = [x + 0.86602540378443864676372317075294 + 0.5i,…X + 0.86602540378443864676372317075294 - 0.5i,…X + 1.0i,…X - 1.0i,…X - 0.86602540378443864676372317075294 + 0.5i,…X - 0.86602540378443864676372317075294 - 0.5i]
因素
也适用于多项式和有理表达式以外的表达式。例如,您可以分解下列包含对数、正弦和余弦函数的表达式。在内部,因素
通过将子表达式替换为变量,将这些表达式转换为多项式和有理表达式。在计算不可约因子后,函数恢复原始子表达式。
因子(log(x)²- 1)/(cos(x)²- sin(x)²))
ans =[日志(x) - 1,日志(x) + 1, 1 / cos (x) - (sin (x)), 1 / cos (x) + sin (x)))
使用因素
分解符号整数和符号有理数。
因子(信谊(902834092))因子(1 /信谊(210))
Ans = [2,2,47,379, 12671] Ans = [1/2, 1/3, 1/ 5,1 /7]
因素
也可以因式分解大于的数flintmax
MATLAB®因素
不能。为了准确地表示一个较大的数字,请将数字放在引号中。
因子(信谊(' 41758540882408627201 '))
Ans = [479001599, 87178291199]
从表达式中提取子表达式
的孩子们
函数返回表达式的子表达式。
定义表达式f
有几个子表达式。
信谊x y f = exp (3 * x) * y ^ 3 + exp (2 * x) * y ^ 2 + exp (x) * y;
提取的子表达式f
通过使用孩子们
.
Expr = children(f)
exp = [y^2*exp(2*x), y^3*exp(3*x), y*exp(x)]
您可以通过调用来提取较低级别的子表达式孩子们
反复对结果进行分析。
提取的子表达式expr (1)
通过调用孩子们
反复。当输入为孩子们
是一个向量,输出是一个单元格数组。
Expr1 = children(expr(1))
Expr1 = [y^2, exp(2*x)] expr2 = 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²+ y*z²+ 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
用其他函数重写表达式
要用特定函数表示表达式,请使用重写
.该函数使用函数之间的数学恒等式。例如,用一个特定的三角函数重写一个包含三角函数的表达式。
Syms x重写(sin(x),'tan')
Ans = (2*tan(x/2))/(tan(x/2)²+ 1)
重写(cos (x),“谭”)
Ans = -(tan(x/2)²- 1)/(tan(x/2)²+ 1)
重写(sin(2*x) + cos(3*x)^2, tan)
谭ans = (((3 * x) / 2) ^ 2 - 1) ^ 2 / (tan ((3 * x) / 2) ^ 2 + 1) ^ 2 +…(2*tan(x))/(tan(x)²+ 1)
使用重写
用指数函数来表示这些三角函数。
重写(sin (x),“经验值”)
Ans = (exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2
重写(cos (x),“经验值”)
Ans = exp(-x*1i)/2 + exp(x*1i)/2
使用重写
用指数函数来表示这些双曲函数。
重写(sinh (x),“经验值”)
Ans = exp(x)/2 - exp(-x)/2
重写(cosh (x),“经验值”)
Ans = exp(-x)/2 + exp(x)/2
重写
也可以用对数表示反双曲函数。
重写(双曲正弦(x),“日志”)
Ans = log(x + (x^2 + 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)²+ 1/(x + 3)³+ 1
有理数中的分母表示原始表达式的公分母。
因素(d)
Ans = [x + 1, x + 2, x + 2, x + 3, x + 3, x + 3]
计算有理表达式的标准形式
的simplifyFraction
函数将原始有理表达式表示为分子和分母展开的单个有理项。返回表达式的分子和分母的最大公约数为1。这个函数在简化分数时比简化
函数。
syms x y simplifyFraction((x^3 + 3*y²)/(x^2 - y²)+ 3)
Ans = (x²+ 3*x²)/(x²- y²)
simplifyFraction
消去出现在分子和分母上的公因式。
simplifyFraction(x²/(x + y) - y²/(x + y))
Ans = x - y
simplifyFraction
也处理多项式和有理函数以外的表达式。在内部,它通过用标识符替换子表达式,将这些表达式转换为多项式或有理函数。在用临时变量规范化表达式之后,simplifyFraction
恢复原来的子表达式。
simplifyFraction (exp (2 * x)——exp (2 * y)) / (exp (x) - exp (y)))
Ans = exp(x) + exp(y)
用霍纳嵌套形式表示多项式
霍纳,或嵌套,形式的多项式表达式是有效的数值计算,因为它通常涉及较少的算术运算相比,其他数学等效形式的相同多项式。通常,这种形式的表达式在数值上是稳定的。要以嵌套形式表示多项式表达式,请使用霍纳
函数。
符号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