西安交通大学计算方法B上机报告
- 格式:doc
- 大小:747.50 KB
- 文档页数:33
计 算 方 法 上 机 报 告
姓 名: 学 号: 班 级: 能动 上课班级: 计算方法(B)上机报告 1 题目及求解: 一、对以下和式计算:0681581482184161nnnnSn,要求: ① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算; 1 算法思想 (1)根据精度要求估计所加的项数,可以使用后验误差估计,通项为:
142111416818485861681nnnannnnn
;
(2)为了保证计算结果的准确性,写程序时,从后向前计算; (3)使用Matlab时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)
2 算法结构
;0s
681581482184161nnnnt
n;
for 0,1,2,,ni if 10mt
end; for ,1,2,,0niii ;sst
3 Matlab源程序 clear; %清除工作空间变量 clc; %清除命令窗口命令 m=input('请输入有效数字的位数m='); %输入有效数字的位数 s=0; for n=0:50 计算方法(B)上机报告 2 t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); if t<=10^(-m) %判断通项与精度的关系 break; end end; fprintf('需要将n值加到n=%d\n',n-1); %需要将n值加到的数值 for i=n-1:-1:0 t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6)); s=s+t; %求和运算 end s=vpa(s,m) %控制s的精度 4 结果与分析 若保留11位有效数字,则n=7,此时求解得: s =3.1415926536; 若保留30位有效数字时,则n=22, 此时求解得: s =3.14159265358979323846264338328。 通过上面的实验结果可以看出,通过从后往前计算,这种算法很好的保证了计算结果要求保留的准确数字位数的要求。
二、某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。已探测到一组等分点位置的深度数据(单位:米)如下表所示: 计算方法(B)上机报告
3 分点 0 1 2 3 4 5 6 深度 9.01 8.96 7.96 7.97 8.02 9.05 10.13 分点 7 8 9 10 11 12 13 深度 11.18 12.26 13.28 13.32 12.61 11.29 10.22 分点 14 15 16 17 18 19 20 深度 9.15 7.90 7.95 8.86 9.81 10.80 10.93 ① 请用合适的曲线拟合所测数据点; ② 预测所需光缆长度的近似值,作出铺设河底光缆的曲线图; 1 算法思想 如果使用多项式差值,则由于龙格现象,误差较大,因此,用相对较少的插值数据点作插值,可以避免大的误差,但是如果又希望将所得数据点都用上,且所用数据点越多越好,可以采用分段插值方式,即用分段多项式代替单个多项式作插值。分段多项式是由一些在相互连接的区间上的不同多项式连接而成的一条连续曲线,其中三次样条插值方法是一种具有较好“光滑性”的分段插值方法。 在本题中,假设所铺设的光缆足够柔软,在铺设过程中光缆触地走势光滑,紧贴地面,并且忽略水流对光缆的冲击。海底光缆线的长度预测模型如图2-1所示,光缆从A
点铺至B点,在某点处的深度为ih。
图2-1 海底光缆线的长度预测模型 计算光缆长度时,用如下公式: 200()Lfxds
20'2
0()1()fxfxdx
191'20()1()kkkfxfxdx
计算方法(B)上机报告 4 22()()xy
2 算法结构 1) For ni,,2,1,0 1.1 iiMy 2) For 2,1k 2.1 For knni,,1, 2.1.1 ikiiiiMxxMM)/()(1 3)101hxx 4)For 1-,,2,1ni 4.1 11iiihxx 4.2 bacchhhiiiiii2;1;)/(11 4.3 iidM16 5)0000;;cMdMdnn nnnbab2;;20
6)1111,db 7)获取M的矩阵元素个数,存入m 8)For mk,,3,2
8.1 kkkla1/ 8.2 kkkkclb1- 8.3 kkkkld1- 9)mmmM/ 10)For 1,,2,1mmk 10.1 kkkkkMMc/)(1 计算方法(B)上机报告 5 11)获取x的元素个数存入s 12)k1
13) For 1,,2,1si
13.1 if ixx~ then ki;break else ki1 14)xxxxxxhxxkkkkˆ~;~;11
yhxhMyxhMyxMxMkkkkkk~/]ˆ)6()6(6ˆ6[2211331
3 Matlab源程序 clear; %清除工作空间变量
clc; %清除命令窗口命令 x=0:1:20; %产生从0到20含21个等分点的数组 X=0:0.2: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]; %等分点位置的深度数据 n=length(x); %等分点的数目 N=length(X); %% 求三次样条插值函数s(x) M=y; for k=2:3; %计算二阶差商并存放在M中 for i=n:-1:k; M(i)=(M(i)-M(i-1))/(x(i)-x(i-k+1)); end end 计算方法(B)上机报告 6 h(1)=x(2)-x(1); %计算三对角阵系数a,b,c及右端向量d for i=2:n-1; h(i)=x(i+1)-x(i); c(i)=h(i)/(h(i)+h(i-1)); a(i)=1-c(i); b(i)=2; d(i)=6*M(i+1); end M(1)=0; %选择自然边界条件 M(n)=0; b(1)=2; b(n)=2; c(1)=0; a(n)=0; d(1)=0; d(n)=0; u(1)=b(1); %对三对角阵进行LU分解 y1(1)=d(1); for k=2:n; l(k)=a(k)/u(k-1); u(k)=b(k)-l(k)*c(k-1); y1(k)=d(k)-l(k)*y1(k-1); 计算方法(B)上机报告 7 end M(n)=y1(n)/u(n); %追赶法求解样条参数M(i) for k=n-1:-1:1; M(k)=(y1(k)-c(k)*M(k+1))/u(k); end s=zeros(1,N); for m=1:N; k=1; for i=2:n-1 if X(m)<=x(i); k=i-1; break; else k=i; end end H=x(k+1)-x(k); %在各区间用三次样条插值函数计算X点处的值 x1=x(k+1)-X(m); x2=X(m)-x(k); s(m)=(M(k)*(x1^3)/6+M(k+1)*(x2^3)/6+(y(k)-(M(k)*(H^2)/6))*x1+(y(k+1)-(M(k+1)*(H^2)/6))*x2)/H; end 计算方法(B)上机报告 8 %% 计算所需光缆长度 L=0; %计算所需光缆长度 for i=2:N L=L+sqrt((X(i)-X(i-1))^2+(s(i)-s(i-1))^2); end disp('所需光缆长度为 L='); disp(L); figure plot(x,y,'*',X,s,'-') %绘制铺设河底光缆的曲线图 xlabel('位置','fontsize',16); %标注坐标轴含义 ylabel('深度/m','fontsize',16); title('铺设河底光缆的曲线图','fontsize',16); grid; 4 结果与分析 铺设海底光缆的曲线图如图2-2所示:
图2-2 铺设河底光缆曲线图