资源描述:
《数值分析报告上机报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用第一题:1、已知A与b(1)用Househloser变换,把A化为三对角阵(并打印B)。(2)用超松弛法求解Bx=b(取松弛因子ω=1.4,x(0)=0,迭代9次)。(3)用列主元素消去法求解Bx=b。一、分析如下:(3)用列主元素消去法求解Bx=b。将方阵A和向量b写成C=(Ab)。将C的第1列中第1行的元素与其下面的此列的元素逐一进行比较,找到最大的元素,将第j行的元素与第1行的元素进行交换,然后通过行变换,将第1列中第2到第n个元素都消成0。将变换后的矩阵的第二列中第二行的元素与其下面的此列的元素逐一进行比较,找到最大的元素
2、,将第k行的元素与第2行的元素进行交换,然后通过行变换,将第2列中第3到第n个元素都消成0。以此方法将矩阵的左下部分全都消成0。最终形式如下:文档实用(Ab)~二、程序:#include"math.h"#include"stdio.h"/*标准的基本库函数头文件*/#definege8voidmain(){intsign(doublex);/*该函数为sign函数*/doublet[9][9]=/*数组赋初值*/{{12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.74
3、2382,3.067813,-2.031743},{2.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124},{-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.010103},{1.112336,-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.
4、71828,-0.037585},{-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784317},文档实用{0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417},{1.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458,14.713846,3.123789
5、,-2.213474},{3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782},{-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.00001}};doublep,v,s,w;inti,j,h,m,g;doubleu[9],x1[9],y[9],q[9],b1[9][10],x[9];doubled[9]={2.18
6、74369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,1.1101230,4.719345,-5.6784392};/*--------------------开始迭代----------------------*/for(j=0;j<7;++j)/*Household变换*/{s=0.0;for(i=j+1;i<9;++i)s=s+t[i][j]*t[i][j];s=sqrt(s);文档实用v=(t[j+1][j]>0)?(s*s+s*t[j+1][j]):(s*s-s*
7、t[j+1][j]);for(g=0;g<9;++g){if(g<=j)u[g]=0;elseif(g==j+1)u[g]=t[j+1][j]+s*sign(t[j+1][j]);elseu[g]=t[g][j];}for(m=0;m<9;++m){y[m]=0;for(h=0;h<9;++h)y[m]=y[m]+t[m][h]*u[h];y[m]=y[m]/v;}p=0;for(i=0;i<9;++i)p=p+u[i]*y[i];p=0.5*p/v;for(i=0;i<9;++i)q[i]=y[i]-p*u[i];文档实用for(h
8、=0;h<9;++h)for(m=0;m<9;++m)t[m][h]=t[m][h]-(q[m]*u[h]+u[m]*q[h]);}printf("Household:h");for(i=0;i<9;++i)for(j