您好,欢迎访问三七文档
2012-2013(1)专业课程实践论文改进的平方根法王震0818180210R数学08-2班张福贵0818180227R数学08-2班一、算法理论在平方根的基础上,为了避免开方运算,所以用TLDLA计算;其中,1111122.........nnndddDDDddd;得1121212212111111nnnnndllldlAlld按行计算的L元素及D对元素公式对于ni,,2,1步111(1,21)jijijikjkktatlji…,.步2/(1,2,)ijijjltdj…,i-1.步311iiiiikikkdatl计算出LDT的第i行元素(1,2,i-1)ijtj…,后,存放在A的第i行相置,然后再计算L的第i行元素,存放在A的第i行.D的对角元素存放在A的相应位置.例如11213141112122324221221231323343313233132341424344414243444142434aaaaddaaaaldldAaaaalldlldaaaattttllld对称正定矩阵A按TLDL分解和按TLL分解计算量差不多,但TLDL分解不需要开放计算。求解bLy,yxDLT的计算公式分别如步4、步5所述公式。步41111,iiiikhkybybly2,....,in步51/,/nnnniiikikkixydxydlx1,....,2,1in。.二、算法框图三、算法程序#includemath.h#includestdio.hmain(){inti,j,k;intn=4;floatm,a[4][4],t[4][4],l[4][4],b[4],d[4],x[4],y[4];printf(Pleaseinputmatrixa:\n);for(i=0;in;i++)for(j=0;jn;j++){l[j][j]=1.0;scanf(%f,&a[i][j]);}printf(\n);printf(Pleaseinputmatrixb:\n);for(i=0;in;i++)scanf(%f,&b[i]);printf(\n);d[0]=a[0][0];for(i=1;in;i++)for(j=0;ji;j++){m=0.0;for(k=0;kj;k++)m+=t[i][k]*l[j][k];t[i][j]=a[i][j]-m;l[i][j]=t[i][j]/d[j];m=0.0;for(k=0;ki;k++){m+=t[i][k]*l[i][k];d[i]=a[i][i]-m;}l[j][i]=l[i][j];}y[0]=b[0];for(i=1;in;i++){m=0.0;for(k=0;ki;k++){m+=l[i][k]*y[k];y[i]=b[i]-m;}}x[n-1]=y[n-1]/d[n-1];for(i=n-1;i=0;i--){m=0.0;for(k=i+1;kn;k++){m+=l[k][i]*x[k];x[i]=y[i]/d[i]-m;}}for(i=0;in;i++)printf(x(%d)=%f\n,i,x[i]);}四、算法实现例1.6211241011411013A,bXA,1213b求X。解:运行程序(1)输入矩阵A621-12410114-1-10-13(2)输入矩阵B1213得出结果01230.230366;0.502618;0.450262;1.073298;xxxx通过程序解得例2.1234213-1=331-24-1-21A,bXA,(1,3,1,2)b,求X。得出结果01230.6666671.3333331.0000000.000000xxxx
本文标题:改进平方根法
链接地址:https://www.777doc.com/doc-5683439 .html