解集的表示法

方程或不等式的任意组合可以被明确定义为某种空间的一个区域. 基本函数 Reduce 把这种类型的隐式描述转化为显式描述.

关于方程或不等式的隐式描述是足够的,如果用户只是想要测试由变量值指定的一个点是否位于区域内. 但是为了理解区域的结构,或者产生区域内的点,用户通常需要一个更明确的描述,如从 Reduce 中获得的一样.

这里的不等式明确定义了一个半圆区域.
In[1]:=
Click for copyable input
Out[1]=
这里显示点 位于区域内.
In[2]:=
Click for copyable input
Out[2]=
Reduce 给出区域更明确的表示法.
In[3]:=
Click for copyable input
Out[3]=
如果我们对 选出和第一个不等式一致的值,那么我们马上获得 的明确不等式.
In[4]:=
Click for copyable input
Out[4]=

Reduce[expr, {x1, x2, ...}] 被设置用来描述区域,具体方法如下:首先给出对 的固定条件,然后给出取决于 的条件,接下来是取决于 的条件,以此类推. 该结构具有特征,允许用户通过连续对每个 依次选值来挑选点—与当用户在函数如 Table 中使用迭代方法很相似.

这里给出区域的表示法,在该区域内用户首先选出 的值,然后是 的值.
In[5]:=
Click for copyable input
Out[5]=

在一些简单的情况下,由方程或不等式系统定义的区域将最终只有一个组成部分. 在这样的情况下,从 Reduce 得到的输出将具有形式 ,其中每个 是一个涉及变量 的方程或不等式.

然而,在大部分情况下,将有几个组成部分,由包含形式如 的输出表示. Reduce 通常试图最小化用来描述区域的组成部分的数量. 但是在一些情况下,可能需要多参数化来覆盖单个连接的组成部分,其中每个部分都将作为 Reduce 的输出中的不同部分出现.

在表示解集时,通常寻找一些可以使用如 的形式描述的组成部分. 默认情况下,Reduce 这样做以使得返回结果尽可能的紧凑. 用户可以使用 LogicalExpand 来产生一个展开形式,其中每个组成部分分隔出现.

在产生最紧凑结果的过程中,有时候 Reduce 最终使后来的变量 的条件更多取决于前面的 ,然而这并不是严格必须的. 用户可以通过设置选项 Backsubstitution->True 迫使 Reduce 产生特定 只对前面的 有最小依赖性的结果. 通常这将导致相当大的输出,虽然对结果可能更容易解释.

默认情况下,Reduce 表示 关于 的条件.
In[6]:=
Click for copyable input
Out[6]=
回代法允许给出 的条件,而不涉及 .
In[7]:=
Click for copyable input
Out[7]=
CylindricalDecomposition[expr,{x1,x2,...}]
产生由 expr 定义的区域的柱形代数分解
GenericCylindricalDecomposition[expr,{x1,x2,...}]
寻找由 expr 定义区域的分解的完全维度部分,以及区域剩余部分的超曲面
SemialgebraicComponentInstances[expr,{x1,x2,...}]
给出每个由 expr 定义区域的连接部分中的至少一个点

柱形代数分解.

对于实数上的多项式方程或不等式,由 Reduce 返回的结果的结构通常是柱形代数分解 (cylindrical algebraic decomposition )或 CAD. 有时候 Reduce 可以产生更简单的形式. 但是在所有情况下,用户可以通过使用CylindricalDecomposition 获得完整的CAD. 对于只包含不等式的系统, GenericCylindricalDecomposition 给出"大部分"解集,并且通常更快.

这是由抛物线定界的区域的柱形代数分解.
In[8]:=
Click for copyable input
Out[8]=
这里给出沿着包含边界的曲线的解集的二维组成部分.
In[9]:=
Click for copyable input
Out[9]=
这里从解集的两个组成部分寻找解.
In[10]:=
Click for copyable input
Out[10]=
该解包含解集的每个组成部分的一些点.
In[11]:=
Click for copyable input
Out[11]=
New to Mathematica? Find your learning path »
Have a question? Ask support »