计算方法第一次上机报告

计算方法第一次上机报告

ID:6801476

大小:595.00 KB

页数:15页

时间:2018-01-26

计算方法第一次上机报告_第1页
计算方法第一次上机报告_第2页
计算方法第一次上机报告_第3页
计算方法第一次上机报告_第4页
计算方法第一次上机报告_第5页
资源描述:

《计算方法第一次上机报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《计算方法》实验报告一题目:班级:计1402学号:姓名:应成龙日期:2016.3.17程序名:一、问题和要求:1.土木工程和环境工程师在设计一条排水渠道时必须考虑渠道的各种参数(如宽度,深度,渠道内壁光滑度)及水流速度、流量、水深等物理量之间的关系。假设修一条横断面为矩形的水渠,其宽度为B,假定水流是定常的,也就是说水流速度不随时间而变化。为了不同的工业目的(比如说要把污染物稀释到一定的浓度以下,或者为某工厂输入一定量的水),需要指定流量Q和B,求出水的深度。这样,就需要求解其中Q是水的流量(),U是流速(),H是水的深度()。一个具体的案例是.求出渠道中水的深度H。2.分析

2、用迭代法求解方程组的收敛性,并求出使

3、

4、x(k+1)–x(k)

5、

6、1≤0.0001的近似解及相应的迭代次数。考虑用(1)雅可比迭代法;(2)赛德尔迭代法;(3)超松驰迭代法(w取1.2,1.3,1.9,0.9)。153.对下面的9阶对称矩阵分别做LU分解和LDLT分解二、设计总体方案及分析:2.1问题分析第1题考查的是非线性方程组的迭代法(我用的是牛顿迭代法)第2题考查的是线性代数方程组的迭代法,分别是(1)雅可比迭代法,(2)赛德尔迭代法,(3)超松驰迭代法第3题考查的是线性代数方程组的矩阵三角分解法,分别是LU分解和LDLT分解2.2概要设计2.3详细设计(二合一)第1题

7、用牛顿迭代法,先判断f’(x)是否收敛,从x=0开始,利用公式不断迭代,直至Xk+1-Xk的值小于0.,才停止。并输出所有的迭代值第2-1题用雅可比迭代法时,由于公式中,Xj迭代的次数是k次,所以需要用一个额外的数组来保存之前第k次迭代结果,我用了x[6][N]={0},来存放那个数组,通过控制每个Xk+1次迭代与Xk次迭代差<=0.001控制循环次数,当每个差都同时15<=0.001,循环停止,迭代结束第2-2题用的是赛德尔迭代法,由于已经进行过的迭代,直接覆盖原值,所以赛德尔迭代法程序设计比雅可比迭代要简单,不用在设计数组存放X的k次迭代值,而且只需在在雅可比迭代的基础上

8、稍作修改就可以,而且循环控制方法与雅可比迭代相同第2-3题用的是超松弛迭代法,超松弛法在赛德尔迭代法基础上,加入w,只需稍作修改就好,循环控制与上面几题相同,这3题互相关联,只要写出一个程序,其余2个就一定会写了。在难度上雅可比迭代稍难一些。在程序中只要修改宏定义w就行了。j=k,…,n第3-1题用的是LU分解i=k+1,…,n这题我用了三个嵌套循环,在最内层循环有两个并列循环,先给U赋值,再给L赋值,只有U赋值了,L才能赋值,最外层两个循环实现a[][],l[][],u[][]的遍历,最终实现全部赋值。第3-2题用的是LDLT分解15实际用到的是这3个公式这一题我通过修改我

9、自己写的LU分解,而且只用L和D两个公式行不通,一直出不来结果,借鉴了同学的代码,也是通过3个循环嵌套,实际用的是这3个公式,方法同LU分解一样。2.4调试分析第1题结果我就算出来两个0,和0.,估计是0这个数太接近实际结果了,所以迭代较快。第2-1这题我是这里面用时比较长的一题,一开始是不知道怎么写,然后从公式入手,还得保存X的k次迭代,通过数组的方法来保存,最后终于写出来了。我还把迭代次数及到该迭代完成后X的值在同一行表示出来第2-2,2-3,都是在2-1的基础上稍作修改就很快算出了结果。第3-1也是从公式入手,通过观察公式,发现规律,有了前面的经验之后很快就能写出来。第

10、3-2是由于公式选择的问题,导致一直编译出错,最后在借鉴了同学的代码之后完成。2.5测试结果第1题15第2-1第2-2题15第2-3题第3-115第3-2三、源程序及注释第1题#include#include#include#definen0.03#defineB20#defineS0.000215#defineQ5usingnamespacestd;boolshoulian(doubleH){if(0.8/B*pow(n*Q/pow(S,0.5)/(B+2*H),0.6)<1)returntrue;elsereturnf

11、alse;}doublediedai(doubleH){return(pow(n*Q/pow(S,0.5)*pow(B+2*H,2/3),0.6)/B);}intmain(){doubleH;for(doubleh=0;h<=100;h=h+0.5){if(shoulian(h)){H=h;break;}}while(fabs(H-diedai(H))>=0.){cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。