解方程

一个表达式如 表示 Wolfram 语言中一个方程. 求解这样的方程是人们常常要做的事情,就是要找出对于什么 值,表达式为真.

这里给出二次方程 的两个解. 它以  的代换形式给出.
In[1]:=
Click for copyable input
Out[1]=
这是解的近似值.
In[2]:=
Click for copyable input
Out[2]=
通过使用 Solve 生成的 的替代算符规则,可以得到 的实际的解.
In[3]:=
Click for copyable input
Out[3]=
可以把这个规则用于任何含有 的表达式.
In[4]:=
Click for copyable input
Out[4]=
Solve[lhs==rhs,x]解方程,给出 x 的替换规则列表
x/.solution使用替换规则得到 x 的值
expr/.solution使用规则得到表达式的值

求和使用方程的解.

解方程时,Solve 总试图给出精确的解析解. 然而,根据数学的基本结论,对很复杂的方程是求不出解析解的. 在解一元代数方程时,如果变量的最高次数不超过4,那么 Wolfram 语言总能给出解析解. 但如果最高次数是5或更高,给出精确解析解在数学上一般是不可能的.

Wolfram 语言总能求出次数小于5的一元代数方程的解析解.
In[5]:=
Click for copyable input
Out[5]=
也可以求解某些较高次数的方程.
In[6]:=
Click for copyable input
Out[6]=
对那些在数学上不可能求出精确解析解的方程,Wolfram 语言使用 Root 对象表示方程的解.
In[7]:=
Click for copyable input
Out[7]=
虽然得不到精确解析解,但可以求出数值解.
In[8]:=
Click for copyable input
Out[8]=

除了能解纯代数方程,Wolfram 语言还能求解其它一些函数方程.

显示一个警告后,Wolfram 语言给出方程的一个解.
In[9]:=
Click for copyable input
Out[9]=

注意,方程如 实际上有无穷多个解,此处可通过 的倍数来区分各个解. 然而,这里 Solve 给出一个解,并显示一个信息告诉用户可能存在其它解. 可以使用 Reduce 来获得更多信息.

对这样的超越方程没有精确形式的解.
In[10]:=
Click for copyable input
Out[10]=
使用函数 FindRoot,给出 的初始值,可求得近似解.
In[11]:=
Click for copyable input
Out[11]=

函数 Solve 也能处理具有符号函数的方程. 在此情况下,又显示一个警告,然后给出形式上的反函数的结果.

Wolfram 语言使用 的形式上的反函数给出计算结果.
In[12]:=
Click for copyable input
Out[12]=
Solve[{lhs1==rhs1,lhs2==rhs2,},{x,y,}]
关于变量 x, y, 求解方程组

解方程组.

使用 Wolfram 语言也能解联立方程组. 只须给出方程组,并指明关于哪些变量求解即可.

这里是两个联立方程,关于变量 求解.
In[13]:=
Click for copyable input
Out[13]=
这是更复杂的联立方程组. 两个解以 的替换形式的列表给出.
In[14]:=
Click for copyable input
Out[14]=
这里使用上述解计算表达式 .
In[15]:=
Click for copyable input
Out[15]=

Wolfram 语言能够解任何线性方程组. 也可以解多种类型的多项式方程组,即使对一些方程不能精确求解. 也能将方程化为比较简单的形式.

当求解含有多个变量的方程组时,通过消去一些变量来整理方程往往是很方便的.

在两个方程中消去 ,得到关于  的单个方程.
In[16]:=
Click for copyable input
Out[16]=

如果有几个方程,则不能保证一定有解.

这个方程组无解,故 Wolfram 语言给出返回值 ,表明解集是空的.
In[17]:=
Click for copyable input
Out[17]=
  的几乎所有值,这个方程组都没有解.
In[18]:=
Click for copyable input
Out[18]=

一个方程组是否有解是一个很不清楚的问题. 例如,对 的大多数值,方程组 是不相容的,所以关于 无解. 然而,如果 等于 ,则方程有一个解. 函数 Solve 被设置为求方程的一般解. 它不考虑那些仅对参数的特殊值才存在的解.

如果使用 Reduce 而非 Solve,Wolfram 语言将求出方程组的所有可能的解,包括那些对参数有特殊要求的解.

这里显示了仅当 时,方程组有一个解. 表示要求 都为 True.
In[19]:=
Click for copyable input
Out[19]=
这里给出了方程的所有可能解. 答案被表达为简单方程的组合. 表示必须同时成立, 表示二中择一.
In[20]:=
Click for copyable input
Out[20]=
这里给出一个更复杂的方程的组合.
In[21]:=
Click for copyable input
Out[21]=
这里给出所有解的符号表示.
In[22]:=
Click for copyable input
Out[22]=
Solve[lhs==rhs,x]关于 x 求解方程
Solve[{lhs1==rhs1,lhs2==rhs2,},{x,y,}]
关于 x, y, 求解联立方程组
Eliminate[{lhs1==rhs1,lhs2==rhs2,},{x,}]
在联立方程组中,消去 x,
Reduce[{lhs1==rhs1,lhs2==rhs2,},{x,y,}]
给出一组简化方程,包括所有可能的解

求解和处理方程的函数.

Reduce 对专门在实数或整数范围内处理方程也具有强大的功能. "域内的方程和不等式" 节将更详细讨论这个问题.

这里假定 是复数,简化方程.
In[23]:=
Click for copyable input
Out[23]=
这里包含了对 必须为实数的要求条件.
In[24]:=
Click for copyable input
Out[24]=
这里只给出整数解.
In[25]:=
Click for copyable input
Out[25]=