数值分析实验报告1.docx
- 文档编号:2888169
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:24
- 大小:351.42KB
数值分析实验报告1.docx
《数值分析实验报告1.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告1.docx(24页珍藏版)》请在冰豆网上搜索。
数值分析实验报告1
数值分析实验报告
姓名
学号
班级
软件0801
指导教师
实验名称
数值分析实验报告
开设学期
2010年5月
评定成绩
评定人签字
评定日期
东北大学软件学院
2010年
Ø课题一迭代格式的比较
一、实验目的
1、通过实验进一步了解方程求根的算法;
2、认识选择计算格式的重要性;
3、掌握迭代算法和精度控制;
4、明确迭代收敛性与初值选取的关系。
二、程序设计流程图
三、源程序代码
#include
#include
usingnamespacestd;
doublex1=1.8;
doublex2=-0.3;
doublee=0.001;
inti=0;
voidfun1(doublea){
i++;
doubleb;
b=(3*a+1)/(a*a);
if(b-a>100||b-a<-100){
cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< cout<<"迭代: "< i=0;} elsefun1(b); } voidfun2(doublea){ i++; doubleb; b=((a*a*a)-1)/3.0; if(b-a>100||b-a<-100){ cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< if(3+1/a<0){ cout<<"迭代异 常"< cout<<"迭代: "< return;} b=pow(3+1/a,0.5); if(b-a>100||b-a<-100){ cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< cout<<"迭代: "< i=0;} elsefun5(b); } cout<<"迭代: "< i=0;} elsefun2(b);} voidfun3(doublea){ i++; doubleb; b=pow(3*a+1,1/3.0); if(b-a>100||b-a<-100){ cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< cout<<"迭代: "< i=0;} elsefun3(b);} voidfun4(longdoublea){ i++; longdoubleb; b=1.0/(a*a-3); if(b-a>100||b-a<-100){ cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< cout<<"迭代: "< i=0;} elsefun4(b);} voidfun5(doublea){ i++; doubleb; if(3+1/a<0){ cout<<"迭代异常"< cout<<"迭代: "< i=0; voidfun6(longdoublea){ i++; longdoubleb=0; b=a-((a*a*a-3*a-1)/(a*a-1))/3; if(b-a>100||b-a<-100){ cout<<"发散"< cout<<"迭代: "< i=0;} elseif((b-a cout<<"X(k+1)="< cout<<"迭代: "< i=0;} elsefun6(b);} 四、程序运行结果 五、程序运行结果分析 1.当迭代格式的导数的绝对值小于1时,迭代格式发散,如fun1; 2.有些迭代格式只收敛于一个跟,比如fun2,fun3,fun4; 3.有的迭代格式局部收敛,如fun5,在1.8附近收敛于x1,但在-0.3附近发散; 4.好的迭带格式整体收敛,如fun6; Ø课题二线性方程组的直接算法 一、流程图 Gauss顺序消去法Gauss列主元消去法 二、源代码和运行结果 Gauss顺序消去法: #include #include #include usingnamespacestd; classCGAUSSSOLVEEQU { private: vector vector intm_n; public: voidinputEquSet(doublein[],intn); voidsolveEquSet(); voidoutputAnswer(); voidchange(intm,intm2); }; voidCGAUSSSOLVEEQU: : inputEquSet(doublein[],intn) { vector m_n=n; for(inti=0;i { m_equset.push_back(vtemp); for(intj=0;j<=m_n;j++) { m_equset[i].push_back(in[i*(m_n+1)+j]); } } } for(inti=m_n-2;i>=0;--i) { m_answer[i]=m_equset[i][m_n]; for(intj=m_n-1;j>i;--j) m_answer[i]-=m_answer[j]*m_equset[i][j]; m_answer[i]/=m_equset[i][i]; } } voidCGAUSSSOLVEEQU: : outputAnswer() { for(inti=1;i<=m_n;++i) { cout<<"x("< } } intmain(){ CGAUSSSOLVEEQUmyEqu1; doublein1[10*11]={ 4,2,-3,-1,2,1,0,0,0,0,5, 8,6,-5,-3,6,5,0,1,0,0,12, 4,2,-2,-1,3,2,-1,0,3,1,3, 0,-2,1,5,-1,3,-1,1,9,4,2, -4,2,6,-1,6,7,-3,3,2,3,3, 8,6,-8,5,7,17,2,6,-3,5,46, 0,2,-1,3,-4,2,5,3,0,1,13, 16,10,-11,-9,17,34,2,-1,2,2,38, 4,6,2,-7,13,9,2,0,12,4,19, 0,0,-1,8,-3,-24,-8,6,3,-1,-21 }; m_equset.push_back(vtemp); for(intj=0;j<=m_n;j++) { m_equset[i].push_back(in[i*(m_n+1)+j]); } } } voidCGAUSSSOLVEEQU: : change(intm,intm2){ vector : iteratoriter; iter=m_equset.begin(); vector : iteratoriter2; iter2=m_equset.begin(); //进行消元 for(inti=m+1;i { doubledm; dm=m_equset[i][m]/m_equset[m][m]; for(intj=m;j { m_equset[i][j]-=dm*m_equset[m][j]; } } ++iter; } //初始化m_answer向量 for(inti=0;i //求解答案 m_answer[m_n-1]=m_equset[m_n-1][m_n]/m_equset[m_n-1][m_n-1]; voidCGAUSSSOLVEEQU: : change(intm,intm2){ vector : iteratoriter; iter=m_equset.begin(); vector : iteratoriter2; iter2=m_equset.begin(); //double } voidCGAUSSSOLVEEQU: : solveEquSet() { vector : iteratoriter; iter=m_equset.begin(); for(intm=0;m { //进行消元 for(inti=m+1;i { doubledm; dm=m_equset[i][m]/m_equset[m][m]; for(intj=m;j { m_equset[i][j]-=dm*m_equset[m][j]; } } ++iter; } //初始化m_answer向量 for(inti=0;i //求解答案
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 实验 报告