Solve

Solve[expr,vars]

试图求解以 vars 为变量的方程组或不等式组 expr.

Solve[expr,vars,dom]

在定义域 dom 上求解. dom 的常用选择为 RealsIntegersComplexes.

更多信息和选项

  • expr 可以为下述形式的任意逻辑组合:
  • lhs==rhs方程
    lhs!=rhs不等方程
    lhs>rhs 或者 lhs>=rhs 不等式
    exprdom定义域说明
    {x,y,}reg区域指定
    ForAll[x,cond,expr]全称量词
    Exists[x,cond,expr]存在量词
  • Solve[{expr1,expr2,},vars] 等价于 Solve[expr1&&expr2&&,vars].
  • 可以指定一个单变量或一个变量列表.
  • Solve 以下列格式的规则给出解:
  • {}无解
    {{x->solx,y->soly,},}几个解
    {{}}解集是全维度的
  • 当指定了一个单变量且一个方程的一个特定根具有大于 1 的重数时,Solve 给出对应解的多个复件.
  • Solve[expr,vars] 缺省假设以代数形式出现在不等式中的量为实数,而其他所有量为复数.
  • Solve[expr,vars,dom] 将所有变量和参数限定在定义域 dom 内.
  • 如果 domReals,或是它的一个子集,例如 IntegersRationals,则所有常数和函数值也被限定为实数.
  • Solve[expr&&varsReals,vars,Complexes] 求解得到的是变量的实数值,但函数值可以为复数.
  • Solve[expr,vars,Integers] 在整数域上求解丢番图方程.
  • Solve[,xreg,Reals]x 限制在区域 reg 中. x 的不同坐标可以使用 Indexed[x,i] 指代.
  • expr 中既不含 vars、也不含其他代数变量的代数变量被视为独立参数.
  • Solve 处理的主要是线性和多项式方程.
  • expr 仅涉及实数或复数域上的多项式方程和不等式时,Solve 原则上可以直接求解 vars.
  • expr 涉及到超越条件或整数定义域时,Solve 往往将在结果中引入额外参数.
  • Solve 可以对整数域上所有线性方程和不等式的解进行显式表示,并且可以求解文献中列出的大部分丢番图方程.
  • expr 仅涉及实数或复数域上的多项式条件时,Solve[expr,vars] 将恒能进行量词消去.
  • Solve 仅给出通解. 仅当连续参数满足方程时才有效的解被去除. 在一定条件下才有效的其他解作为ConditionalExpression 对象表示.
  • ConditionalExpression 解所包含的条件可以涉及不等式、Element 陈述、非连续参数的等式与不等式,以及具有全维解的方程. 关于连续参数及变量的不等式与 NotElement 条件被舍掉.
  • Solve 可能使用非等价变换来求超越方程的解,因此它可能找不到某些解,并且可能无法针对求出的解的有效性给出确切的条件. 如果发生这种情况,将发出错误消息.
  • Solve 使用特殊的有效技术来处理具有近似数值系数的线性方程组.
  • 可以给出以下选项:
  • Assumptions $Assumptions对参数的假设
    Cubics Automatic是否使用显式根式求解所有三次方程
    GeneratedParameters C如何命名生成的参数
    InverseFunctions Automatic是否使用符号式反函数
    MaxExtraConditions 0在连续参数上所允许的额外等式条件数
    MaxRoots Infinity返回的根的最大数目
    Method Automatic应该使用何种方法
    Modulus 0为整数假定的模数
    Quartics Automatic是否使用显式根式求解所有四次方程
    VerifySolutions Automatic是否验证由非等价变换获得的解
    WorkingPrecision Infinity计算中使用的精度
  • MaxExtraConditions->Automatic 时,仅包含使连续参数的等式条件数最少的解.
  • MaxExtraConditions->All 时,将给出需要参数的任意条件的解,并且所有条件被包括.
  • MaxExtraConditions->k 时,仅包含使连续参数的等式条件数至多为 k 的解.
  • Method->Reduce 时,Solve 仅采用等价变换,并且得到所有解.
  • Solve[eqns,,Modulusm] 在以 m 为模的整数域上求解方程. 当 Modulus->Automatic 时,Solve 将力图找到使方程具有解的最大模数.

