2026a

# sym_simplify


代数简化

函数库: TySymbolicMath

# 语法

S = sym_simplify(expr)

S = sym_simplify(expr; Name=Value)

# 说明

S = sym_simplify(expr) 对 expr 进行代数简化。如果 expr 是符号向量或矩阵,则此函数将简化 expr 的每个元素。示例


S = sym_simplify(expr; Name=Value) 指定具有一个或多个 Name=Value 参数的其他选项来对 expr 进行代数简化。示例

# 示例

简化表达式

简化以下的符号表达式。

using TySymbolicMath
@variables x
S = sym_simplify(sin(x)^2 + cos(x)^2)
S = 1
S = sym_simplify(cos(x)^2 - sin(x)^2)
S = cos(2x)
expr = ((exp(-x * 1im) * 1im) - (exp(x * 1im) * 1im)) / (exp(-x * 1im) + exp(x * 1im))
S = sym_simplify(expr)
S = tan(x)
简化矩阵元素

当输入参数是向量或矩阵时,sym_simplify 会尝试找到向量或矩阵每个元素的更简单形式。

using TySymbolicMath
@variables x
expr = [(x^2 + 5 * x + 6)/(x + 2) sin(x) * sin(2 * x)+cos(x) * cos(2 * x); (exp(-x * 1im) * 1im) / 2-(exp(x * 1im) * 1im) / 2 sqrt(16)]
S = sym_simplify(expr)
S = 2×2 Matrix{Num}:
  3 + x  cos(x)
 sin(x)       4
化简并展开表达式

可以使用关键字参数 expand 来展开表达式,当 expand=true 时,sym_simplify 会将表达式展开后再进行化简。

using TySymbolicMath
@variables s
expr = (s + 5.0)^2
S = sym_simplify(expr)
S1 = sym_simplify(expr; expand=true)
S = (5 + s)^2

S1 = 25 + 10s + s^2
expr = (2.5 + 2.5 * s)^2
S = sym_simplify(expr)
S1 = sym_simplify(expr; expand=true)
S = (25//4)*((1 + s)^2)

S1 = (25//4) + (25//2)*s + (25//4)*(s^2)

若不需要结果为有理数形式,请令 Rationalize=false。

S2 = sym_simplify(expr; Rationalize=false)
S2 = 6.25((1 + s)^2)
更深层次化简

当 IgnoreAnalyticConstraints=true 时,通常可以得到更简单的表达式形式,但结果可能不适用于变量的所有可能值。

using TySymbolicMath
@variables x y
expr = log(x^y)
S = sym_simplify(expr)
S1 = sym_simplify(expr; IgnoreAnalyticConstraints=true)
S = log(x^y)

S1 = y*log(x)
expr = [asin(sin(x)), acosh(cosh(x))]
S = sym_simplify(expr)
S1 = sym_simplify(expr; IgnoreAnalyticConstraints=true)
S = 2-element Vector{Num}:
   asin(sin(x))
 acosh(cosh(x))

S1 = 2-element Vector{Num}:
 x
 x

# 输入参数

expr - 输入的表达式
符号表达式 | 符号函数 | 符号向量 | 符号矩阵

输入的表达式,指定为符号表达式、函数、向量或矩阵。

数据类型: Num

复数支持:

# 关键字参数

指定可选的、以等号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。写法为Name = Value。您可采用任意顺序指定多个名称-值对组参数,如 Name1=Value1,...,NameN=ValueN 所示。

示例: sym_simplify(expr; expand=true)

expand - 是否展开表达式
false(默认) | true

是否展开表达式,指定为 false 或 true。当 expand=true 时,sym_simplify 会将表达式展开后再进行化简。反之,sym_simplify 只会尝试化简表达式并不会将其展开。

数据类型: Bool

IgnoreAnalyticConstraints - 简化规则
false(默认) | true

简化规则,指定为 false 或 true。当 IgnoreAnalyticConstraints=true 时,通常可以得到更简单的表达式形式,但结果可能不适用于变量的所有可能值。反之,sym_simplify 只会尝试恒等变换。

数据类型: Bool

Rationalize - 是否有理化
true(默认) | false

是否有理化,指定为 false 或 true。当 Rationalize=true 时,会将表达式转化为有理数形式。反之,sym_simplify 中的浮点数会保持原状。

数据类型: Bool

# 提示

数学表达式的简化并不是一个定义明确的主题。对于哪种表达式形式最简单,并没有统一的看法。对于一个问题来说最简单的数学表达式形式可能很复杂,甚至不适合另一个问题。

# 另请参阅

sym_collect | sym_combine | expand | factor | numden | simplify_fractions | simplify