編寫了冪法的子函式,單位化時採用二範數,相關引數可以根據需求改動較為靈活
int main()
,,};
a_lamada1(a);
return 0;
}double a_lamada1(double a[3][3]) //根據冪法計算矩陣a的按模最大的特徵值lamada1
;//向量初始化[1 0 0]
double y[3]; //單位化矩陣
double l; //模長
double temp=0;
double lamada=0;
double lamada1=0;
double e;
for(n=0;n<=100;n++)
l=sqrt(temp);
temp=0;
for(i=0;i<3;i++)
for(i=0;i<3;i++) //計算u(k+1)
} for (i=0;i<3;i++) //計算lamada1
e=fabs(lamada1-lamada)/fabs(lamada1); //精度控制
if(e100)
}
100為最大計算次數,計算次數用n記錄,例子中的矩陣的精確計算結果為45,eps為計算精度,本例中為1e-6,計算結果如下:
C語言 快速冪
快速求a的b次冪。中的pow函式的時間複雜度為o n 快速冪可以解決此問題。求a b如果將b進行處理,讓其有某種規律進行運算。在計算機中,按照二進的方式進行運算,所以將b 1011,ab a 23 a 21 a 2 0 所以將b二進為1的的乘上。includeint main printf d ar...
數值計算 冪法與反冪法
求矩陣模最大的特徵值及其對應特徵向量 注 需要模最大特徵值唯一,矩陣各列線性無關 冪法求特徵值 需要保證各列線性無關 include include include include include using namespace std define n 5 class mt mt int x,in...
C語言快速冪及快速冪的模
未學習快速冪時我們的冪 power 運算一般都是通過for,while迴圈來進行的如 int power int a,int n 這樣其時間複雜度為o n 十分浪費時間。這時如果我們使用快速冪其時間複雜度將降到o logn 我們的運算效率將大大提公升。那麼我們要怎麼樣進行快速冪運算呢?快速冪演算法是...