计算方法B大作业资料.doc

上传人:牧羊曲112 文档编号:4089719 上传时间:2023-04-03 格式:DOC 页数:27 大小:250.50KB
返回 下载 相关 举报
计算方法B大作业资料.doc_第1页
第1页 / 共27页
计算方法B大作业资料.doc_第2页
第2页 / 共27页
计算方法B大作业资料.doc_第3页
第3页 / 共27页
计算方法B大作业资料.doc_第4页
第4页 / 共27页
计算方法B大作业资料.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《计算方法B大作业资料.doc》由会员分享,可在线阅读,更多相关《计算方法B大作业资料.doc(27页珍藏版)》请在三一办公上搜索。

1、计算方法上机报告 姓 名:学 号:班 级:目录题目一- 4 -1.1题目内容- 4 -1.2算法思想- 4 -1.3Matlab源程序- 5 -1.4计算结果及总结- 5 -题目二- 7 -2.1题目内容- 7 -2.2算法思想- 7 -2.3 Matlab源程序- 8 -2.4计算结果及总结- 9 -题目三- 11 -3.1题目内容- 11 -3.2算法思想- 11 -3.3Matlab源程序- 13 -3.4计算结果及总结- 14 -题目四- 15 -4.1题目内容- 15 -4.2算法思想- 15 -4.3Matlab源程序- 15 -4.4计算结果及总结- 16 -题目五- 18 -5

2、.1题目内容- 18 -5.2算法思想- 18 -5.3 Matlab源程序- 18 -5.3.1非压缩带状对角方程组- 18 -5.3.2压缩带状对角方程组- 20 -5.4实验结果及分析- 22 -5.4.1Matlab运行结果- 22 -5.4.2总结分析- 24 -5.5本专业算例- 24 -学习感悟- 27 -题目一1.1题目内容计算以下和式:,要求:(1)若保留11个有效数字,给出计算结果,并评价计算的算法;(2)若要保留30个有效数字,则又将如何进行计算。1.2算法思想在程序编写中需要把握以下几点:随着n值的增加,和式的项递减速度很快,因此我们可以认为,在确定为某一精度的前提下,

