有理矩阵有理对角化问题的算法程序设计报告

点赞:29719 浏览:134585 近期更新时间:2024-01-05 作者:网友分享原创网站原创

摘 要 : 矩阵对角化是重要的数学方法,但因其计算复杂却造成了应用上的极大困难,虽然已有的数学软件具有处理对角化功能,但对有理矩阵在有理数域上的对角化问题的计算结果却不尽人意.所以提出了研究有理矩阵在有理数域上相似对角化、合同对角化以及正交对角化的算法与程序课题,设计出能够实现有理矩阵在有理数域上对角化的实用软件,解决了有理矩阵在有理数域上对角化的精确判定与计算问题.

Abstract: Matrix is an important mathematical method of diagonalization, but because of its putational plexity, it has caused great difficulties on the application, The mathematical software has the function of processing of diagonalization, but for rational matrix diagonalization problem in the field of rational number the result is not satiactory. So the study of rational matrix over the rational number field similarity diagonalization diagonalization, contract and orthogonal diagonalization algorithm and program project, design to realize rational matrices over the field of rational numbers on the diagonalization of utility software, solves the rational matrices over the field of rational numbers on the diagonalization of the accurate determination and putation problem.

关 键 词 : 有理矩阵;有理对角化;算法;程序

Key words: rational matrix;rational diagonalization;algorithm;program

中图分类号:TP311.1 文献标识码:A 文章编号:1006-4311(2013)22-0237-04

0 引言

经过一年多的潜心研究,我们有理矩阵有理对角化软件创作小组完成了《有理矩阵有理对角化问题的算法及程序设计》的课题研究与软件开发任务,现将研究情况总结报告如下.

1.研究意义

矩阵是重要的数学工具,在各个领域中都有广泛的应用,如电路学、力学、量子物理乃至三维动画的制作都用到矩阵理论.矩阵对角化是矩阵理论中重要的变换方法,利用矩阵相似对角化可以快速地计算出矩阵所对应的行列式的值或矩阵的高次幂;利用矩阵合同对角化可以化简二次型,为二次曲面的研究提供了极大的方便;利用矩阵正交对角化化简的二次型几何意义是保形变换,更有实在价值,等等,可见矩阵对角化应用广泛.从理论上说矩阵对角化方法已经完善,但是人工实现却非常困难,甚至力不能及,所以研究用计算机实现之就非常重要.

值得注意的是,在实际应用及计算中所面对的数都是有理数,因此所直接打交道的也都是有理矩阵(即有理数域上的矩阵),因此考虑有理矩阵在有理数域上的对角化问题即有重要意义,尽管说已有的数学软件(如,Mathematica、Matlab、Maple等)能够解决矩阵对角化问题,但因为这些软件均是基于实数进行运算,所以对有理数而言势必存在误差(如对于循环小数),因此用之处理有理矩阵在有理数域上的对角化问题所得结果并不精确,有的误差还很大,例如关于相似对角化问题,对于矩阵A等于

有理矩阵有理对角化问题的算法程序设计报告参考属性评定
有关论文范文主题研究: 关于矩阵的论文范文文献 大学生适用: 在职研究生论文、函授毕业论文
相关参考文献下载数量: 75 写作解决问题: 怎么写
毕业论文开题报告: 论文任务书、论文设计 职称论文适用: 论文发表、职称评初级
所属大学生专业类别: 怎么写 论文题目推荐度: 免费选题

人工与我们设计的软件都可求得:

可逆矩阵T等于与对角阵D等于

使得T-1AT等于D.但Mathematica求出的可逆矩阵是:

T1等于

而Maple求出的可逆矩阵是:

T2等于

比较可见,Mathematica和Maple的计算结果存在着误差.

又如对于矩阵

A等于

人工与我们设计的软件都可求得正交矩阵

U等于与对角阵D等于

使得UTAU等于D.但是在“矩阵工作室”——Matlab中所求的结果却是:

正交矩阵T等于

与对角阵D等于

可见此结果存在较大的误差.再如对于矩阵:

A等于

人工与我们设计的软件都可求得可逆矩阵

p等于,使得

