《C语言课程设计 (3).docx》由会员分享,可在线阅读,更多相关《C语言课程设计 (3).docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言课程设计 (3) 数值分析上机 实验报告 东北大学软件 2022年 姓名闫三木学号20223514 班级软件工程0908 指导教师邵新慧实验名称曲线拟合最小二乘法线性方程组迭代法 开设学期2022 2022第二学期 评定成绩 评定人签字 评定日期 课题三 解线性方程组的迭代法 一 实验内容 1、设线性方程组 ? ? ? ?-1368 2438100 412029137264221234179111016103524312053621775868323376162449113151 20220123122400 1 0563568000 121324? ? ? ?10987654321x
2、x x x x x x x x x =? ? ? ? ? ? ? ? ?-2119381346323125 x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T 2、设对称正定阵系数阵线方程组 ?-19243360021411035204111443343104221812334161206538114140231212202220424?87654321x x x x x x x x = ? ? ? ? ? ?-4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T 3、三对角形线性方程组 ?-4100000000141
3、000000001410000000014100000000141000000001410000000014100000000141000000001410000000014? ?10987654321x x x x x x x x x x = ? ? ? ? ? ?-5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )T 试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。 二 实验要求 1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,由迭代次数体会该迭代法的收敛快慢;
4、3、对方程组2,3使用SOR 方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 三 目的和意义 1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤 +-)()1(k k x x (予给的迭代次 数),对迭代法敛散性的意义; 4、体会初始解 x )0(,松弛因子的选取,对计算结果的影响。 四 流程图设计 1.主要部分流程 2.Jacobi 算法流程 3.GS 算法流程图 4.SO
5、R算法流程 五结构程序设计 #include using namespace std; #define N 40 const int n=10; int jacobi(fl oat *p,float b,fl oat X,fl oat x,int n); int GS(float *p,fl oat b,float X,float x,int n); int SOR(float *p,fl oat b,float X,float x,int n); void print(fl oat *a,int r); void main() fl oat A1010=4,2,-3,-1,2,1,0,0,0
6、,0, 8,6,-5,-3,6,5,0,1,0,0, 4,2,-2,-1,3,2,-1,1,9,4, 0,-2,1,5,-1,3,-1,1,9,4, -4,2,6,-1,6,7,-3,3,2,3, 0,2,-1,3,-4,2,5,3,0,1, 16,10,-11,-9,17,34,2,-1,2,2, 4,6,2,-7,13,9,2,0,12,4, 0,0,-1,8,-3,-24,-8,6,3,-1; fl oat a10=7,5,-13,2,6,-12,14,-4,5,-5; fl oat X110=0,0,0,0,0,0,0,0,0,0; fl oat x110; fl oat B88=4,
7、2,-4,0,2,4,0,0, 2,2,-1,-2,1,3,2,0, -4,-1,14,1,-8,-3,5,6, 0,-2,1,6,-1,-4,-3,3, 2,1,-8,-1,22,4,-10,-3, 4,3,-3,-4,4,11,1,-4, 0,2,5,-3,-10,1,14,2, 0,0,6,3,-3,-4,2,19; fl oat b8=0,-6,6,23,11,-22,-15,45; fl oat X28=0,0,0,0,0,0,0,0; fl oat x28; fl oat C1010=4,-1,0,0,0,0,0,0,0,0, -1,4,-1,0,0,0,0,0,0,0, 0,-1
8、,4,-1,0,0,0,0,0,0, 0,0,-1,4,-1,0,0,0,0,0, 0,0,0,-1,4,-1,0,0,0,0, 0,0,0,0,-1,4,-1,0,0,0, 0,0,0,0,0,-1,4,-1,0,0, 0,0,0,0,0,0,-1,4,-1,0, 0,0,0,0,0,0,0,-1,4,-1, 0,0,0,0,0,0,0,0,-1,4; fl oat c10=7,5,-13,2,6,-12,14,-4,5,-5; fl oat x310; fl oat X310=0,0,0,0,0,0,0,0,0,0; fl oat *p3; p0=&A00; p1=&B00; p2=&C0
9、0; coute; for(k=0;kR) R=r; print(x,n); coute; for(k=0;ki) t+=(*(p+i*n+j)*Xj; xi=(bi-t)/(*(p+i*n+i); for(i=0;iw; coute; for(i=0;in;i+) xi=Xi; for(k=0;kN;k+) R=0; for(i=0;in;i+) t=0; for(j=0;jn;j+) t+=(*(p+i*n+j)*xj; r=w*(bi-t)/(*(p+i*n+i); xi+=r; if(r0) r=-r; if(R0) print(x,n); cout迭代次数:k+1endl; return k; print(x,n); cout迭代次数:kendl; cout方程解发散,无法使用SOR方法解此方程!endl; return 0; void print(fl oat *a,int n) int j; fl oat *t=a; coutx=( ; for(j=0;jn-1;j+) cout*(t+j),; cout*(t+j)endl; 六结果讨论和分析 程序运行截图: