主要内容

简化符号表达

数学表达式的简化并不是一个明确定义的课题。对于哪种表达形式是最简单的,并没有统一的概念。对一个问题来说最简单的数学表达式的形式对另一个问题来说可能很复杂,甚至不适合。例如,下面两个数学表达式以不同的形式表示同一个多项式:

(x + 1)(x - 2)(x + 3)(x - 4)

x4x - 23.- 13 x2+ 14x + 24

第一种形式清楚地显示了这个多项式的根。这种形式更容易处理根。当你想知道多项式的系数时,第二种形式是最好的。例如,当你微分或积分多项式时,这种形式很方便。

如果要解决的问题需要特定形式的表达式,最好的方法是选择适当的化简函数。看到选择函数来重新排列表达式

除了特定的简化器,Symbolic Math Toolbox™还提供了一个通用的简化器,简化

如果不需要特定形式的表达式(扩展、分解或用特定术语表示),请使用简化缩短数学表达式例如,使用此简化器查找计算最终结果的更短形式。

简化工作在各种类型的符号表达式,如多项式,表达式与三角函数,对数,和特殊函数。例如,化简这些多项式。

信谊x y简化((1 - x ^ 2) / (1 - x))简化((x - 1) * (x + 1) * (x ^ 2 + x + 1) * (x ^ 2 + 1) * (x ^ 2 - x + 1) * (x ^ 4 - x ^ 2 + 1))
Ans = x + 1 Ans = x^12 - 1

化简三角函数表达式。

简化(cos (x) ^ (2) - tan (x) ^ 2)简化(cos (x) ^ 2 - sin (x) ^ 2)
Ans = 1 Ans = cos(2*x)

简化包含指数和对数的表达式。在第三个表达中,使用日志(信谊(3))而不是日志(3).如果你使用日志(3),然后MATLAB®计算日志(3)具有双重精度,然后将结果转换为符号数。

简化(exp (x) * exp (y))简化(exp (x) - exp (x / 2) ^ 2)简化(日志(x) +日志(信谊(3))——日志(3 * x) + (exp (x) - 1) / (exp (x / 2) + 1))
Ans = exp(x + y) Ans = 0 Ans = exp(x/2) - 1

简化包含特殊函数的表达式。

简化(gamma(x + 1) - x*gamma(x))简化(besselj(2, x) + besselj(0, x))
Ans = 0 Ans = (2*besselj(1, x))/x

还可以通过使用简化符号函数简化

信谊f (x, y) f (x, y) = exp (x) * exp (y) f =简化(f)
F (x, y) = exp(x)*exp(y) F (x, y) = exp(x + y)

简化使用选项

默认情况下,简化使用严格的简化规则,并确保简化表达式在数学上总是等价于初始表达式。例如,它一般不组合复值的对数。

表示x简化(log(x^2) + log(x))
Ans = log(x²)+ log(x)

您可以应用附加的简化规则,这些规则并不适用于所有参数值和所有情况,但可以使用它们简化可以返回较短的结果。对于这种方法,使用IgnoreAnalyticConstraints.例如,用简化相同的表达式IgnoreAnalyticConstraints,你会得到结合对数的结果。

simplify(log(x^2) + log(x),'IgnoreAnalyticConstraints',true)
Ans = 3*log(x)

IgnoreAnalyticConstraints提供一个快捷方式,允许您在关于变量值的常用假设下简化表达式。或者,您可以显式地对变量设置适当的假设。例如,对数组合在一般情况下对于复数是无效的。如果你假设x是一个实值,简化合并对数IgnoreAnalyticConstraints

假设(x,'real')化简(log(x^2) + log(x))
Ans = log(x^3)

为了进一步的计算,清除上的假设x通过使用信谊

信谊x

另一种可以简化表达式或函数的方法是语法简化(f,“步骤”,n),在那里n是控制步数的正整数吗简化需要。指定更多简化步骤可以帮助您更好地简化表达式,但这需要更多时间。默认情况下,N = 1.例如,创建并简化这个表达式。结果比原始表达式短,但可以进一步简化。

信谊x y = (cos (x) ^ 2 - sin (x) ^ 2) * sin (2 * x) * (exp (2 * x) - 2 * exp (x) + 1) /……((cos(2*x)²- sin(2*x)²)*(exp(2*x) - 1));简化(y)
ans =(罪(4 * x) * (exp (x) - 1)) / (2 * cos (4 * x) * (exp (x) + 1))

指定相同表达式的简化步骤数。首先,使用25个步骤。

简化(y,“步骤”,25)
Ans = (tan(4*x)*(exp(x) - 1))/(2*(exp(x) + 1))

使用50步来进一步简化表达式。

简化(y,“步骤”,50)
Ans = (tan(4*x)*tanh(x/2))/2

假设,您已经简化了一个表达式或函数,但您想要相同表达式的其他形式。要做到这一点,您可以设置“所有”选项真正的.的语法简化(f,“步骤”,n,‘所有’,真的)在简化步骤中显示相同表达式的其他等效结果。

syms x y = cos(x) + sin(x) simplify(y,'Steps',10,'All',true)
ans = 2 ^ (1/2) * sin (x +π/ 4)2 ^ (1/2)* cos (x -π/ 4)cos (x) + sin (x) 2 ^ (1/2) * ((exp (- x * 1(π* 1)/ 4)* 1 i) / 2 - (exp (x * 1 +(π* 1)/ 4)* 1 i) / 2)

要返回更等价的结果,可以将步骤数增加到25。

简化(y,“步骤”,25岁,“所有”,真的)
ans = 2 ^ (1/2) * sin (x +π/ 4)2 ^ (1/2)* cos (x -π/ 4)cos (x) + sin (x) 2 ^ (1/2) * (2 * sin (x / 2 -π/ 8)^ 2 - 1)(2 ^ (1/2)* (exp (- x * 1 +(π* 1 i) / 4) / 2 + exp (x * 1 -(π* 1)/ 4)/ 2)2 ^ (1/2)* ((exp (- x * 1(π* 1)/ 4)* 1 i) / 2 - (exp (x * 1 +(π* 1)/ 4)* 1 i) / 2)

简化假设

有些表达式不能一般地简化,但在特定的假设下会变得更短。例如,在没有附加假设的情况下简化这个三角表达式将返回原始表达式。

n简化(sin(2*n*pi))
Ans = sin(2* *n)

但是,如果你假设这个变量n表示一个整数,同样的三角表达式化简为0。

假设(n,“整数”)简化(sin (2 * n *π))
Ans = 0

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

信谊n

简化分数

你可以用一般的化简函数,简化,来简化分数。然而,Symbolic Math Toolbox为这个任务提供了一个更有效的函数:simplifyFraction.该声明simplifyFraction (f)表示表达式f作为分数,分子和分母都是最大公约数为1的多项式。例如,化简这些表达式。

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

默认情况下,simplifyFraction不展开返回结果的分子和分母中的表达式。要展开结果表达式中的分子和分母,请使用扩大选择。为了比较,首先化简这个分数扩大

simplifyFraction(1 - exp(x)^4)/(1 + exp(x))^4)
ans = (exp (2 * x) - exp (3 * x) exp (x) + 1) / (exp (x) + 1) ^ 3

现在,化简相同的表达式扩大

simplifyFraction ((1 - exp (x) ^ 4) / (1 + exp (x)) ^ 4,“扩大”,真的)
ans = (exp (2 * x) - exp (3 * x) exp (x) + 1) / (3 * exp (2 * x) + exp (3 * x) + 3 * exp (x) + 1)