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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法上机作业

1.对以下和式计算:01421181

84858616n n S n n n n ∞

=⎛⎫

=--- ⎪++++⎝⎭∑

,要求: (1)若只需保留11个有效数字,该如何进行计算; (2)若要保留30个有效数字,则又将如何进行计算;

(1)解题思想和算法实现:

根据保留有效位数的要求,可以由公式

得出计算精度要求。只需要很

少内存,时间复杂度和d 呈线性,不需要高浮点支持。先根据while 语句求出符合精度要求的n 值的大小,然后利用for 语句对这n 项进行求和,输出计算结果及n 值大小即可。

(2)matlab 源程序:

保留11位有效数字时; clear clc

format long n=0;

sum=1/(16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); while sum>=5*10^(-11); n=n+1;

sum=1/(16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); end

for i=0:n-1;

sum=sum+1/(16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6)); end

vpa(sum,11) n

保留30位有效数字时; clear clc

format long n=0;

sum=1/(16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); while sum>=5*10^(-30); n=n+1;

sum=1/(16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); end

for i=0:n-1;

sum=sum+1/(16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6)); end

vpa(sum,30) n

(3)实验结果分析

图1.1 保留11位有效数字的n值及计算结果图图1.2 保留30位有效数字的n值及计算结果图

由计算结果可知,通过合理的误差控制,分别通过7次和22次循环,可以实现题目所要求的精确度。

2.某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。已探测

(1)请用合适的曲线拟合所测数据点;

(2)预测所需光缆长度的近似值,并作出铺设河底光缆的曲线图;(1)解题思想和算法原理

给定区间[a, b]一个分划

⊿:a=x0

若函数S(x)满足下列条件:

1)S(x)在每个区间[x i, x j]上是不高于3次的多项式。

2)S(x)及其2阶导数在[a, b]上连续。则称S(x)使关于分划⊿的三次样条函数。(2)matlab源程序:

clc,clear

x=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.9 7.95 8.86 9.81 10.80 10.93];

n=length(x);

l(1)=0;m(n)=0;

h=diff(x);

df=diff(y)./diff(x);

d(1)=0;d(n)=0;

for j=2:n-1

l(j)=h(j)/(h(j-1)+h(j));

m(j)=h(j-1)/(h(j-1)+h(j));

d(j)=6*(df(j)-df(j-1))/(h(j-1)+h(j));

end

m=m(2:end);

u=diag(m,-1);r=diag(l,1);a=diag(2*ones(1,n));

A=u+r+a;

M=inv(A)*d';

syms g

for j=1:n-1

s(j)=M(j)*(x(j+1)-g)^3/(6*h(j))+M(j+1)*((g-x(j))^3/(6*h(j)))+(y(j)-M(j)*h(j)^2/6)*(x(j+1) -g)/h(j)+(y(j+1)-M(j+1)*h(j)^2/6)*(g-x(j))/h(j);

end

s

r=0;

for j=1:n-1

df=diff(s(j),g);

warning off all;

q=int(sqrt(1+df.^2),g,j-1,j);

r=r+q;

end

L=vpa(r,8);

disp('the length of the label is L=');

disp(L);

for j=1:n-1

S(j,:)=sym2poly(s(j));

end

for j=1:n-1

x1=x(j):0.1:x(j+1);

y1=polyval(S(j,:),x1);

if j==1

y2=y1;

else

for i=1:11

k=(j-1)*10+i;

y2(k)=y1(i);

end

end

end

x2=x(1):0.1:x(n);

plot(x,y,'o')

grid

hold on

plot(x2,y2,'r')

(3)实验结果分析

图2.1 铺设河底电缆长度

图2.2 铺设河底光缆的曲线图

由三次样条插值得出的函数曲线的长度和即铺设河底电缆的长度为

26.498514。为了提高插值精度,用三次样条插值可以增加插值节点的办法来满

相关文档
最新文档