范例

打开所有单元关闭所有单元

基本范例  (5)

求解一个二次方程:

求解关于 的联立方程组:

在实数上求解方程:

在正整数上求解方程:

在几何区域内求解方程:

范围  (85)

基本用途  (6)

解以替换列表给出:

使用 ReplaceAll (/.) 用 替换解:

检查解是否满足方程:

Solve 使用 {} 表示空解或者没有解:

Solve 使用 {{}} 表示满足方程的通解或者所有点:

在特定域上求解:

求解具有涉及符号参数的系数的方程:

绘制 y 的解的实数部分,以参数 a 的函数表示:

在实数上方程的解需要参数上的条件:

x 用解替换,并且简化结果:

使用 Normal 删除条件:

在正整数上方程的解需要引入新参数:

列出前10个解:

单变量复数方程  (15)

多项式方程用根式可解:

如果想使用通用公式求解三次方程式,可设定 CubicsTrue

默认情况下,Solve 使用 Root 对象表示系数为数字的一般三次方程的解:

一般的多项式方程:

有重根的多项式方程:

求出高次多项式的五个根:

有符号系数的多项式方程:

代数方程:

超越方程:

Solve 无法在这里找到所有解:

找到三个解:

有界区域上的单变量初等函数方程:

有界区域上的单变量正则函数方程:

这里,Solve 找到了一些解,但不能证实再无其他解:

复平面上一个垂直条纹的纯虚周期的方程:

找到无限制复数方程的指定数量的根:

符号函数:

非解析复数方程:

多变量复数方程组  (12)

线性方程组:

有符号系数的线性方程:

线性方程的欠定组:

无解的线性方程:

多项式方程组:

找出多项式方程组的一万亿个根中的五个:

有符号系数的多项式组:

代数方程:

超越方程:

找到超越方程的指定数量的解:

在边界盒上对解析方程组取平方:

非解析方程:

单变量实数方程  (13)

多项式方程:

具有重根的多项式方程:

具有符号系数的多项式方程:

代数方程:

分段方程:

超越方程,可以反函数求解:

超越方程,可用特殊零函数求解:

超越不等式,可用特殊零函数求解:

指对数方程:

高次离散多项式方程:

涉及高次根式的代数方程:

涉及非有理实数幂的方程:

具有双根的方程:

Tame 初等函数方程:

有界区间上的初等函数方程:

有界区间上的正则函数方程:

实数域上的周期型初等函数:

多变量实数方程组和不等式组  (10)

线性方程组:

多项式方程组:

量化的多项式方程组:

代数方程及不等式组:

分段方程组:

超越方程及不等式组,可用反函数求解:

第一个变量为指数对数形式、其他变量为多项式形式的方程及不等式组:

量化的方程组:

第一个变量为初等有界形式、其他变量为多项式形式的方程及不等式组:

量化的方程组:

对于第一个变量方程组解析且有界,对于其他变量则为多项式:

量化的方程及不等式组:

在有界区域上对解析方程组取平方:

丢番图方程  (11)

线性方程组:

线性方程及不等式组:

单变量多项式方程:

二元二次方程:

Thue 方程:

平方和方程:

勾股方程:

有界方程及不等式组:

无解高次方程组:

超越丢番图系统:

同余多项式方程组:

模方程  (4)

线性方程组:

单变量多项式方程:

多项式方程及不等式组:

量化多项式方程及不等式组:

有限域上的方程  (3)

一元方程:

线性方程组:

多项式方程组:

变量定义域混合的方程及不等式组  (2)

混合的实数和复数变量:

混合的实数和整数变量:

带有几何区域约束条件的方程组  (9)

求解在二维空间中的特殊区域:

绘制图线:

求解在三维空间中的特殊区域:

绘制图线:

定量系统:

隐式定义的区域:

使用参数定义的区域:

导出区域:

绘制图线:

在区域的笛卡尔积上消去量词:

