代数方程组(system of algebraic equations)是由多个n元多项式方程所构成的方程组,由数域P上m个n元多项式fi(x1,x2,…,xn)(i=1,2,…,m)组成的方程组称为数域P上的代数方程组,若x1=α1,x2=α2,…,xn=αn满足方程组中的每一个方程,则称它们为代数方程组的一个解。当代数方程组中每个方程的次数≤1时,则代数方程组就是通常的线性方程组;当代数方程组中m=n=1时,代数方程组就是通常的一元n次方程,因此,代数方程组可以看成是线性方程组与一元n次方程的推广和发展,研究代数方程组的解及其性质属于代数几何。在古代巴比伦和1300年前后朱世杰所著《四元玉鉴》中,都曾讨论过二元、三元和四元的高次方程组,但较系统地研究却迟至16世纪,正式讨论已到18世纪,主要由研究高次代数曲线f(x,y)=0,g(x,y)=0的交点数而引起的,贝祖(É.Bézout)于1779年在其所著《代数方程的一般理论》中给出用消元法求解代数方程组的方法1。
基本介绍代数方程组是由多个n元多项式方程所构成的方程组,由数域P上m个n元多项式fi(x1,x2,…,xn)(i=1,2,…,m)组成的方程组
称为数域P上的代数方程组,若x1=α1,x2=α2,…,xn=αn满足方程组中的每一个方程,则称它们为代数方程组的一个解。当代数方程组中每个方程的次数≤1时,则代数方程组就是通常的线性方程组;当代数方程组中m=n=1时,代数方程组就是通常的一元n次方程,因此,代数方程组可以看成是线性方程组与一元n次方程的推广和发展,研究代数方程组的解及其性质属于代数几何。
代数方程组相关性代数方程组相关性是一多项式组与另一多项式关系的一种描述。设有一多项式组PS和一多项式g,欲问PS的零点集或零点集的某些子集是否是g的零点集的子集,这即是方程组与方程g的相关性问题。在里特-吴整序原理的基础上,相关性问题可以有更清晰的表述:设已给升列
AS={fi(u1,u2,…,ud,x1,x2,…,xi), i=1,2,…,s}
和多项式g(u1,u2,…,ud,x1,x2,…,xi),并设fi关于主元xi为mi次,则AS的零点集可以分为m1m2…ms个支,每一支可用以u1,u2,…,ud为变元的一组代数函数
表示,欲问这m1m2…ms个零点集分支中,有多少个分支是g的零点集的子集,这是代数方程组相关性问题的一种明确而自然的提法,也是定理机器证明的一个基本理论问题.张景中、杨路等人提出的λ结式法,完全地解决了这一问题:设AS是真升列,引进独立变元λ,作AS关于g+λ的结式
Res(f1,f2,…,fs,g+λ),
它是关于λ与u1,u2,…,ud的多项式.设此多项式关于λ的最低次数为k,则在AS的零点集的m1m2…ms个分支中,恰有k个是g的零点集的子集。这一方法可以在微机上实现,用以处理难度较大的几何定理的机器证明2。
代数方程组的解法代数方程组的求解方法通常可以归结为两类:直接解法和迭代解法。所谓直接解法,是指通过有限步的数值计算获得代数方程组真解的方法;而迭代解法往往是先假定一个关于求解变量的场分布,然后通过逐次迭代的方法,得到所有变量的解。采用迭代解法求得的解一般为近似解。
典型的直接解法有Cramer矩阵求逆法和Gauss消元法。Cramer矩阵求逆法通常只适用于方程组规模较小的情况,而Gauss消元法则要先将系数矩阵通过消元转化为上三角阵,然后逐一回代,从而求得方程组的解。Gauss消元法虽然比Cramer矩阵求逆法更能够适应较大规模的方程组,但效率仍然不及迭代解法高。
目前常用的迭代解法有Jacobi迭代法和Gauss-Seidel迭代法。这两种方法均可以非常容易地在计算机上实现,但当方程组规模较大时,收敛速度往往较慢。
对于一个给定的代数方程组,直接解法更有效还是迭代解法更有效,取决于代数方程组的大小和性质。一般来讲,当方程组中方程的个数足够多时,迭代解法可能更省时。当代数方程组为线性方程组时,直接解法可能更有效。若方程组为非线性方程组,则必须采用迭代解法求解,每一次迭代得到的中间结果并不追求其计算精度,因而迭代解法效果可能更好。
线性代数方程组数值解法
线性代数方程组的数值解法是计算数学的一个基本组成部分。在自然科学和工程技术的许多问题中,例如结构分析、网络分析、大地测量、数据分析、最优化等问题中常常遇到线性代数方程组求解问题;数学中,例如求解非线性方程组或微分方程数值解问题也常转化为线性代数方程组求解问题来解。
线性代数方程组数值解法有着悠久的历史。中国古代数学著述《九章算术》(公元1世纪)的“方程”章中就已有了较好的线性代数方程组数值解法——相当于现代的对方程组的增广矩阵进行初等变换、消去未知量的方法。中世纪的印度数学家也可以求解线性方程组。例如12世纪的婆什迦罗的著作中,也有求解线性方程组的内容。在欧洲,16世纪的比特奥在其《算术》(1559)中采用了与《九章算术》类似的消元法。日本数学家关孝和在其《解伏题之法》一书(1683)中首先利用了类似于现在的“行列式”法求解了三元线性方程组。稍后,莱布尼茨提出关于行列式解线性方程组的思想(1693)。1721年马克劳林用行列式展开式的方法给出了二元、三元、四元线性方程组的解法,但他的符号记法不完善。1750年,克莱姆给出现在比较通用的线性方程组行列式解法,即克莱姆法则。1764年,贝祖用行列式建立了线性方程组的一般理论。但由于当时计算的效率很低,这一理论几乎只有理论上的意义,实际上只能求出未知数很少的线性代数方程组的解。只是在20世纪中叶电子计算机问世并投入应用之后,大型线性代数方程组的数值求解才成为可能。如何利用计算机更精确、更有效地解大型线性代数方程组,是计算数学研究中最重要的课题之一。
现代计算实践中,常用的线性代数方程组的数值解法有直接法和迭代法两大类。直接法是在没有舍入误差的假设下,经过有限次运算就可得出方程组的精确解的方法,如各种消元法。迭代法则采取逐次逼近的方法,即从一个初始向量出发,按照一定的计算格式(迭代公式),构造一个向量的无穷序列,其极限才是方程组的精确解,用有限次运算得不到精确解。迭代法是牛顿最先提出来的;1940年,绍司威尔提出的松弛法也是一种迭代法;共轭梯度法则是另一种迭代法,是R.弗莱彻等人于20世纪60年代提出来的3。
本词条内容贡献者为:
胡建平 - 副教授 - 西北工业大学