幂法的c语言程序例子,数值分析之幂法及反幂法C语言程序实例.doc
0;i--)
{
temp=0;
for(t=i+1;t<=min(i+S,N);t++)
temp+=A[i-t+S][t-1]*u[t-1];
u[i-1]=(y[i-1]-temp)/A[S][i-1];
}
}
double Det_matrix()//求矩陣行列式值
{
int i;
double det=1;
Init_matrix_A();
Resolve_LU();
for(i=0;i>>λi%d=%.13e\n",k,k,value_s);
}
}
void main()
{
float cond;
double value_det;
printf("Contact me: [email?protected]\n");
Init_matrix_A();//初始化矩陣A
The_value();//獲取絕對(duì)值最大的特征值λ_501
The_Other_value();//獲取特征值λ_1
printf("λ1=%.13e\n",value_1);
printf("λ501=%.13e\n",value_N);
value_det=Det_matrix();//求矩陣行列式值
Value_min();//反冪法求絕對(duì)值最小的特征值
printf("λs=%.13e\n",value_s);
cond=Get_cond_A();//求矩陣條件數(shù)
Value_translation_min();//偏移條件下反冪法求特征值
printf("cond_A=%.13e\n",cond);
printf("value_det=%.13e\n",value_det);
}
3、程序運(yùn)行結(jié)果:
4、迭代初始向量的選取對(duì)計(jì)算結(jié)果的影響:
本次計(jì)算實(shí)習(xí)求矩陣A的具有某些特征的特征值,主要用到的方法是冪法和反冪法,這兩種方法從原理上看都是迭代法,因此迭代初始向量的選擇對(duì)計(jì)算結(jié)果會(huì)產(chǎn)生一定影響,主要表現(xiàn)在收斂速度上。
通過(guò)實(shí)際調(diào)試發(fā)現(xiàn),對(duì)某些特殊的迭代初始值,確實(shí)對(duì)收斂結(jié)果及收斂速度產(chǎn)生影響,具體如下所列:
以下結(jié)論建立在float數(shù)據(jù)類(lèi)型基礎(chǔ)之上;
1.迭代初始值u[i]=c(i=1,2,…,501)且c的絕對(duì)值值極大(例如1.0e12以上),收斂結(jié)果可以穩(wěn)定但收斂速度減慢,其原因?yàn)閏的數(shù)量級(jí)與矩陣A中元素?cái)?shù)量級(jí)差距過(guò)大,導(dǎo)致迭代次數(shù)以及運(yùn)算量增大;
2.迭代初始值u[i]=c(i=1,2,…,501)且c的絕對(duì)值值極小(例如1.0e-12以下),收斂結(jié)果并不穩(wěn)定,且收斂速度減慢,其原因是計(jì)算機(jī)舍入誤差將會(huì)影響計(jì)算結(jié)果;
3.迭代初始值u[i] (i=1,2,…,501)之間數(shù)量級(jí)偏差很大(例如1.0e12倍以上),收斂結(jié)果亦不穩(wěn)定,且收斂速度減慢,其原因是人為使迭代過(guò)程中的權(quán)重發(fā)生較大區(qū)別,使迭代復(fù)雜化。
結(jié)論,對(duì)于迭代初始值的選取應(yīng)盡量與矩陣A中元素?cái)?shù)量級(jí)保持相近,且應(yīng)保證相近的數(shù)量級(jí)。
PS:Further details please Contact me: [email?protected]
2011-11-15
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的幂法的c语言程序例子,数值分析之幂法及反幂法C语言程序实例.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电脑bios禁用usb怎么打开 如何解除
- 下一篇: c语言用hash方式数组去重,js数组去