北航數值分析計算實習大作業

2021-07-25 06:18:46 字數 2120 閱讀 2968

目標:使用帶雙步位移的qr分解法求矩陣的全部特徵值,並對其中的每乙個實特徵值求相應的特徵向量。已知: (i,j=1,2,……,10)

演算法:1) 輸入需要求解的矩陣

首先輸入需要求解的矩陣。即為下述程式中的void creaa()子程式。

2) 對上述生成的矩陣進行擬上三角化

為了減少求特徵值和特徵向量過程中的計算量,在對矩陣進行qr分解前先進行擬上三角化。由於矩陣的qr分解不改變矩陣的結構,所以具有擬上三角形狀的矩陣的qr分解可以大大極少計算量。在下述程式中用void hess()子程式來實現。

3) 對擬上三角化後的矩陣進行qr分解。

為了直觀的了解普通的qr分解過程及結果,下述程式中用void aqr()子程式來對擬上三角化過後的a陣進行qr分解,並輸出q陣r陣rq陣。

4) 對擬上三角化後的矩陣進行帶雙步位移的qr分解。

子程式void qrmeth()實現對擬上三角化後的a陣進行帶雙步位移的qr分解,得出特徵值並輸出,並用子程式void gauss()對其中的實數特徵值進行求解,得出對應的特徵向量。

5) 輸出相關結果。

源程式:

#include

#include

#include

#define l 2500

#define n 11

#define e 0.000000000001

int i,j,s,p,k,ik;

double a[n][n],q[n][n],r[n][n],rq[n][n],i[n][n];

double p[n],w[n],u[n],q[n];

double dr,cr,hr,ar,tr;

int nr,nc;

double s1,t,x,tzr[n],tzc[2][n],sum,m[n][n],v[n];

void creaa()////生成矩陣a

}}void hess()

for(tr=0.0,i=1;itr+=p[i]*u[i]/hr;}

for(i=1;ifor(q[i]=0.0,j=1;jq[i]+=a[i][j]*u[j]/hr;}

for(i=1;iw[i]=q[i]-tr*u[i];}

for(i=1;ifor(j=1;ja[i][j]-=(w[i]*u[j]+u[i]*p[j]);}

}for(i=1;i

printf("擬上三角化後a(n-1):\n");

for(i=1;i

}void aqr()

for(i=1;ifor(j=1;jr[i][j]=r[i][j]-u[i]*f[j];}

for(i=1;ifor(w[i]=0.0,j=1;jw[i]+=q[i][j]*u[j];}

for(i=1;ifor(j=1;jq[i][j]-=w[i]*u[j]/hr;}

}for(i=1;i }

printf("生成的q陣:\n");

for(i=1;i

for(i=1;i

printf("生成的r陣:\n");

for(i=1;i

for(i=1;i

printf("生成的rq陣:\n");

for(i=1;i

for(i=1;i

}void qrmeth()

else goto loop5;

loop4:if(m==1)

else if(m==2)

s1=a[m-1][m-1]+a[m][m];

t=a[m-1][m-1]*a[m][m]-a[m][m-1]*a[m-1][m];

x=s1*s1-4*t;

if(x>=0)

nr++;

tzr[nr]=(s1+sqrt(x))/2;

nr++;

tzr[nr]=(s1-sqrt(x))/2;

else

nc++;

tzc[0][nc]=s1/2;

tzc[1][nc]=sqrt(-x)/2;

nc++;

tzc[0][nc]=s1/2;

tzc[1][nc]=-sqrt(-x)/2;

goto loop9;

}else goto loop3;

loop5:

else goto loop6;

北航碩士數值分析大作業第一題

數值分析a計算實習題目 第一題一 演算法設計方案 1.1 矩陣儲存方案 題目給出的矩陣a為帶狀矩陣,儲存時可以使用如下方式,只儲存矩陣的非零元素,具體如下 對應的角標轉換公式為 1.2 第一問的思路 1 使用一次冪法,求得 2 對進行原點平移,再次使用冪法得,令 3 與必定不同,其中較大的即為所要求...

北航數值分析實習第一題

數值分析計算實習報告 第一題2015年11月 a矩陣是乙個頻寬為5的帶狀矩陣,眾多的0會佔據很多儲存空間,因此可以將其壓縮儲存。儲存方法是將矩陣逆時針旋轉45度,並調整使列號不變,調整後的矩陣如下 1.利用冪法計算出矩陣a按模最大的特徵值 它是和中的乙個 2.利用冪法計算出矩陣 其中i為單位矩陣 按...

數值分析與演算法大作業要求2019

1 基本要求 a 大作業需要提交的內容有 實驗報告 程式源 和可執行程式 具體要求見第3部分 必要的測試集 輸入檔案 和輸出結果 b 將需要提交的所有檔案放到乙個資料夾內,然後打包,命名格式為 學號 姓名 班 級 大作業一 或大作業二,依據具體內容選擇 c 打包前請刪除預編譯的標頭檔案 pre co...