3、n达到一定的值,加下一项将不会对最终的加和产生影响,首先我们应找到n值。根据精度要求估计所加的项数,可以使用后验误差估计,通项为:为减小舍入误差,在计算s时所采用的方法是逆序相加,其依据是:两个数量级相差较大的数字相加减时,较小数的有效数字会被丧失,从而导致最后的运算结果失真。为避免“大数吃小数”现象的发生,采用逆序相加。对于实现30位有效数字,则调用从工具箱中 digits(位数)或vpa(变量,精度位数)即可实现。1.3Matlab源程序clear;clc; m=input(输入需要求的有效数字位数m=);s=0for n=0:200 %寻找满足条件的最小n s=(1/16n)*(4/(8

4、*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6); if s0.0001 %误差大于0.0001时继续循环x1=x1-(6*x15-45*x12+20)/(30*x14-90*x1); %Newton迭代法 endx2=0.5; %初值为0.5时 while abs(6*x25-45*x22+20)0.0001x2=x2-(6*x25-45*x22+20)/(30*x24-90*x2);endx3=1.5; %初值为1.5时while abs(6*x35-45*x32+20)0.0001 x3=x3-(6*x35-45*x32+20)/(30*x34-90*x3);end

5、fprintf(x1=%.6f, x2=%.6f, x3=%.6f,x1,x2,x3) %输出三个根绘图程序x=-2:0.1:2y=6*x.5-45*x.2+20plot(x,y)xlabel(X轴);ylabel(Y轴); %坐标轴表示对象标签grid on; %显示网格线axis on; %显示坐标轴4.4计算结果及总结x1=-0.654542 x2=0.681174 x3=1.870799所得曲线所给的方程形式较为简单,导数较为好求所以用牛顿法非常方便,先作图知道根的大致范围后再取初值可以有效的减小迭代次数。题目五5.1题目内容线性方程组求解。(1)编写程序实现大规模方程组的高斯消去法程

6、序,并对所附的方程组进行求解。所附方程组的类型为对角占优的带状方程组。(2)针对本专业中所碰到的实际问题,提炼一个使用方程组进行求解的例子,并对求解过程进行分析、求解。5.2算法思想消去法的中心是“降维”,即求解n元方程组的问题转化为先解n-1元方程组,一旦这个n-1元方程组的解取得,则剩余的一个未知量自然可以求得。这样逐步减少未知量个数的方法,是求解多元方程组的一个重要思想。Gauss消去过程中,适当交换方程的顺序对保证消去过程能够顺利进行及计算解的精确度都是必要的。消去过程中产生的数称为第k步消去的主元。交换方程的原则是使中,绝对值最大的一个换到(k,k)位置而成为第k步消去的主元,带有这

7、种交换的Gauss消去法为列主元Gauss消去法。5.3 Matlab源程序5.3.1非压缩带状对角方程组(1)dat51.dat、dat52.dat主程序:%非压缩格式dat51.dat;dat52.datclear;clc;format short%读出数据fid=fopen(E:2015上机题目实验五dat52.dat,r);D=fread(fid,3,long,0);n=D(3) %矩阵维数offset=20;fseek(fid,offset,bof);A=zeros(n);B=zeros(1,n);C=fread(fid,n*(n+1),float,0)for i=1:n for j

8、=1:n A(i,j)=C(i-1)*n+j); endendA;for i=1:n B(i)=C(n*n+i);endB;x=GAUSSPP(A,B)(2)列主元高斯消去法Matlab函数程序:%列主元高斯消去法function x=GAUSSPP(A,B)n=length(B);%-消去过程-%找出列主元for k=1:n-1 MAX=abs(A(k,k); Rmax=k; for i=k+1:n if abs(A(i,k)MAX MAX=abs(A(i,k); Rmax=i; end end if A(Rmax,k)=0 break; end %交换当前行和主元所在行 for j=1:n

9、 temp=A(k,j); A(k,j)=A(Rmax,j); A(Rmax,j)=temp; end temp=B(k); B(k)=B(Rmax); B(Rmax)=temp; for i=k+1:n A(i,k)=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-A(i,k)*A(k,j); end B(i)=B(i)-A(i,k)*B(k); endendA%-回代过程-x=zeros(1,n);x(n)=B(n)/A(n,n);for k=n-1:-1:1 S=B(k); for j=k+1:n S=S-A(k,j)*x(j); end x(k)=S/

10、A(k,k);end5.3.2压缩带状对角方程组(1)dat53.dat主程序:%压缩格式dat143.datclear;format short%读出数据fid=fopen(E:2015上机题目实验五dat53.dat,r);D=fread(fid,5,long,0);n=D(3);%矩阵维数p=D(5);%上带宽q=D(4);%下带宽A=fread(fid,p+q+1,n,float);B=fread(fid,n,1,float);C = A;D = B;%采用求解压缩型的列主元Gauss消去法x=GAUSSPP1(C,D,n,p,q);(2)针对压缩格式的带状矩阵,尤其是大型矩阵的列主元

11、Gauss消去法子程序GAUSSPP1如下:%针对压缩格式的带状方程组的列主元Gauss消去法function x= GAUSSPP1(A, B, n, p, q)%-消去过程-for k=1:n-1 pmax = k + p; if pmax n pmax = n; end for i=k+1:pmax A(i,k-i+p+1) = A(i,k-i+p+1)/A(k,p+1); qmax = k+q; if qmax n qmax = n; end for j=k+1:qmax A(i,j-i+p+1) = A(i,j-i+p+1) - A(i,k-i+p+1) * A(k,j-k+p+1)

12、; end B(i) = B(i) - B(k) * A(i,k-i+p+1); endend%-回代过程-x(n) = B(n)/A(n,p+1);for k=n-1:-1:1 sum = 0; qmax = k+q; if qmax n qmax = n; end for j=k+1:qmax sum = sum + A(k,j-k+p+1)*x(j); end x(k) = (B(k) - sum)/A(k,p+1);endend5.4实验结果及分析5.4.1Matlab运行结果方程组一:文件标识符为 id =F1E1D1A0文件版本号为 ver =102矩阵A的阶数 n = 15矩阵A

13、的上带宽 q =6矩阵A的下带宽 p =6方程组的的解为: 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000方程组二:文件标识符为 id =F1E1D1A0文件版本号为 ver =102矩阵A的阶数 n =2050矩阵A的上带宽 q =6矩阵A的下带宽 p =5方程组的的解为: 1.9600 1.9600 1.9600 1.9600 1.9600 1.9600 1.9600 1.9600 1.9600 1.9600方程组三:文件标识符为

14、 id =F1E1D1A0文件版本号为 ver =202矩阵A的阶数 n =43512矩阵A的上带宽 q =4矩阵A的下带宽 p =3方程组的的解为: 3.1413 3.1413 3.1413 3.1413 3.1413 3.1413 3.1413 3.1413 3.1413 3.1413 3.14135.4.2总结分析对于任意一个方程组,所有根都相等,因此Matlab求解结果如下表所示:方程阶数根dat141.dat101.0000dat142.dat20501.9600dat143.dat435123.1413由上面结果可以看出,所编写程序可以解决正常系数矩阵方程组,同时能解决带状系数矩阵

15、方程组,并且在解决该类系数矩阵时具有很高的效率,说明了列主元消去法在这一类方程组的有效性。如果要继续提高计算的精度,可以采用全主元消去法。但是此时的工作量要大的多。5.5本专业算例本专业算例:一底边绝热的正方形导热物体,内无热源,其余三边温度如下,求解该正方形内节点1、2、3、4的温度。解:导热物体无内热源,物性为常数的控制方程可以写成考虑到空间步长相同时,离散方程可以写成: 式中aE=1,aW=1,aN=1,aS=1,aP=4从而有:所有的节点方程可整理为:用列主元高斯消去法对上述矩阵进行求解,其程序如下:clear;clc; A=-4 1 1 0 -70;1 -4 0 1 -50;1 0

16、-3 1 -15;0 1 1 -3 -10; m,n=size(A); for i=1:(m-1)max=i;for k=i+1:m if abs(A(k,i)abs(A(max,i) max=k; endend temp=A(i,i:m);A(i,i:m)=A(max,i:m);A(max,i:m)=temp; for j=(i+1):m A(j,:)=A(j,:)-A(i,:)*A(j,i)/A(i,i); end end disp(回代) x(m)=A(m,n)/A(m,m); for k=(m-1):-1:1 x(k)=(A(k,n)-A(k,k+1:m)*x(k+1:m)/A(k,k); end x 运算结果为T1=28.7368,T2=24.2632,T3=20.6842,T4=18.3158。运算结果和正确结果吻合。学习感悟学习是一件忙碌的事情,但主旋律是充实和快乐。在学期末,首先要感谢的是老师这学期对我们的教学。您板书的教学方式,能让我们更快的理解知识,面对面交流,会让我们对知识更深一步的掌握。编程的过程很乏味,刚入学的我也许还没有特别深入的掌握一门编程语言,所以我去借阅书籍,咨询师长,通过这样的过程,自身的编程水平也得到了一定的提升,同时也进一步掌握了我们所学的知识,这个过程让人快乐。值此元旦来临之际,祝老师节日快乐。报告中如有不足之处,还希望老师批评指正。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号