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

  • 格式:doc
  • 大小:258.50 KB
  • 文档页数:19

计算方法上机作业1.对以下和式计算:0142118184858616n n S n n n n ∞=⎛⎫=--- ⎪++++⎝⎭∑,要求: (1)若只需保留11个有效数字,该如何进行计算; (2)若要保留30个有效数字,则又将如何进行计算;(1)解题思想和算法实现:根据保留有效位数的要求,可以由公式得出计算精度要求。

只需要很少内存,时间复杂度和d 呈线性,不需要高浮点支持。

先根据while 语句求出符合精度要求的n 值的大小,然后利用for 语句对这n 项进行求和,输出计算结果及n 值大小即可。

(2)matlab 源程序:保留11位有效数字时; clear clcformat 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)); endfor 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)); endvpa(sum,11) n保留30位有效数字时; clear clcformat 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)); endfor 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)); endvpa(sum,30) n(3)实验结果分析图1.1 保留11位有效数字的n值及计算结果图图1.2 保留30位有效数字的n值及计算结果图由计算结果可知,通过合理的误差控制,分别通过7次和22次循环,可以实现题目所要求的精确度。

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

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

已探测分点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 0深度9.15 7.90 7.95 8.86 9.81 10.80 10.93(1)请用合适的曲线拟合所测数据点;(2)预测所需光缆长度的近似值,并作出铺设河底光缆的曲线图;(1)解题思想和算法原理给定区间[a, b]一个分划⊿:a=x0<x1<…<x N=b若函数S(x)满足下列条件:1)S(x)在每个区间[x i, x j]上是不高于3次的多项式。

2)S(x)及其2阶导数在[a, b]上连续。

则称S(x)使关于分划⊿的三次样条函数。

(2)matlab源程序:clc,clearx=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-1l(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));endm=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 gfor j=1:n-1s(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);endsr=0;for j=1:n-1df=diff(s(j),g);warning off all;q=int(sqrt(1+df.^2),g,j-1,j);r=r+q;endL=vpa(r,8);disp('the length of the label is L=');disp(L);for j=1:n-1S(j,:)=sym2poly(s(j));endfor j=1:n-1x1=x(j):0.1:x(j+1);y1=polyval(S(j,:),x1);if j==1y2=y1;elsefor i=1:11k=(j-1)*10+i;y2(k)=y1(i);endendendx2=x(1):0.1:x(n);plot(x,y,'o')gridhold onplot(x2,y2,'r')(3)实验结果分析图2.1 铺设河底电缆长度图2.2 铺设河底光缆的曲线图由三次样条插值得出的函数曲线的长度和即铺设河底电缆的长度为26.498514。

为了提高插值精度,用三次样条插值可以增加插值节点的办法来满足要求,而且在给定节点数的条件下,三次样条插值的精度要优于多项式插值以及线性分段插值,虽然舍弃了降低误差这个优点,但是其曲线的光滑性要好一些。

3.假定某天的气温变化记录如下表所示,试用数据拟合的方法找出这(1)解题思想和数学原理:对于具体实验时,通常不是先给出函数的解析式,再进行实验,而是通过实验的观察和测量给出离散的一些点,再来求出具体的函数解析式。

又因为测量误差的存在,实际真实的解析式曲线并不一定通过测量给出的所有点。

最小二乘法,形成法方程是求解这一问题的很好的方法,本实验运用这一方法实现对给定数据的拟合。

对于给定的测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为∑==mj j j x a x y 0)()(ϕ特别的,取)(x j ϕ为多项式jj x x =)(ϕ (j=0, 1,…,m )则根据最小二乘法原理,可以构造泛函∑∑==-=ni mj i j j i m x a f a a a H 110))((),,,(ϕ令0=∂∂ka H(k=0, 1,…,m )则可以得到法方程⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡),(),(),(),(),(),(),(),(),(),(),(),(1010101111000100m m m m m m m m f f f a a a ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ求该解方程组,则可以得到解ma a a ,,,10 ,因此可得到数据的最小二乘解∑=≈mj j j x a x f 0)()(ϕ(2)matlab 源程序:x=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]; %给出题目数据(时间)y=[15 14 14 14 14 15 16 18 20 20 23 25 28 31 32 31 29 27 25 24 22 20 18 17 16]; %给出题目数据(温度)plot(x,y, 'm*') %画出各个离散数据点 hold onfor n=2:4; %2、3、4代表拟合函数最高项次数 alltemp=25; % alltemp 代表数据点总共有25个A=zeros(n+1,n+1); %定义初始正规方程组的系数矩阵A C=ones(n+1,1); %定义初始正规方程组的系数向量C D=zeros(n+1,1); %定义初始正规方程组的向量D for i=1:n+1for j=1:n+1for k1=1: alltempA(i,j)=A(i,j)+(x(k1).^(i-1+j-1)); end endfor k2=1: alltempD(i,1)=D(i,1)+(x(k2).^(i-1)).*(y(k2)); endend %以上为计算出正规方程组矩阵A 、D 的所有元素的程序 tol=1.0e-12; maxit=1000;C=bicg(A,D,tol,maxit); %使用bicg 迭代算出正规方程组的系数向量C p=0; %误差分量 E=0; %误差总量 if n==2b=0:24;f=C(1)+C(2).*b+C(3).*(b.^2); p=y(b+1)-f; for v=1:25E=E+(p(v)).^2; endplot(b,f, 'r-')end %以上是对2阶拟合函数的图形处理与误差计算 if n==3b=0:24;f=C(1)+C(2).*b+C(3).*(b.^2)+C(4).*(b.^3);p=y(b+1)-f;for v=1:25E=E+(p(v)).^2;endplot(b,f, 'g-')end %以上是对3阶拟合函数的图形处理与误差计算if n==4b=0:24;f=C(1)+C(2).*b+C(3).*(b.^2)+C(4).*(b.^3)+C(5).*(b.^4);p=y(b+1)-f;for v=1:25E=E+(p(v)).^2;endplot(b,f, 'b-')end %以上是对4阶拟合函数的图形处理与误差计算C,Eendn=2; %重新对n赋值,进行指数函数拟合A=zeros(n+1,n+1); %重新对A矩阵赋初值C=zeros(n+1,1); %重新对C向量赋初值D=zeros(n+1,1); %重新对D向量赋初值for i=1:n+1for j=1:n+1for k=1: alltempA(i,j)=A(i,j)+(x(k).^(i-1+j-1));endendfor l=1: alltempD(i,1)=D(i,1)+((x(l).^(i-1)).*(log(y(l))));endend %计算出A矩阵、D向量各元素数值C=bicg(A,D,tol,maxit); %利用bicg迭代求解系数b=0:24;p=0;E=0;f=exp(C(1)+C(2).*b+C(3).*(b.^2));p=y(b+1)-f;for v=1:25E=E+(p(v)).^2;endplot(b,f, 'c-') %对指数拟合函数进行图形处理和误差计算b=-C(3);c=C(2)/(2*b);a=exp(b*(c^2)+C(1)); %算出题设要求的指数拟合函数的各个系数a,b,c,Egrid onlegend('测量数据','二次函数','三次函数','四次函数','指数拟合','Location','NorthWest') hold off %hold on与hold off联合使用,表示将各个曲线画在同一个图中图3.1 二次曲线拟合系数与2范数误差图3.2 三次曲线拟合系数与2范数误差图3.3 四次曲线拟合系数与2范数误差图3.4 指数曲线拟合系数与2范数误差图3.5 数据原始点与拟合曲线对比图(3)实验结果分析:根据国家有关规定,用的是02、08、14、20时四个观测时次的数据做平均,最有代表性。