




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù) 值 分 析課程設(shè)計(jì)QR方法求矩陣全部特征值問(wèn)題復(fù)述用算法求矩陣特征值:(i) (ii)要求:(1) 根據(jù)算法原理編制求(i)與(ii)中矩陣全部特征值的程序并輸出計(jì)算結(jié)果(要求誤差)(2) 直接用現(xiàn)有的數(shù)學(xué)軟件求(i),(ii)的全部特征值,并與(1)的結(jié)果比較。問(wèn)題分析 QR方法是目前公認(rèn)為計(jì)算矩陣全部特征值的最有效的方法。它適用于任一種實(shí)矩。QR方法的原理是利用矩陣的正交分解產(chǎn)生一個(gè)與矩陣A相似的矩陣迭代序列,這個(gè)序列將收斂于一個(gè)上三角陣或擬上三角陣,從而求得原矩陣A的全部特征值。QR是一個(gè)迭代算法,每一步迭代都要進(jìn)行QR分解,再作逆序的矩陣乘法。要是對(duì)矩陣A直接用QR方法,計(jì)算量太大
2、,效率不高。因此,一個(gè)實(shí)際的QR方法計(jì)算過(guò)程包括兩個(gè)步驟,首先要對(duì)矩陣A用初等相似變換約化為上Hessenberg矩陣,再用QR方法求上Hessenberg矩陣的全部特征值。示意如下: 對(duì)B矩陣的約化只需將每列次對(duì)角線上的元素約化為0。因此常常用平面旋轉(zhuǎn)陣(Givens變換陣)來(lái)進(jìn)行約化。1、 QR方法原理及收斂性設(shè)已實(shí)現(xiàn)了QR分解,記其中是正交陣,是上三角陣。因?yàn)椋脤?duì)作正交相似變換有可改寫(xiě)為 顯然只是的QR分解因子陣的逆序相乘,而且與原矩陣有相同的特征值。對(duì)矩陣再重復(fù)以上過(guò)程并繼續(xù)下去,可以得到一個(gè)與原矩陣A有相同特征值的矩陣序列。其過(guò)程如下: 記 對(duì)作正交分解 作矩陣 , 對(duì)作正交分解
3、作矩陣 ,重復(fù)以上過(guò)程可得一般的形式為對(duì)作正交分解 構(gòu)成矩陣序列 (k=1,2)A 從矩陣A開(kāi)始得到一個(gè)矩陣序列這個(gè)矩陣序列中每一個(gè)矩陣都與原矩陣相似,即都有與A相同的特征值。這個(gè)矩陣序列在實(shí)質(zhì)上收斂于依次以為對(duì)角元的上三角陣。具體可以表示為其中 的極限不一定存在。2、 用正交相似變換約化矩陣為上Hessenberg陣 用Householder變換可以將一個(gè)向量指定的某個(gè)分量以下的各分量變?yōu)?。我們只要求消掉A的次對(duì)角線以下的元素,即將A約化為上Hessenberg陣。為了使變換前后矩陣的特征值不變,需要用Householder矩陣對(duì)A作相似變換,即用正交陣同時(shí)左乘和右乘A時(shí),原來(lái)已變?yōu)?的元
4、素不再改變。若設(shè)是Householder矩陣,用它對(duì)A的第一列元素的變換示意如下: 依次對(duì)A的各列進(jìn)行類(lèi)似的變換,一共要進(jìn)行次變換,最終可以得到一個(gè)與原矩陣A有相同特征值的上Hessenberg陣。以上約化A為上Hessenberg陣的過(guò)程可以用一系列Householder矩陣來(lái)實(shí)現(xiàn)。其中,對(duì)于每一個(gè)有經(jīng)過(guò)步約化就可得到一個(gè)上Hessenberg陣(A的第列不需要約化)3、 Hessenberg陣的QR算法 設(shè)矩陣,其特征值都是實(shí)數(shù)。若已用Householder變換約化為上Hessenberg陣對(duì)已得到的上Hessenberg陣可用QR變換,經(jīng)過(guò)迭代過(guò)程約化為上三角形矩陣以求出A的特征值。只要
5、A的特征值是實(shí)數(shù),將B約化為上三角形矩陣總是可以做到的。 由于B矩陣結(jié)構(gòu)上的特點(diǎn),對(duì)B矩陣的約化只需將每列次對(duì)角線上的元素約化為0.可用平面旋轉(zhuǎn)陣(Givens變換陣)來(lái)進(jìn)行約化。n階方陣為平面旋轉(zhuǎn)陣。還是一個(gè)非對(duì)稱(chēng)的正交陣,有,也是一個(gè)平面旋轉(zhuǎn)陣。有以下幾種作用: 1、左乘向量只改變x 的第i個(gè)和第j個(gè)分量。現(xiàn)構(gòu)造對(duì)x作變換使的結(jié)果將x的第j個(gè)分量約化為0。令,有調(diào)整角可使。若記,按下式選取于是有。 2、對(duì)非零的n維向量x連續(xù)左乘,可將x的第i+1到第n個(gè)分量都約化為零;即其中 3、用對(duì)矩陣A作變換得到的結(jié)論是左乘A只改變A的第i,j 行;右乘A只改變A的第i,j列; 用對(duì)A作正交相似變換改
6、變了A的i行和j行以及i列和j列。用一系列連續(xù)左乘矩陣A,可以將矩陣A化為上三角陣。 數(shù)據(jù)結(jié)構(gòu)描述主要數(shù)據(jù)成員說(shuō)明double Ann 存放矩陣Adouble Qnn,存放QR分解式的正交矩陣Qdouble Rnn存放QR分解式的上三角陣Rdouble pnnGivens矩陣pdouble InnN階單位陣double Vnn存放Q矩陣的轉(zhuǎn)置double Tnn初等反射陣Tdouble eps精度double max最大值double det存放行列式的值int count存放迭代次數(shù)主要函數(shù)成員說(shuō)明double Det(double Lnn)用高斯列主元方法求行列式int Non_singu
7、larMatrix(double Lnn)判斷是否是非奇異矩陣void Disp(double Hnn)輸出矩陣int IsZero(double a,int j)判斷數(shù)組是否全為0int sgn(double y)符號(hào)函數(shù)void Hessenberg(double Ann)將矩陣化為上Hessenberg矩陣int IsHessenberg(double Enn)判斷是否是上Hessenberg矩陣void QRAlgorithm(double Ann)QR算法求特征值void SeekEigenvalue(double Ann)判斷是否滿足QR算法條件,滿足則進(jìn)行QR方法求特征值算法的描
8、述(流程圖) 源程序C程序?yàn)椋?include<stdio.h>#include<math.h>#define n 3#define eps 1E-5double Det(double Lnn)/用高斯列主元方法求行列式double det=1,t;for(int k=0;k<n-1;k+)double max=Lkk;int Ik=k;for(int j=k+1;j<n;j+)if(max<Ljk)max=Ljk;Ik=j;if(max=0) return 0;if(Ik!=k)for(int j=k;j<n;j+)t=LIkj;L
9、Ikj=Lkj;Lkj=t;det*=-1;for(int i=k+1;i<n;i+)t=Lik/Lkk;Lik=t;for(int j=k+1;j<n;j+)Lij=Lij-t*Lkj;det*=Lkk;if(Ln-1n-1=0) return 0;elseprintf(" 矩陣A的行列式為:%.5fn",det*Ln-1n-1);return det*Ln-1n-1;int Non_singularMatrix(double Lnn)/判斷是否是非奇異矩陣printf(" 判斷矩陣A的行列式是否為0?n");if(Det(L)!=0) r
10、eturn 1;return 0;void Disp(double Hnn)/輸出矩陣for(int i=0;i<n;i+)for(int j=0;j<n;j+)printf("%.6f ",Hij);printf("n");int IsZero(double a,int j)/判斷數(shù)組是否全為0for(int i=0;i<j;i+)if(ai!=0) return 0;return 1;int sgn(double y)/符號(hào)函數(shù)if(y>0) return 1;else if(y=0) return 0;else return
11、 -1;void Hessenberg(double Ann)/將矩陣化為上Hessenberg矩陣printf("原矩陣為:n");Disp(A);/輸出原矩陣double Tnn,Bnn,Cnn,cn-1,vn-1,un-1,Rn-1n-1,In-1n-1,t,w,s;int i,j,k,m;for(k=0;k<n-2;k+)for(i=0;i<n-k-1;i+)for(j=0;j<n-k-1;j+)if(i=j) Iij=1;else Iij=0;/定義單位陣Idouble max=fabs(Ak+1k);/求最大值for(i=0;i<n-k-
12、1;i+)if(max<fabs(Ai+k+1k)max=fabs(Ai+k+1k);for(i=0;i<n-k-1;i+)ci=Ai+k+1k/max;/標(biāo)準(zhǔn)化數(shù)組if(IsZero(c,n-k-1)/判斷數(shù)組是否全為0continue;/數(shù)組為0,則這一步不需要約化for(i=0,t=0.0;i<n-k-1;i+)t+=ci*ci;vk=sgn(Ak+1k)*sqrt(t);/u0=c0+vk;for(j=1;j<n-k-1;j+)uj=cj;/求矩陣uw=vk*(c0+vk);for(i=0;i<n-k-1;i+)for(j=0;j<n-k-1;j+)
13、Rij=Iij-ui*uj/w;for(i=0;i<n;i+)for(j=0;j<n;j+)if(i=j) Tij=1;else Tij=0;/定義矩陣T為單位陣for(i=0;i<n-k-1;i+)for(j=0;j<n-k-1;j+)Ti+k+1j+k+1=Rij;/初等反射陣Tfor(i=0;i<n;i+) /矩陣T左乘矩陣Afor(j=0;j<n;j+)for(m=0,s=0.0;m<n;m+)s+=Tim*Amj;Bij=s;for(i=0;i<n;i+) /矩陣T右乘矩陣Afor(j=0;j<n;j+)for(m=0,s=0.0
14、;m<n;m+)s+=Bim*Tmj;Cij=s;for(i=0;i<n;i+)for(j=0;j<n;j+)Aij=Cij;printf("原矩陣化成上Hessenberg矩陣后為:n");Disp(A);int IsHessenberg(double Enn)/判斷是否是上Hessenberg矩陣for(int i=2;i<n;i+)for(int j=0;j+1<i;j+)if(Eij!=0)return 0;return 1;int count=1;void QRAlgorithm(double Ann)/QR算法求特征值int i,j
15、,k,m;double pnn,Qnn,Rnn,Fnn,Vnn,c,s,t,y,max;for(i=0;i<n;i+)/賦Q為單位陣for(int j=0;j<n;j+)if(i!=j) Qij=0;else Qij=1;for(m=0;m<n-1;m+)/對(duì)矩陣A進(jìn)行QR分解for(i=0;i<n;i+)/賦p為單位陣for(j=0;j<n;j+)if(i!=j) pij=0;else pij=1;c=Amm/sqrt(Amm*Amm+Am+1m*Am+1m);s=Am+1m/sqrt(Amm*Amm+Am+1m*Am+1m);pmm=c;pmm+1=s;pm+
16、1m=-s;pm+1m+1=c;/p為Givens矩陣for(i=0;i<n;i+)/p矩陣左乘W矩陣,p矩陣左乘Q矩陣for(j=0;j<n;j+)t=0;y=0;for(k=0;k<n;k+)t+=pik*Akj;y+=pik*Qkj;Rij=t;Fij=y;for(i=0;i<n;i+)/A,R賦新值for(j=0;j<n;j+)Aij=Rij;Qij=Fij;for(i=0;i<n;i+)/Q轉(zhuǎn)置for(j=0;j<n;j+)Vij=Qji;for(i=0;i<n;i+)for(j=0;j<n;j+)Qij=Vij;for(i=0;
17、i<n;i+)/矩陣A為矩陣R和矩陣Q的乘積for(j=0;j<n;j+)t=0;for(k=0;k<n;k+)t+=Rik*Qkj;Aij=t;count+;max=fabs(A10);/求A矩陣下三角的絕對(duì)值最大值for(i=1;i<n;i+)for(j=0;j<i;j+)if(fabs(Aij)>max)max=fabs(Aij);if(max<eps)/滿足精度條件,輸出Q矩陣,R矩陣以及特征值printf("在精度%.1e下,QR算法迭代次數(shù)為:%d次n輸出矩陣A%d:n",eps,count-1,count);Disp(
18、A);/輸出A矩陣printf("輸出矩陣Q:n");Disp(Q);printf("輸出矩陣R:n");Disp(R);printf("輸出A矩陣的全部特征值:");for(i=0;i<n;i+)if(i%3=0) printf("n");printf("a%d=%.6ft",i+1,Aii);printf("n");return;QRAlgorithm(A);void SeekEigenvalue(double Ann)/判斷是否滿足QR算法條件,滿足則進(jìn)行QR方法求特征值double Znn;for(int i=0;i<n;i+)for(int j=0;j<n;j+)Zij=Aij;printf("判斷矩陣A是否是非奇異矩陣?n");if(Non_singularMatrix(Z)=0)printf("矩陣A不是非奇異矩陣!不符合分解條件!n");return;elseprintf("矩陣A是非奇異矩陣!符合分解條件!n");printf("判斷矩陣A是否是上Hessenberg矩陣?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國(guó)男士全棉內(nèi)褲行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及商業(yè)模式與投融資戰(zhàn)略報(bào)告
- 2025至2030中國(guó)電動(dòng)控制元件行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)電冰箱行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 中醫(yī)教育資源國(guó)際共享與跨文化教學(xué)研究
- 非公企業(yè)黨建培訓(xùn)課件
- 教育行業(yè)中的科技驅(qū)動(dòng)力量-論區(qū)塊鏈在學(xué)術(shù)誠(chéng)信建設(shè)中的重要性
- 智慧安防保護(hù)每一座學(xué)校-智能監(jiān)控系統(tǒng)的實(shí)踐
- 教育技術(shù)評(píng)估模型的構(gòu)建及其在實(shí)踐中的應(yīng)用研究
- 智慧城市公共服務(wù)中的教育系統(tǒng)優(yōu)化研究
- 商業(yè)環(huán)境中員工心理健康的支持體系
- 2025區(qū)域型變電站智能巡視系統(tǒng)技術(shù)規(guī)范
- 財(cái)務(wù)報(bào)表編制與審核合同模板
- 上海閔行區(qū)教育系統(tǒng)招聘實(shí)驗(yàn)員考試真題2024
- 建設(shè)部建設(shè)工程重大質(zhì)量安全事故應(yīng)急預(yù)案
- 2025年中航油招聘筆試參考題庫(kù)附帶答案詳解
- 2024年中國(guó)中高端電子鋁箔行業(yè)市場(chǎng)調(diào)查報(bào)告
- DB54∕T 0275-2023 民用建筑節(jié)能技術(shù)標(biāo)準(zhǔn)
- 2022版體育與健康課程標(biāo)準(zhǔn)
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 藥品不良反應(yīng)報(bào)告事件表
- DB31T 405-2021 集中空調(diào)通風(fēng)系統(tǒng)衛(wèi)生管理規(guī)范
評(píng)論
0/150
提交評(píng)論