【毕业设计】关于方程Axd=λ的求解 毕设答辩_第1页
【毕业设计】关于方程Axd=λ的求解 毕设答辩_第2页
【毕业设计】关于方程Axd=λ的求解 毕设答辩_第3页
【毕业设计】关于方程Axd=λ的求解 毕设答辩_第4页
【毕业设计】关于方程Axd=λ的求解 毕设答辩_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浙江大学浙江大学 毕业论文毕业论文关于方程关于方程ax + d = xax + d = x的求解的求解 答辩人: 导师: 专业:数学系 信息与计算科学论文框架 第1章 绪论 第2章 相关理论基础 第3章 根据a矩阵的情况对问题的讨论 第4章 复杂度分析和数值例子 第5章 总结 参考文献 附录第1章 绪论本文主要研究方程ax + d = x的解,其中a是一个给定的n阶矩阵,且情况未知,d是一个给定的非零向量,所需要求解的未知量为向量x与一个数值,且向量x中满足x(n-1) = x(n)。如果把这个向量方程看做一个方程组并且把的x(n-1) = x(n)也看做一个方程的话,这个方程组一共有n+1个

2、方程,n+1个未知量,但由于的存在,它并不是一个通常的线性方程。通过对给定但是不确定具体形式的a矩阵进行讨论,根据a矩阵的性质来解原方程。由于原方程的形式非常接近线性方程组,如果先确定或者固定了的值,那么,来解这个方程剩余的x的值就很方便了。为了体现在方程中的意义,我将原方程变形为(*) ( - a)x = d这个形式很容易让我们想到最后的解x与的值,是否会与a矩阵的特征值和特征向量有关联。第2章 相关理论基础 线性方程相关理论 线性方程组的解法(直接法、迭代法) 特征值和特征向量相关理论 矩阵的相似与相似对角化 矩阵特征值的计算方法 牛顿法等数值算法第3章 根据a矩阵的情况对问题的讨论 当a

3、矩阵是对角阵的情况 若a矩阵是一个对角阵,那么我们不妨设对角线上的元素为a1,a2an-1,an。那么(*)就可以转化为n个非常简单的方程:( ak)xk = dk, k = 1,2,n-1,n。然后利用x(n-1) = x(n)这个条件,我们先分析( an-1)xn-1 = dn-1和( an)xn = dn这最后的两个式子,不妨令x = xn-1 = xn,那么这两个方程可以重写作:( an-1)x = dn-1( - an)x = dn这是个二元方程组,而这个方程里面和x的解的情况(是否有解,有解的话是唯一解还是无穷多解)和系数an-1,an,dn-1,dn有相当大的关系。我们只要分情况

4、讨论就可以了。分类情况步骤:(1)dn-10,dn0。如果dn-1和dn不相等,那么 = (an-1 * dn - an * dn-1) / (dn - dn-1)。如果dn-1和dn相等,那就看一下an-1和an的情况:如果an-1和an不相等,那么就一定无解了;如果an-1和an相等,那么就相当于这两个方程其实是一个方程,我们只要找出和前n-1个ak不相等的即可。第3章 根据a矩阵的情况对问题的讨论 当a矩阵是对角阵的情况 (2)dn-1=0,dn0。由于dn0,所以x一定不能等于0,而dn-1=0,则只能让取an-1的值了。(3)dn-10,dn=0。类似于(2)的情况只能取=an。(4

5、)dn-1=0,dn=0。那么就找出和前n-2个ak不相等的即可。 这样,只要求出了的值(或者已经判断无解),那么求x的值就非常方便了,只需要把求出的值分别代入方程( ak)xk = dk,就可以解出xk,k= 1,.,n了。而且由于是利用x(n-1) = x(n)的性质求出来的,所以这也就保证了解出来的 xk,k= 1,.,n里面一定是满足x(n-1) = x(n)的。这样,对于a矩阵是对角阵的情况我们就完美解决了。第3章 根据a矩阵的情况对问题的讨论 当a矩阵是上三角矩阵的情况 我们假定a = ai,ji,j = 1,n,且当ij时,ai,j = 0。让我们写出方程组的一般表达形式为:xi