P′AP等于

但是Matlab中所求得的可逆矩阵却为

T等于,比较可见Matlab的结果存在误差.

因此研究和设计有理矩阵有理对角化软件具有重要意义,为有关矩阵对角化问题的学习、教学及研究提供辅助工具.

2.研究现状

本课题的研究主要是处理有理矩阵的有理对角化问题,从国外来看,相关的研究是已有的大型数学软件(如Matlab、Mathematica、Maple等),不过从对角化来说,这些软件均是在实数域、复数域上计算矩阵的对角化问题,而不具有精确处理有理矩阵在有理数域上对角化问题的功能,并且这些软件系统庞大、使用不便、输出的结果也不直观.从国内来看,在知网与维普资讯上搜索,只见到计文军等人《基于MATLAB的实对称矩阵对角化》的论文(该文系内江师范学院大学生科研项目论文),未见其它相关的研究.总之关于有理矩阵有理对角化的的算法与程序设计研究非常少见. 3 相关概念界定

有理矩阵:有理数域上的矩阵称为有理矩阵.

伪正交矩阵:如果n阶实矩阵T满足TT′等于T′T等于D(D是对角形矩阵),则称T是伪正交矩阵.特别地,当D是单位矩阵时T即是正交矩阵.当T、D都是有理矩阵时称T为伪有理正交矩阵.当T、D都是有理矩阵且D是单位矩阵时称T为有理正交矩阵.如果T的列单位化后仍是有理矩阵,那么T是有理正交矩阵,此时称T是可有理正交化的.

有理相似对角化:对于有理矩阵A,如果存在可逆的有理矩阵T,使得T-1AT为对角形,则称A能有理相似对角化.

有理合同对角化:对于有理对称矩阵A,如果存在可逆的有理矩阵T,使得T′AT为对角形,则称A能有理合同对角化.

伪有理正交对角化:对于有理对称矩阵A,如果存在伪有理正交矩阵T,使得T-1AT为对角形,则称A能伪有理正交对角化.

有理正交对角化:对于有理对称矩阵A,如果存在有理正交矩阵T,使得T-1AT为对角形,则称A能有理正交对角化.

4.研究方法

本项目的基本研究方法可简示为:

理论研究算法设计程序设计

这是一个周而复始的过程,为此制定了以下的研究方案:

5.研究过程

根据上述的研究方案,我们展开了具体的研究工作,下面介绍其中的部分工作:

①最困难的一步是有理矩阵特征多项式的算法设计.因为[xI-A]是含有未知数x的行列式,如果按照行列式的计算方法直接计算,算法即将非常复杂,程序设计也将非常困难,因此我们努力争取在不展开行列式的前提下而求得矩阵有理特征根.起初的思维是,因为整系数多项式有理根的求法只与最高项系数和常数项有关,而根据根与系数的关系以及矩阵的迹与根的关系,求特征多项式的最高项系数与常数项是容易的,所以就企图在只求出特征多项式的最高项系数与常数项的状态下解决问题.然而事与愿违,因为接下来需要判定是否所有特征根都是有理数,而完成这一工作的唯一途径是判断所有互不相同的特征根的重数和是否等于n,而确定重数又只能依靠综合除法,但使用综合除法就必须知道特征多项式的所有系数,因此即陷入了困境!为了在山穷水尽之际觅得柳暗花明,我们曾构想过许多方法,又查找了很多资料,终于找到了参考文献[2],其中给出了以矩阵A的幂及其幂的迹表示特征多项式fA(x)系数的方法,由此解决了确定特征多项式系数的算法.

②众所周知,高于四次方程的根是很难求得,这也就使一般的求多项式的根的算法依赖于近似计算方法.但因为整系数多项式的有理根容易求得,而有理矩阵的特征多项式必然是有理系数多项式,又根据有理系数多项式可约性理论,有理系数多项式完全可以转换为与其同解的本原多项式来求根,这就使我们形成了求所有特征根的算法思想:先将有理矩阵的特征多项式转化为与其同解的本原多项式,然后再用整系数多项式有理根的求法来求其特征根,并用综合除法来确定其重数.然而经过多次运算检验后,发现当特征根为0时,综合除法失效,于是只能先将0作特别处理,然后再用综合除法判定余下的部分.对此,经过讨论研究后,拟定了以特征多项式的最低次项系数来判定0是否为特征根,若是,则再由最低次项系数来确定其重数.

