Function simplify #

简化一个表达式树。

一系列规则应用于表达式,在列表上重复应用,直到没有进一步的更改。可以选择将自定义规则集作为第二个参数传递给该函数。规则可以指定为对象、字符串或函数

const rules = [
  { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },
  'n1*n3 + n2*n3 -> (n1+n2)*n3',
  function (node) {
    // ... return a new node or return the node unchanged
    return node
  }
]

字符串和对象规则由左模式和右模式组成。左模式用于匹配表达式,右模式决定匹配项被替换为什么。模式与普通表达式的主要区别在于,以以下字符开头的变量被解释为通配符

默认规则列表在函数上公开为 simplify.rules,并可作为构建自定义规则集的基础。请注意,由于 simplifyCore 函数在默认规则列表中,因此默认情况下,simplify 会将表达式中具有运算符等效项的函数调用转换为其运算符形式。

要将规则指定为字符串,请使用‘->’分隔左模式和右模式。指定规则为对象时,以下键具有意义

有关理论的更多详细信息,请参阅

可以作为 simplify 的最后一个参数传递一个可选的 options 参数。当前可用的选项(括号中为默认值)

Syntax #

math.simplify(expr)
math.simplify(expr, rules)
math.simplify(expr, rules)
math.simplify(expr, rules, scope)
math.simplify(expr, rules, scope, options)
math.simplify(expr, scope)
math.simplify(expr, scope, options)

Parameters #

Parameter Type Description
expr Node | string 要简化的表达式
rules SimplifyRule[] 可选的自定义规则列表
scope Object 可选的变量作用域
options SimplifyOptions 可选的配置设置

Returns #

Type Description
Node 返回 expr 的简化形式

Throws #

Type | Description —- | ———–

Examples #

math.simplify('2 * 1 * x ^ (2 - 1)')      // Node "2 * x"
math.simplify('2 * 3 * x', {x: 4})        // Node "24"
const f = math.parse('2 * 1 * x ^ (2 - 1)')
math.simplify(f)                          // Node "2 * x"
math.simplify('0.4 * x', {}, {exactFractions: true})  // Node "x * 2 / 5"
math.simplify('0.4 * x', {}, {exactFractions: false}) // Node "0.4 * x"

另请参阅 #

simplifyCore, derivative, evaluate, parse, rationalize, resolve

Fork me on GitHub