一元方程

Solve 和相关的 Mathematica 函数处理的方程主要是多项式方程.

求解  的线性方程是容易的.
In[1]:=
Click for copyable input
Out[1]=
通过使用简单的公式也可以求解二次方程.
In[2]:=
Click for copyable input
Out[2]=
Mathematica 也能求三次方程的精确解. 这里是方程的第一个解.
In[3]:=
Click for copyable input
Out[3]=

对三次或二次方程,结果常常是复杂的. 但对次数不超过四次的方程,Mathematica 总能给出解的显式公式.

这些公式的一个重要特点是它们仅包含根式 :二次根、三次根和较高次根的算术组合.

然而,作为基本的数学事实,五次及五次以上的方程,一般不再可能给出仅含根式的解的显式公式.

虽然在一些特殊情形可以做到这一点,但绝大多数情形是不行的.

这里构造一个6次多项式.
In[4]:=
Click for copyable input
Out[4]=
对于这种能分解因式的多项式,Solve 直接求出根.
In[5]:=
Click for copyable input
Out[5]=
这里构造一个8次多项式.
In[6]:=
Click for copyable input
Out[6]=
这个多项式不能分解多项式,但它能分解成嵌套多项式,所以 Solve 也能求出根的显式公式.
In[7]:=
Click for copyable input
Out[7]=
Root[f,k]方程 k 次根

根的隐式表示.

对这个方程不能给出仅含根式的解的显式公式,所以 Mathematica 使用一个隐式符号表示.
In[8]:=
Click for copyable input
Out[8]=
这里求每个根的数值近似解.
In[9]:=
Click for copyable input
Out[9]=
如果用户最终想要数值解,那么使用 NSolve 将快得多.
In[10]:=
Click for copyable input
Out[10]=

Root 对象提供一个精确的,尽管是隐式的,多项式的根的表示. 用户可以像使用 Sqrt[2] 或其它代表精确数值量的表达式一样使用根对象.

这里是上面讨论的多项式的第一个根的 Root 对象.
In[11]:=
Click for copyable input
Out[11]=
这里它的数值近似值.
In[12]:=
Click for copyable input
Out[12]=
函数 Round 使用精确计算求出最接近这个根的整数.
In[13]:=
Click for copyable input
Out[13]=
如果将根式代入原多项式并化简结果,将得到0.
In[14]:=
Click for copyable input
Out[14]=
这里求出原多项式所有根的连乘.
In[15]:=
Click for copyable input
Out[15]=
第三个根的复共轭是第二个根.
In[16]:=
Click for copyable input
Out[16]=

如果求解的方程中仅有的符号参数是待求变量,那么,方程的所有根都是数. 但方程中如果有其它符号参数,那么解将是这些参数的函数.

这个方程的解还是用 Root 对象表示,但现在每个 Root 对象包含参数 .
In[17]:=
Click for copyable input
Out[17]=
当取 等于 时,Root 对象被化简,其中一些由显式根式给出.
In[18]:=
Click for copyable input
Out[18]=
这里显示第一个根作为 的函数的变化情况.
In[19]:=
Click for copyable input
Out[19]=
这里求第一个根关于 的导数.
In[20]:=
Click for copyable input
Out[20]=

Solve 任何  次多项式方程,它总能返回 个解,尽管其中一些可能用 Root 对象代表. 如果有退化解,那么每个解出现的次数将等于它的重数.

Solve 给出此方程的两个相等的解.
In[21]:=
Click for copyable input
Out[21]=
这里是一个10次方程的前4个解,这些解成对出现.
In[22]:=
Click for copyable input
Out[22]=

Mathematica 还能求解不明显是多项式形式的方程.

这是包含平方根的方程.
In[23]:=
Click for copyable input
Out[23]=
这里是一个包含对数的方程.
In[24]:=
Click for copyable input
Out[24]=

只要一个方程能化为某种多项式形式,Mathematica 总能用 Root 对象代表它的解. 但是,对更一般的方程,比如包含超越函数的方程,没有使用 Root 对象,甚至没有求数值近似值的系统方法.

这是关于 的简单超越方程.
In[25]:=
Click for copyable input
Out[25]=
关于标准函数,该方程没有解.
In[26]:=
Click for copyable input
Out[26]=
然而,在这种情况下,Mathematica 还可以求出一个数值解.
In[27]:=
Click for copyable input
Out[27]=

单变量的多项式方程组只有有限数目的解. 但是,超越方程往往有无穷多解. 通常的原因是,函数如 Sin 实际上有无穷多可能的逆函数. 使用默认选项设置InverseFunctions->TrueSolve 将假定任何这种函数有确定的逆函数. Solve 可能能够关于此逆函数返回特定的解.     

Mathematica 关于 ArcSin 返回特定的解,但显示警告说明其它的解被丢失.
In[28]:=
Click for copyable input
Out[28]=
这里关于 ProductLog 显示结果.
In[29]:=
Click for copyable input
Out[29]=

如果要求 Solve 求解一个包含任意函数如 的方程,在默认情况下,它将试图构建一个关于逆函数的正式解.

默认情况下,Solve 对函数 使用正式的逆函数.
In[30]:=
Click for copyable input
Out[30]=
这是逆函数的结构.
In[31]:=
Click for copyable input
Out[31]//InputForm=
InverseFunction[f]f 的逆函数
InverseFunction[f,k,n]具有 n 个参数的函数 f 关于第 k 个参数的逆函数

逆函数.

这里返回一个显式的逆函数.
In[32]:=
Click for copyable input
Out[32]=
Mathematica 可以在逆函数上进行正式操作.
In[33]:=
Click for copyable input
Out[33]=

虽然 Solve 只能给出一个方程的具体解,Reduce 可以给出整个解集的表示法. 对于超越方程,最终往往引入新的参数,取值包括所有可能的整数.

这里是解集的完整表示.
In[34]:=
Click for copyable input
Out[34]=
这里也是一般解的表示.
In[35]:=
Click for copyable input
Out[35]=

正如 "不同域上的方程和不等式" 中更多篇幅的讨论,Reduce 允许用户限制变量的域. 有时候,这将产生超越方程的确定解——或者表明它们不存在.

如果限制 的域,将产生确定的解.
In[36]:=
Click for copyable input
Out[36]=
如果限制 为实数,只可能有一个解.
In[37]:=
Click for copyable input
Out[37]=
Reduce 知道这里不可能有解.
In[38]:=
Click for copyable input
Out[38]=
New to Mathematica? Find your learning path »
Have a question? Ask support »