6、 ai,jxj = di, i = 1,n。然后我们看当i = n-1和i = n时的两项,分别为:xn-1 an-1,n-1xn-1 an-1,nxn = dn-1xn an,nxn = dn令xn-1 = xn = x,并且重新整理上述两项可以得到:( an-1,n-1 an-1,n)x = dn-1( an,n)x = dn那么,我们很容易的得到了和我们在讨论a矩阵是对角阵的时候产生的非常相似的两个方程,那么类似的,我们利用相同的分类讨论方法就可以求出或者判断方程是否是无解的了,这里就不重复叙述了。第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实对称矩阵的情况 当a是实对称矩阵的时候,

7、我们再去写出具体方程组然后考察性质似乎遇到了一点麻烦。那么我们可以利用a可以相似对角化成一个实对角阵的性质来帮助我们解决问题。即,对于实对称矩阵a,一定可以找到一个酉矩阵p,以及一个实对角阵,满足a = ppt。那么利用这个有利条件,我们可以把方程(*)改写为(*) ( ppt)x = d = p( - )ptx = d对于这个形式,我们再细分两种情况:(1)取的对角线上的元素即k。对于这种情况,相当只要我们把a的所有特征值取出来,然后一一带入判断k是否是我们需要的就可以了。由于 = k,所以( - a)矩阵一定是奇异矩阵,那么(*)的解要么是无解,要么就是无穷多解。如果是无穷多解的话,我们就

8、只要在无穷多解的形式中要求x(n-1) = x(n)就可以了。对于这种情况,我们先判断rank( - a)是否和rank( a, d)相等,如果不相等,那么就是无解;如果相等,那么一定有无穷多解。然后设无穷多解中的自由变量为ti,自由变量的个数r等于n rank( - a) 0。那么不妨令x(n-1) =第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实对称矩阵的情况 p0 + (pi * ti), x(n) = q0 + (qi * ti)。x(n-1) x(n) = (p0 q0) + (pi - qi) * ti。对于这个式子,我们可以得知,如果p0 q0 = 0,那么令所有的ti都等于

9、0即可;如果p0 q00,那么,如果至少存在一组pi qi0,那么我们可以控制那个ti的值使得最后总的x(n-1) x(n) = 0,反之,如果所有的pi qi都为0,那么就无解了。当然,还有一种思路就是把x(n-1) = x(n)当作一个方程添加到方程组里面,那么可以得到一个新的n+1行n列的矩阵u,和一个新的n+1维列向量d,通过判断rank(u)和rank(u, d)是否相等来判断方程是否存在我们需要的解,如果存在,那么就一定是满足x(n-1) = x(n)的。(2) 不取的对角线上的元素即 k。这就保证了( - )矩阵一定是可逆的,显然其逆矩阵上也是一个对角阵。那么p( - )ptx

