實驗結果
逆冪法用於計算非奇異陣a
aa的按模最小的特徵值和特徵向量。
實際計算中,可以構造以下迭代格式:
l_k} = }\\ u = _k}\\ = \max )_i}\\ = /\\ \end \quad(1 < = i < = n)
⎩⎪⎪⎪⎨⎪
⎪⎪⎧
lyˉ
k=z
k−1
uyk
=yˉ
kmk
=max(yk
)i
zk=
yk/
mk
(1<=i
<=n
)其中l
ll是下三角矩陣,u
uu是上三角矩陣, a−1
}a−1的最大特徵值是1λn
\frac}}
λn1,若
0
n∣n+1∣
,k→∞
0 < || < |}|,k \to \infty 0n
∣n+1
∣,k→
∞ \to \frac}}\\ \to /\max () \end
4&1&4\\ 1&&1\\ 4&1& \end
⎣⎡414
110
141
10⎦
⎤
#ifndef npowerway_h_included
#define npowerway_h_included
#endif
// npowerway_h_included
#include
#include
#include
#define maxsize 100
#define e 1e-6
double a[maxsize]
[maxsize]
;double l[maxsize]
[maxsize]
;double r[maxsize]
[maxsize]
;double t[maxsize]
[maxsize]
;double z[maxsize]
;double z1[maxsize]
;double z2[maxsize]
;double z3[maxsize]
;int n;
//矩陣尺寸大小
double m;
void
initmatrix()
//for
(i=0
;i)for
(j=0
;j(i
l[i]
[j]=0;
if(i>j)
r[i]
[j]=0;
}}void
doolittle()
for(i=k+
1;i)//此處i是從k+1開始迴圈,若從0}}
void
npowerway1()
for(i=n-
1;i>=
0;i--
)for
(i=0
;i) z[i]
=z3[i]
; max=z[0]
;for
(i=0
;i)//尋找z的優勢分量
printf
("第%d次迭代後特徵值為:%lf\n"
,k,1
/max+m)
;printf
("第%d次迭代後歸一化z向量為:\n"
,k);
for(i=
0;i)//z向量歸一化處理
printf
("\n");
int flag=0;
for(i=
0;i(fabs
(z[i]
-z1[i]
)flag++;if
(flag==n)}}
void
input()
void
print()
printf
("上三角矩陣r:\n");
冪法求矩陣最大特徵值的近似解(C 實現)
數字影象處理領域中經常會要求某畫素矩陣的最大特徵值。在處理攝像頭資料的時候,遇到過這個問題。本來用matlab是可以很快解決的。幾行 而已。但是程式要寫入mcu中,matlab就無能為力了。並且本人不熟悉matlab函式向c 的轉化。網上找不到直接可用的c 於是查詢資料自己寫了乙個。冪法的數學推導就...
c語言實踐 數字特徵值
這題的要求是這樣的 這題我沒做出來,我大概思路是這樣的,根據輸入的數字,把這個數字的每一位都分離出來,然後判斷奇數還是偶數,再判斷序是奇數還是偶數,最後兩個奇偶性比較,輸出1還是0,這個輸出的1和0該怎麼儲存,以及最後怎麼轉化為十進位制呢?卡住了。最近又想了一下,做出來了。int main else...
C語言實現逆波蘭表示法(棧)
逆波蘭表示法是一種將運算子寫在運算元後面的描述程式 算式 的方法。舉個例子,我們平常用中綴表示法描述的算式 1 2 5 4 改為逆波蘭表示法之後則是12 54 相較於中綴表示法,逆波蘭表示法的優勢在於不需要括號 主要使用了棧的資料結構 現在我有式子 12 54 1 2先壓入棧,遇到運算子後,把 1 ...