③在正交对角化中,当使用施密特方法对所求的变换矩阵正交化后(为了方便我们称正交化后的变换矩阵为“伪有理正交矩阵”),需要对伪有理正交矩阵的列单位化.然而并非每一个伪有理正交矩阵都能单位化,所以对于伪有理正交矩阵的每一列,在单位化之前需要判定其能否单位化,经研究,我们采用了“当其模均为有理数时,才可单位化”的判定方法.

④为实现有理数域上的精确计算,我们设计了分数加法、分数乘法子函数来实现有理数的四则运算,算法上说并不复杂,但麻烦的是程序设计中如何存储分数以及实现算法,在这里我们采用了用两个矩阵对应地存储一个有理矩阵的办法.

⑤由于有限小数及无限循环小数均为有理数,因此程序运行时除了以分数形式输入数据外,还允许输入小数,输入后程序将自动将所输入的小数转化为分数来计算,以确保运算精确性.

⑥程序设计中,由于矩阵对角化运算中,会临时出现不同维数的数组,这样动态数组就成了算法实现的关键之一,这需要反复调试、认真的处理,比如数组是定义在调用函数中,还是定义在被调用函数中,是需要具体处理的,否则会无故地损失内存,我们的经验是,对于循环调用的情况,数组最好定义在调用函数中.

6.研究结果

经过一年多的研究,我们完成了有理矩阵有理相似对角化、有理合同对角化、有理正交对角化的算法设计,发表论文三篇:①有理矩阵有理相似对角化的计算机实现;②有理矩阵有理合同对角化的计算机实现;③有理矩阵有理正交对角化的计算机实现.

并使用通用的、移植性好的C语言设计出程序,形成了一个方便、实用的有理矩阵对角化软件.由于该软件是在分数运算的基础上设计的,所以使用该软件能够精确地解决有理矩阵在有理数域上的对角化问题.具体说软件有以下三种功能:①有理矩阵有理相似对角化:对于有理矩阵A,判别有理矩阵A在有理数域上能否相似对角化,若能有理相似对角化,则输出其对角矩阵及相应的变换矩阵P;若不能有理相似对角化,则输出不能有理相似对角化的原因;②有理矩阵有理合同对角化:对于有理对称矩阵A,求出其标准形及相应的变换矩阵P;③有理矩阵有理正交对角化:对于有理对称矩阵A,首先判别有理矩阵A在有理数域上能否伪正交对角化,若能,则求出相应的伪有理正交矩阵T及对角矩阵,然后再判别T能否在有理数域上单位化,若能,则将T单位化后得到正交矩阵U,同时输出U与相应的对角阵;若T不能单位化,则输出不能有理正交对角化的原因.

下面给出三个计算例子:

例1 有理相似对角化计算例子,对于矩阵


A等于

存在可逆矩阵P等于

使得P^(-1)AP等于

程序运行时间:0.375000秒.

例2 有理合同对角化例子,对于矩阵

A等于

存在可逆矩阵P等于

使得P’AP等于

程序运行时间:0.312000 秒.

例3 有理正交对角化对于矩阵A等于

存在伪有理正交矩阵T等于

使得T^(-1)AT等于

进而,又存在有理正交矩阵U等于

使得U’AU等于

即A可以有理正交对角化.

程序运行时间:0.407000秒.

7.结论

本课题通过设计有理矩阵在有理数域上的相似对角化、合同对角化和正交相似对角化的算法,应用C语言编写相应的程序,设计出一个具有有理矩阵有理对角化功能的软件,为有关领域的学习、教学提供辅助工具.

但该软件仍存在着些许不足,如大规模矩阵问题、大整数运算问题、控制数据运算结果溢出问题都需要继续优化,进一步提高软件运算速度.

致谢:

感谢韩山师范学院王积社副教授的悉心指导!