当前位置:文档之家› 西安交通大学计算方法B大作业

西安交通大学计算方法B大作业

计算方法上机报告姓名:学号:班级:目录题目一------------------------------------------------------------------------------------------ - 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.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题目内容计算以下和式:0142111681848586n n S n n n n ∞=⎛⎫=--- ⎪++++⎝⎭∑,要求: (1)若保留11个有效数字,给出计算结果,并评价计算的算法; (2)若要保留30个有效数字,则又将如何进行计算。

1.2算法思想在程序编写中需要把握以下几点:①随着n 值的增加,和式的项递减速度很快,因此我们可以认为,在确定为某一精度的前提下,n 达到一定的值,加下一项将不会对最终的加和产生影响,首先我们应找到n 值。

②根据精度要求估计所加的项数,可以使用后验误差估计,通项为:142111416818485861681n n na n n n n n ε⎛⎫=---<< ⎪+++++⎝⎭ ③为减小舍入误差,在计算s 时所采用的方法是逆序相加,其依据是:两个数量级相差较大的数字相加减时,较小数的有效数字会被丧失,从而导致最后的运算结果失真。

为避免“大数吃小数”现象的发生,采用逆序相加。

④对于实现30位有效数字,则调用从工具箱中 digits(位数)或vpa (变量,精度位数)即可实现。

1.3Matlab源程序>>clear;>>clc;>> m=input('输入需要求的有效数字位数m=');s=0for n=0:200 %寻找满足条件的最小ns=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6));if s<=10^(-m) %当项小于10^-m时,停止循环breakendend;fprintf('n值加至n%d\n',n-1); %需要将n值加到的数值for i=n-1:-1:0 %逐项逆序相加求和s=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6));t=t+s;ends=vpa(t,m)1.4计算结果及总结①输入需要求的有效数字位数m=11t = 0n值加至n7s =3.1415926536②t =0n值加至n22s =3.14159265358979311599796346854从上述的算法思想中可以看出,运算中不仅要满足误差要求,还要尽可能地减少计算量,此外还要考虑舍入误差的影响,这时就要对所运算数据的性质进行分析,设置合适的算法,从而提高运算的精度。

而逆序算法能够很好的满足上述要求。

题目二2.1题目内容某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。

在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。

已探测到一组等分点位置的深度数据(单位:米)如下表所示:(1)请用合适的曲线拟合所测数据点;(2)估算所需光缆长度的近似值,并作出铺设河底光缆的曲线图;2.2算法思想利用曲线拟合数据点,即利用数据点拟合差值多项式,我们可以利用Newton 法进行拟合,也可以用复化Simpson求积公式、三次样条插值来拟合,但三次样条插值使用方程组计算增大了计算量,同时还要附加边界条件,分段三次样条插值对图形的控制能力还不够灵活。

因此这里用Newton形式的差值多项式进行拟合。

首先计算出各差商,然后计算出Newton差值多项式的每一项,最后将所有项相加,即可计算出Newton差值多项式,然后利用所得的差值多项式一次算出多个点的函数值。

MATLAB的plot函数进行绘图。

计算长度近似值,只需将每隔两点之间的距离算出,然后一次相加,所得的折线长度,即为长度的近似值。

2.3 Matlab源程序Untitled2clearclcx=0:1:20;y=[-9.01 -8.96 -7.96 -7.97 -8.02 -9.05 -10.13 -11.18 -12.26 -13.28 -13.32 -12.61 -11.29 -10.22 -9.15 -7.90 -7.95 -8.86 -9.81 -10.80 -10.93];%输入给定的数据点xi=0:20;[Nx,Ni]=Newton(x,y,xi); %调用函数,建立Newton差值多项式plot(xi,Ni); %绘制拟合的曲线图long=0; %为长度赋初值for i=1:20 %将每一段折线相加算出长度的近似值long=long+sqrt(1+((y(i)-y(i+1))^2));enddisp ('需要的光缆长度为') %显示需要的光缆长度disp(long)Newton插值法function [Nx,N0]=Newton(X,Y,x0)n=size(X); %插值点个数y=Y;Nx=Y(1);N=1;for i=1:n-1 %计算Newton插值多项式for j=i+1:nyi(j)=(y(j)-y(i))/(X(j)-X(i));endm(i)=yi(i+1);N=N*(x-X(i));Nx=Nx+N*m(i);y=yi;endN0=subs(Nx,'x',x0);2.4计算结果及总结针对上述Matlab程序,铺设海底光缆的曲线图如下图所示:结果如下:Nl=26.4844,即为所求近似计算光缆长度。

相关主题