计算方法上机作业

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

计算方法上机报告

姓名:

学号:

班级:

上课班级:

说明:

本次上机实验使用的编程语言是Matlab 语言,编译环境为MATLAB 7.11.0,运行平台为Windows 7。

1. 对以下和式计算:

⎭⎫ ⎝⎛+-+-+-+=0681581482184161n n n n S n

,要求:

① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算;

(1) 算法思想

1、根据精度要求估计所加的项数,可以使用后验误差估计,通项为: 1421114

16818485861681

n n n a n n n n n ε⎛⎫=

---<< ⎪

+++++⎝⎭; 2、为了保证计算结果的准确性,写程序时,从后向前计算; 3、使用Matlab 时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)

(2)算法结构

1. ;0=s

⎪⎭

⎝⎛+-+-+-+=

681581482184161n n n n t n

; 2. for 0,1,2,,n i =⋅⋅⋅ if 10m t -≤

end;

3. for ,1,2,,0n i i i =--⋅⋅⋅

;s s t =+

(3)Matlab源程序

clear; %清除工作空间变量

clc; %清除命令窗口命令

m=input('请输入有效数字的位数m='); %输入有效数字的位数

s=0;

for n=0:50

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值加到n=7,

s =3.1415926536;

当保留30位有效数字时,需要将n值加到n=22,

s =3.14159265358979323846264338328。

通过上面的实验结果可以看出,通过从后往前计算,这种算法很好的保证了计算结果要求保留的准确数字位数的要求。

2.某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线

走向铺设一条沟底光缆。在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。已探测到一组等分点位置的深度数据(单位:米)如下表所示:

①请用合适的曲线拟合所测数据点;

②预测所需光缆长度的近似值,作出铺设河底光缆的曲线图;

(1)算法思想

如果使用多项式差值,则由于龙格现象,误差较大,因此,用相对较少的插值数据点作插值,可以避免大的误差,但是如果又希望将所得数据点都用上,且所用数据点越多越好,可以采用分段插值方式,即用分段多项式代替单个多项式作插值。分段多项式是由一些在相互连接的区间上的不同多项式连接而成的一条连续曲线,其中三次样条插值方法是一种具有较好“光滑性”的分段插值方法。

在本题中,假设所铺设的光缆足够柔软,在铺设过程中光缆触地走势光滑,紧贴地面,并且忽略水流对光缆的冲击。海底光缆线的长度预测模型如下所示,光缆从A点铺

h。

至B点,在某点处的深度为i

海底光缆线的长度预测模型

计算光缆长度时,用如下公式:

20

()L f x ds =

20

'20()1()f x f x dx =+⎰ 19

1'20

()1()k k

k f x f x dx

+==+∑⎰

22

()()x y =∆+∆(2)算法结构

1. For n i ,,2,1,0⋅⋅⋅=

1.1 i i M y ⇒

2. For 2,1=k

2.1 For k n n i ,,1, -=

2.1.1 i k i i i i M x x M M ⇒----)/()(1

3. 101h x x ⇒-

4. For 1-,,2,1n i =

4.1 11++⇒-i i i h x x

4.2 b a c c h h h i i i i i i ⇒⇒-⇒+++2;1;)/(11

4.3 i i d M ⇒+16

5. 0000;;c M d M d n n ⇒⇒⇒λ

n n n b a b ⇒⇒⇒2;;20μ

6. 1111,γμ⇒⇒d b

7. 获取M 的矩阵元素个数,存入m 8. For m k ,,3,2 =

8.1 k k k l a ⇒-1/μ 8.2 k k k k c l b μ⇒⋅-1- 8.3 k k k k l d γγ⇒⋅-1- 9. m m m M ⇒μγ/

10. For 1,,2,1 --=m m k

10.1 k k k k k M M c ⇒⋅-+μγ/)(1 11. 获取x 的元素个数存入s 12. k ⇒1

13. For 1,,2,1-=s i

13.1 if i x x ≤~

then k i ⇒;break else k i ⇒+1

14. x

x x x x x h x x k k k k ˆ~;~;

11⇒-⇒-⇒--- y h x h M y x h M y x M x M k k k k k k ~/]ˆ)6

()6(6ˆ6[2

211331

⇒-+-++---

(3)Matlab 源程序

clear; clc;

x=0:1:20; %产生从0到20含21个等分点的数组

相关文档
最新文档