取决于参数的区域:

答案取决于参数值 :

使用 指定 中的一个向量:

在这种情况下, 中的一个向量:

推广和延伸  (1)

求解所有变量:

选项  (28)

Assumptions  (4)

Assumptions 指定参数的条件:

默认情况下,不会给出需要参数满足等式的解:

如果给定关于参数的等式作为假设条件,则可返回解:

含有要求解的变量的假设条件被视为要求解的方程组的一部分:

不使用 Assumptions 的等价语句:

如果参数被假定属于一个离散集合,则返回涉及任意条件的解:

Cubics  (4)

默认情况下,Solve 仅在出现符号参数的情况下,才使用通用公式求三次方程的根式解:

对于具有数字系数的多项式,Solve 不使用公式:

如果设置 Cubics->FalseSolve 将不会使用公式:

如果设置 Cubics->TrueSolve 则总是使用公式:

不可约情况下,不可约三次方程的实根的代数形式仍然包含 I

机器精度的数值计算给出了假的虚部:

任意精度的计算也给出了虚部:

使用默认设置 CubicsAutomatic,即可得到明确的实数结果:

GeneratedParameters  (1)

Solve 可能引入新的参数以表示解:

使用 GeneratedParameters 来控制参数的生成方式:

InverseFunctions  (3)

在缺省情况下,Solve 用反函数但输出警告信息:

对于具有 NumericFunction 属性的符号,不使用符号式反函数:

设置 InverseFunctions->TrueSolve 不输出反函数的警告信息:

符号式反函数用于所有符号:

设置 InverseFunctions->FalseSolve 不使用反函数:

求解代数方程不需要使用反函数:

此处使用一种基于 Reduce 的方法,不需要使用反函数:

MaxExtraConditions  (4)

缺省时,不生成需要附加条件的解:

参数离散时除外:

缺省设置 MaxExtraConditions->0 不给出需要条件的解:

MaxExtraConditions->1 给出的解需要至多一个方程来确定参数:

MaxExtraConditions->2 给出的解需要至多二个方程来确定参数:

给出的解需要的参数方程数最少:

给出全部解:

缺省时,Solve 舍掉关于连续参数的不等式条件:

当设置为 MaxExtraConditions->All 时,Solve 包括所有条件:

MaxRoots  (4)

求多项式的 个根中的 个根:

求多项式方程组的 个根中的 个根:

求超越方程组的 个解:

当系统包含符号参数时,选项值将被忽略:

Method  (1)

缺省时,Solve 舍掉关于连续参数的不等式条件:

当设置为 Method->Reduce 时,Solve 使用 Reduce 求完整的解集:

Modulus  (2)

在以9为模的整数上求解方程:

求使方程组有一个解的模数:

Quartics  (3)

默认情况下,Solve 仅在出现符号参数的情况下,才使用通用公式求四次方程的根式解:

对于具有数字系数的多项式,Solve 不使用公式:

如果设置 Quartics->FalseSolve 将不会使用公式:

如果设置 Quartics->TrueSolve 则总是使用公式:

VerifySolutions  (1)

Solve 用非等价转换来验证获得的解:

设置为 VerifySolutions->False 时,Solve 不验证解:

VerifySolutions->False 下返回的某些解可能不正确:

这里用快速数值测试来尽可能选择正确的解:

在这个例子中,数值验证给出正确的解集:

WorkingPrecision  (1)

在缺省情况下,Solve 求出方程确切的解:

使用100位精度计算解,速度较快:

结果中的前100位数字与确切解一致:

用机器精度计算解会更快:

结果仍很接近确切解:

应用  (7)

求解一个二次方程:

求出圆和抛物线的交点:

找到使四次方程所有根相等的条件:

一种使用 Subresultants 的方法:

一种使用量词消去的方法:

绘制一条由隐式描述确定的空间曲线:

绘制空间曲线在 {x,y} 平面上的投影:

求勾股数(毕氏三元组):

求勾股数序列:

求如何使用面值分别为10分、23分和37分的邮票付$2.27的邮费:

通过 IntegerPartitions 可以完成同样的任务:

