解集的表示法
方程或不等式的任意组合可以被明确定义为某种空间的一个区域. 基本函数 Reduce 把这种类型的隐式描述转化为显式描述.
关于方程或不等式的隐式描述是足够的,如果用户只是想要测试由变量值指定的一个点是否位于区域内. 但是为了理解区域的结构,或者产生区域内的点,用户通常需要一个更明确的描述,如从 Reduce 中获得的一样.
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
Reduce[expr, {x1, x2, ...}] 被设置用来描述区域,具体方法如下:首先给出对
的固定条件,然后给出取决于
的
的条件,接下来是取决于
和
的
的条件,以此类推. 该结构具有特征,允许用户通过连续对每个
依次选值来挑选点—与当用户在函数如 Table 中使用迭代方法很相似.
| In[5]:= |
| Out[5]= |
在一些简单的情况下,由方程或不等式系统定义的区域将最终只有一个组成部分. 在这样的情况下,从 Reduce 得到的输出将具有形式
,其中每个
是一个涉及变量
的方程或不等式.
然而,在大部分情况下,将有几个组成部分,由包含形式如
的输出表示. Reduce 通常试图最小化用来描述区域的组成部分的数量. 但是在一些情况下,可能需要多参数化来覆盖单个连接的组成部分,其中每个部分都将作为 Reduce 的输出中的不同部分出现.
在表示解集时,通常寻找一些可以使用如
的形式描述的组成部分. 默认情况下,Reduce 这样做以使得返回结果尽可能的紧凑. 用户可以使用 LogicalExpand 来产生一个展开形式,其中每个组成部分分隔出现.
在产生最紧凑结果的过程中,有时候 Reduce 最终使后来的变量
的条件更多取决于前面的
,然而这并不是严格必须的. 用户可以通过设置选项 Backsubstitution->True 迫使 Reduce 产生特定
只对前面的
有最小依赖性的结果. 通常这将导致相当大的输出,虽然对结果可能更容易解释.
| In[6]:= |
| Out[6]= |
| In[7]:= |
| 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]:= |
| Out[8]= | ![]() |
| In[9]:= |
| Out[9]= | ![]() |
| In[10]:= |
| Out[10]= | ![]() |
| In[11]:= |
| Out[11]= | ![]() |