10、= d可以变形为(*) x = p( - ) -1ptd由于p和是可求的,那么我们不妨令p = pi.ji,j = 1,n和( )-1对角线上第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实对称矩阵的情况 的值为( k) -1,k = 1,n。那么我们甚至可以直接把x(i) 的具体表达式写出来:x(i) = (pi,k * pj,k / ( - k) * dj然后利用x(n-1) = x(n)这个条件,可以得到:(pn,k * pj,k / ( - k) * dj = (pn-1,k * pj,k / ( - k) * dj然后对上式进行整理:(pn,k pn-1,k) * pj,k / (

11、 - k) * dj = 0在对进行整理就可以得到一个关于的方程:f() = (k / ( k) = 0, k = (pn,k pn-1,k)(pj,k * dj)这个方程的的值,我们可以利用一些数值方法,例如牛顿法来求,只需要给出一个0 k的初值就可以了。那么,我们就把的值给确定下来了。需要提出的是,如果直接对f() = 0作牛顿迭代的话,是会有很大的麻烦的。因为由于不能取k值,那么就相当于在x方向上给挖了最多有n个坑,或者说是由这n第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实对称矩阵的情况 个坑把f()的零点隔开了(当然不一定保证两个相邻的k之间有零点)。而我们知道,牛顿迭代法对初值

12、是有一定的依赖性的,所以,初值0被夹在某两个k之间,而这两个k之间如果没有零点的话,那么这个迭代法就不会收敛了!所以我们要将f()做稍微的变化。最显而易见的方法就是给f()乘上一个多项式,例如可以令g() = f() * (),其中() = ( k)。由于不能取k,那么就保证了()是非零的。同时,g()的导数也非常容易求。那么,我们就可以比较放心的取0的初值了。 以上两种情况的关键都是在于对于实对称的矩阵a,首先要求出a的特征值,并且对于第二种情况,我们还要求出对应的酉矩阵p。对于实对称矩阵求特征值和特征向量的方法,我们已经在上文中提及了。所以,我们只需要在这些方法中选取我们所需要的方法(比如

13、可以使用jacobi迭代法来求出特征值和特征向量)就可以了。那么,对于a矩阵是实对称的情况,我们也就解决了。第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实矩阵的情况 当a矩阵是实矩阵的时候,一个简单的想法也是对方程进行相似对角化,不过是在复数域上的相似对角化,即a = pq,其中p,qcnn,pq = i。那么(*)可以整理为:(*) p( - )qx = d同对(*)的处理办法,我们依然分两种情况讨论,即:(1)取的对角线上的元素即k。这种情况和a是实对称矩阵的时候几乎是完全相同的,只是解方程的时候是在复数域上。(2) 不取的对角线上的元素即 k。对于这种情况,我们要重新更新x(i)的表

14、达式,即写出x = p( - )-1qd 中x的具体形式。这里,不妨令p = pi.j i,j = 1,n;q = qi.j i,j = 1,n和( )-1对角线上的值为( - k)-1, k = 1,n。类似于实对第3章 根据a矩阵的情况对问题的讨论 当a矩阵是实矩阵的情况 称的(2)情况,可以得到:x(i) = (pi,k * qk,j / ( - k) * dj然后同理,利用x(n-1) = x(n)这个条件,并整理可以得到只关于的方程:f() = (k / ( - k) = 0, k = (pn,k pn-1,k)(qk,j * dj)那么,同理,我们类似的对f()构造出g() = f

15、() * (),然后再在复数域上利用牛顿法就可以求出的值了,当然,最后求出的也有可能是实数值的。 a矩阵是实矩阵的情况和a矩阵是实对称的时候我们处理办法似乎是非常相同的,不过最大的区别就是在于a矩阵是实对称的时候,我们需要的是一个酉矩阵p,而a是一般的实矩阵的时候我们需要a矩阵在复数域上的用来作相似对角化矩阵的矩阵p和q,并满足pq = i。而要求出p以及它的逆矩阵q的代价似乎会比较大一些。第4章 复杂度分析和数值例子 对于a矩阵是对角阵的算法的复杂度分析 显然,由于a矩阵是对角阵,那么我们在上文中提及的算法在时间和空间复杂度上都是o(n)的。 对于a矩阵是上三角矩阵的算法的复杂度分析 由于a

16、矩阵是上三角矩阵采用的算法和a矩阵是对角阵时基本相同,那么此时的时间和空间复杂度都是o(n2)即读入数据的复杂度。第4章 复杂度分析和数值例子 对于a矩阵是实对称矩阵的算法的复杂度分析 对于a矩阵是实对称矩阵的情况。我采用的算法是先对a矩阵用jacobi方法计算出a矩阵的特征值和特征向量组成的酉矩阵,时间复杂度单次处理是o(n),对于非对角元要消一次0,所以相当于要做o(n2)次,那么总体复杂度是o(n3)。对于取a特征值的情况就直接带入(*)式中判断并求解x的值,单个特征值的复杂度为o(n3),所以对于最多n个特征值,时间复杂度会达到o(n4);对于不取a特征值的情况,利用推导出的g()函数

17、使用牛顿迭代法求出一个零点,牛顿迭代法迭代一次需要计算g()相关的函数,其时间复杂度为o(n),然后迭代次数为k(k的大小和精度相关),所以总体时间复杂度是o(n * k)。然后再将求出的回代到(*)式中来计算出x的值,因为这样做的复杂度仅仅是o(n2)的。所以总体的时间复杂度是o(n4 + n * k),而空间复杂依然是o(n2)。第4章 复杂度分析和数值例子 对于a矩阵是实矩阵的算法的复杂度分析 a矩阵是实矩阵的算法和a矩阵是实对称时的算法类似,不同点在于前期求a矩阵的特征值、特征向量组成的矩阵p和p矩阵的逆的效率和a矩阵是实对称时是不同的。我使用了qr方法来求特征值和特征向量(也可以用m

18、atlab的eig函数代替)。而求p矩阵的逆也没有非常好的办法,只能使用比较暴力的解方程的办法(对p做lu分解,然后求pqk = ek的qk向量,其中ek为只在k位置是1其他位置都是0的列向量),时间复杂度为o(n3)(也可以用matlab的inv函数代替)。后面部分依然是分为取a矩阵的特征值和不取特征值两种情况,那么总体的时间爱你复杂度依然是o(n4 + n * k),空间复杂度也是o(n2)。 第4章 复杂度分析和数值例子 对于a矩阵是对角阵时的数值例子例如令n = 10 运行datamaker(diag,input.txt,n);生成数据运行mainfunc(input.txt);生成结

19、果第4章 复杂度分析和数值例子 对于a矩阵是上三角矩阵时的数值例子例如令n = 10 运行datamaker(utm,input.txt,n);生成数据运行mainfunc(input.txt);生成结果第4章 复杂度分析和数值例子 对于a矩阵是实对称矩阵时的数值例子例如令n = 10 运行datamaker(rsm,input.txt,n);生成数据运行mainfunc(input.txt);生成结果第4章 复杂度分析和数值例子 对于a矩阵是实矩阵时的数值例子例如令n = 10 运行datamaker(normal,input.txt,n);生成数据运行mainfunc(input.txt)

20、;生成结果第5章 总结先说一下总体的认识,通过对ax + d = x这个方程的研究,我对线性方程、矩阵的特征值、特征向量以及一些数值线性代数的算法有了更进一步的认识和了解。对于解决一个一般性的问题也有了系统的认识。同时,在研究问题的过程中,对于查阅文献,使用matlab等都变得比较熟练了。再说一下关于研究的问题。这个方程从外观上来看就是一个非常简洁的方程,虽然不是简单的线性方程,但是与线性方程的形式非常类似。在研究这个问题的过程中,我主要把握住了两点:1、抓住主要变量,控制次要变量。由于方程中同时存在一维变量和向量变量x,我通过对方程的观察,发现是主要变量,只要能够找出合适的,那么x是很容易就

21、能求解的。反之,如果我先去搜寻x,再去确定的话,势必就比较困难了;2、对于未知的矩阵a进行分类递进式的研究。方程中是一个数,x和d都是n维向量,而唯有a是一个矩阵,而且是一个并不清楚类型的矩阵。那么,一下子就让我思考任意的矩阵a这个问题就变得似乎无从下手。所以,我就考虑先将a的形式简单化,从而简单化整个问题来思考,然后递进式的逐渐加强a的形式,从而解决整个问题。事实上,这个问题也确实随着我将a从对角阵、上三角矩阵一直到实对称矩阵、实矩阵一步一步,一个类型一个类型的解决掉了。附:代码清单datamaker.m:用来生成实验用的数据,根据输入的矩阵类型(对角、上三角、实对称、实矩阵)以及一个矩阵阶

22、数n来生成随机矩阵a、随机的值和x值,并且保证x(n-1) = x(n),然后利用这些数据生成向量d。当然,由于方程可能有多个解,通过此程序生成的值和x值不一定是原方程的唯一解。doublestepqr.m:双重歩位移qr迭代法。eig2.m:计算22矩阵的特征值。findalleigs.m:找出hessenberg矩阵的所有特征值。hessenbergresolve.m:对实矩阵做hessenberg分解。house.m:householder变换。jacobimethod.m:求实对称矩阵特征值和特征向量的jacobi方法。mainfunc.m:主程序。newtonmethod.m:求解方

23、程ak/(-bk) = 0(k = 1,.,n)的牛顿法,返回一个值。solvediagtype.m:解a矩阵是对角阵的原方程的算法。solvediagtypespl.m:找一个非k的实值的方法。solvenormal.m:求解a矩阵是一般实矩阵的原方程的算法。solversm.m:求解a矩阵是实对称矩阵的原方程的算法。solvesingulartype.m:求解奇异矩阵的线性方程的解。solveutm.m:求解a矩阵是上三角矩阵的原方程的算法。n = 10a = 0.814724 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.

24、000000 0.000000 0.0000000.000000 0.970593 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.849129 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.046171 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000

25、0.000000 0.000000 0.000000 0.186873 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.498364 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.547216 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.0000

26、00 0.000000 0.000000 0.251084 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.380446 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.337123d = -0.518304-0.251589-0.3630740.019217-0.014863-0.088406-0.251842-0.061272

27、-0.163294-0.130882返回a矩阵形如对角阵有解limda = 0.1622x = 0.7943 0.3112 0.5285 0.1656 0.6020 0.2630 0.6541 0.6892 0.7481 0.7481返回n = 10a = 0.083821 0.961898 0.910648 0.622055 0.049654 0.389739 0.353159 0.296321 0.775713 0.3786090.000000 0.004634 0.181847 0.350952 0.902716 0.241691 0.821194 0.744693 0.486792 0

28、.8115800.000000 0.000000 0.263803 0.513250 0.944787 0.403912 0.015403 0.188955 0.435859 0.5328260.000000 0.000000 0.000000 0.401808 0.490864 0.096455 0.043024 0.686775 0.446784 0.3507270.000000 0.000000 0.000000 0.000000 0.489253 0.131973 0.168990 0.183511 0.306349 0.9390020.000000 0.000000 0.000000

29、 0.000000 0.000000 0.942051 0.649115 0.368485 0.508509 0.8759430.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.731722 0.625619 0.510772 0.5501560.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.780227 0.817628 0.6224750.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000

30、000 0.000000 0.794831 0.5870450.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.207742d = -1.655708-1.314069-0.737942-0.704078-0.570864-0.848425-0.700642-0.656711-0.3361860.029089返回a矩阵形如上三角矩阵有解limda = 0.3012x = 0.4692 0.2303 0.8441 0.1947 0.2259 0.1707 0.2277 0.4357

31、0.3111 0.3111返回n = 10a = 0.430207 0.602843 0.801015 0.521136 0.913287 0.494174 0.500022 0.886512 0.042431 0.9729750.602843 0.711216 0.029220 0.231594 0.796184 0.779052 0.479922 0.028674 0.071445 0.6489910.801015 0.029220 0.928854 0.488898 0.098712 0.715037 0.904722 0.489901 0.521650 0.8003310.521136

32、 0.231594 0.488898 0.624060 0.261871 0.903721 0.609867 0.167927 0.096730 0.4537980.913287 0.796184 0.098712 0.261871 0.335357 0.890923 0.617666 0.978681 0.818149 0.4323920.494174 0.779052 0.715037 0.903721 0.890923 0.334163 0.859442 0.712694 0.817547 0.8253140.500022 0.479922 0.904722 0.609867 0.617

33、666 0.859442 0.805489 0.500472 0.722440 0.0834700.886512 0.028674 0.489901 0.167927 0.978681 0.712694 0.500472 0.471088 0.149865 0.1331710.042431 0.071445 0.521650 0.096730 0.818149 0.817547 0.722440 0.149865 0.659605 0.1733890.972975 0.648991 0.800331 0.453798 0.432392 0.825314 0.083470 0.133171 0.

34、173389 0.390938d = -2.024962-2.075029-2.734421-1.891045-2.551137-2.707424-2.412982-2.205310-1.673791-2.077894返回a矩阵形如实对称矩阵jacobimethodruntimes = 23奇异情况,取为a矩阵的特征值: = -1.205402无解 = 5.537017无解 = 1.093153无解 = 0.142588无解 = -1.086903无解 = -0.456063无解 = -0.745843无解 = 0.785018无解 = 1.220649无解 = 0.406762无解非奇异情况,取不为a矩阵的特征值:newtonmethodruntimes = 22有解limda = 0.8314x = 0.8034 0.0605 0.3993 0.5269 0.4168 0.6569 0.6280 0.2920 0.4317 0.4317返回n = 10a = 0.984064 0.737858 0.539126 0.669175 0.428253 0.265281 0.260728 0.470924 0.819981 0.2664710.167168 0.269119 0.698106 0.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论