求一个复解析函数的 200 个根:

在复数图上显示函数的根:

属性和关系  (15)

满足方程的解:

给出的解作为置换规则,可以直接用于置换:

Solve{} 表示空解或无解:

Solve{{}} 表示所有解或满足方程的所有点:

对于单变量方程,Solve 根据解的重数重复解:

代数方程的解通常以 Root 对象的形式给出:

N 计算 Root 对象的数值近似值:

Root 对象可以涉及参数:

Series 计算 Root 对象的级数展开:

满足方程的级数最高阶数为11:

Solve 按替换规则表示解:

Reduce 用方程和不等式的 Boolean 组合来表示解:

Solve 使用快速试探法求解超越方程,但可能给出不完全的解:

Reduce 使用的方法往往较慢,但能得到所有解,并且给出所有必要的条件:

FindInstance 求出一个特解:

Reduce 类似,可以为 FindInstance 给出不等式和定义域说明:

DSolve 求解微分方程:

RSolve 求解递归方程:

SolveAlways 给出使得复数方程恒为真的参数值:

同样的问题可以用 ForAll 表述,并用 SolveReduce 求解:

Resolve 消去量词,可能不需求解生成的无量词方程组:

Eliminate 从复数方程组中消去量词:

Resolve 求解相同的问题:

ReduceSolve 求解生成的方程:

当且仅当方程 对于每个 只有一个解时, 才是双射的:

FunctionBijective 测试函数是否是双射的:

FunctionAnalytic 测试函数是否是解析的:

解析函数在一个封闭且有界的区域中只能有有限个零点:

可能存在的问题  (9)

Solve 给出通解;涉及参数方程的解没有给出:

Reduce 给出所有解,包含需要参数方程的解:

设置为 MaxExtraConditions->All 时,Solve 也给出非通解:

Solve 的结果不依赖于部分输入方程是否只含有参数. 下面的两个方程组等价,都不存在通解:

使用 MaxExtraConditions 指定所允许的参数条件数:

使用 Exists 量词求对于某些参数值 a 有效的解:

Solve 不去除既不是一般正确的,也不是一般不正确的解:

解在 时是正确的,在 时是不正确的:

对于超越方程,Solve 可能不给出所有的解:

使用 Reduce 得到所有解:

Solve 在设置 Method->"Reduce" 时,使用 Reduce 求解,但返回置换规则:

用反函数,这允许 Solve 快速求出某些解:

求出完全解可能花费更长的时间并且解可能会很大:

这里求出解为 x==2n 值:

对假设条件的解释取决于它们的句法性质. 此处,解在受假设条件限制的参数空间中是通解:

下面在数学上等价的假设条件含有要求解的变量,因此被视为要求解的方程组的一部分:

没有通解,以你为输入被解释为:

解非通解,因为它要求参数满足一个等式:

当参数被限制于一个离散集合时,通解的概念定义不明确,则返回所有的解:

输入方程的可移除奇点通常不被视为有效解:

然而,解可以包括可移除的奇点,这些奇点会被自动化简取消:

处的可移除奇点在运算时被取消:

此处, 处的可移除奇点被对方程进行预处理的 Together 取消:

MaxRoots 的值仅用于具有数值系数的系统:

当存在符号参数时,选项值将被忽略:

作为变量给出的表达式被视为原子对象,而不是其子表达式的函数:

实际上,在方程求解之前,变量被替换为新符号:

结果来自于:

Wolfram Research (1988),Solve,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Solve.html (更新于 2024 年).

文本

Wolfram Research (1988),Solve,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Solve.html (更新于 2024 年).

CMS

Wolfram 语言. 1988. "Solve." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/Solve.html.

APA

Wolfram 语言. (1988). Solve. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Solve.html 年

BibTeX

@misc{reference.wolfram_2024_solve, author="Wolfram Research", title="{Solve}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Solve.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_solve, organization={Wolfram Research}, title={Solve}, year={2024}, url={https://reference.wolfram.com/language/ref/Solve.html}, note=[Accessed: 22-November-2024 ]}