數值計算 冪法與反冪法

2021-07-23 19:05:58 字數 1501 閱讀 1599

求矩陣模最大的特徵值及其對應特徵向量

注:需要模最大特徵值唯一,矩陣各列線性無關

// 冪法求特徵值

// 需要保證各列線性無關

#include

#include

#include

#include

#include

using

namespace

std;

#define n 5

class mt

mt(int x, int y)

};mt operator * (mt a, mt b)

return c;

}mt a(3, 3);

mt xk(3, 1), yk(3, 1);

double lastm, m;

int n;

double eps;

void init()

int main()

for (int i = 0; i < n; i++)

cout

<< right << setw(6) << m << " ";

for (int i = 0; i < n; i++)

cout

<< endl;

}return

0;}

求矩陣模最小的特徵值及其對應特徵向量

注:與冪法幾乎完全相同

// 反冪法求特徵值

// 需要保證各列線性無關

#include

#include

#include

#include

#include

using

namespace

std;

#define n 5

class mt

mt(int x, int y)

};mt operator * (mt a, mt b)

return c;

}mt a(3, 3);

mt xk(3, 1), yk(3, 1);

double lastm, m;

int n;

double eps;

void init()

mt gauss(mt a, mt y)

y.mt[j][0] -= t * y.mt[i][0];}}

mt rt(3, 1);

for (int i = n - 1; i >= 0; i--)

return rt;

}int main()

for (int i = 0; i < n; i++)

cout

<< right << setw(10) << m << " ";

for (int i = 0; i < n; i++)

cout

<< endl;

}return

0;}

冪法 c語言

編寫了冪法的子函式,單位化時採用二範數,相關引數可以根據需求改動較為靈活 int main a lamada1 a return 0 double a lamada1 double a 3 3 根據冪法計算矩陣a的按模最大的特徵值lamada1 向量初始化 1 0 0 double y 3 單位化矩...

分治法例項 快速冪

快速冪 即快速求冪a b,這裡提供兩種實現方法 位運算非遞迴實現法 即將冪次b寫成二進位制的形式 事實上,計算機中就是以二進位制儲存數字的 若b的某個二進位制位為1,res乘上當前的base,同時base變成base 若為0,則僅僅base變為base 遞迴實現法 這種方法貌似更好理解一些,若b為偶...

蠻力法求解冪集問題

對於給定的正整數n n 1 求1到n構成的集合的冪集 包括全集和空集 思路將二進位制位與冪集對應起來,n的冪集個數為2 n2 n 2n,每乙個二進位制位代表乙個元素。下面以n等於3為例。集合元素 對應的二進位制位 對應的十進位制數 000 0011 0102 0113 1004 1015 1106 ...