数值分析上机实验课件.docx

上传人:b****3 文档编号:24688737 上传时间:2023-05-31 格式:DOCX 页数:28 大小:257.11KB
下载 相关 举报
数值分析上机实验课件.docx_第1页
第1页 / 共28页
数值分析上机实验课件.docx_第2页
第2页 / 共28页
数值分析上机实验课件.docx_第3页
第3页 / 共28页
数值分析上机实验课件.docx_第4页
第4页 / 共28页
数值分析上机实验课件.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数值分析上机实验课件.docx

《数值分析上机实验课件.docx》由会员分享,可在线阅读,更多相关《数值分析上机实验课件.docx(28页珍藏版)》请在冰豆网上搜索。

数值分析上机实验课件.docx

数值分析上机实验课件

目录

1绪论1

2实验题目

(一)2

2.1题目要求2

2.2Newton插值多项式3

2.3数据分析4

2.3.1Newton插值多项式数据分析4

2.3.2Newton插值多项式数据分析6

2.4问答题6

2.5总结7

3实验题目

(二)8

3.1题目要求8

3.2高斯-塞德尔迭代法8

3.3高斯-塞德尔改进法—松弛法9

3.4松弛法的程序设计与分析9

3.4.1算法实现9

3.4.2运算结果9

3.4.3数据分析11

4实验题目(三)13

4.1题目要求13

4.2Runge-Kutta4阶算法13

4.3Runge-Kutta4阶算法运算结果及数值分析14

总结16

附录A17

绪论

数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。

实际工程中的数学问题非常复杂,所以往往需要借助计算机进行计算。

运用数值分析解决问题的过程:

分析实际问题,构建数学模型,运用数值计算方法,进行程序设计,最后上机计算求出结果。

数值分析这门学科具有面向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进行误差分析等特点。

本学期开设了数值分析课程,该课程讲授了数值分析绪论、非线性方程的求解、线性方程组的直接接法、线性方程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分方程初值问题的数值解法等内容。

其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,人工计算量太大甚至无法操作。

所以学好数值分析的关键是要加强上机操作,即利用计算机程序语言实现数值分析的算法。

本报告就是基于此目的完成的。

本上机实验是通过用计算机来解答数值分析问题的过程,所用的计算工具是比较成熟的数学软件MATLAB。

MATLAB是MatrixLaboratory的缩写,是以矩阵为基础的交互式程序计算语言。

MATLAB是一款具有强大的矩阵运算、数据处理和图形显示功能的软件,其输出结果可视化,编程效率极高,用极少的代码即可实现复杂的运行,因此它使工程技术人员摆脱了繁琐的程序代码,以便快速地验证自己的模型和算法。

其主要特点包括:

强大的数值运算功能;先进的资料视觉化功能高阶但简单的程序环境;开方及可延展的构架;丰富的程式工具箱。

在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,利用计算器或手工计算是相当困难或无法实现的,只能借助计算机编程来实现。

MATLAB将高性能的数值计算和可视化的图形工具集成在一起,提供了大量的内置函数,使其在科学计算领域具有独特的优势。

最后感谢数值分析课程任课教师赵海良老师的悉心指导!

实验题目

(一)

题目要求

已知:

a=-5,b=5,以下是某函数f(x)的一些点(xk,yk),其中xk=a+0.1(k-1),k=1,..,101

请用插值类方法给出函数f(x)的一个解决方案和具体结果。

并通过实验考虑下列问题

(1)Ln(x)的次数n越高,逼近f(x)的程度越好?

(2)高次插值收敛性如何?

(3)如何选择等距插值多项式次数?

(4)若要精度增高,你有什么想法?

比如一定用插值吗?

(5)逼近某个函数不用插值方式,有何变通之举?

(6)函数之间的误差如何度量,逼近的标准又是什么?

(7)如何比较好的使用插值多项式呢?

xk=-5.0000:

0.1:

5.0000;

y(xk)=yk=

Columns1through7

25.000024.010023.040022.090021.160020.250019.3600

Columns8through14

18.490017.640016.810016.000015.210014.440013.6900

Columns15through21

12.960012.250011.560010.889910.23979.60938.9991

Columns22through28

8.40927.84057.29416.77056.26935.78665.3144

Columns29through35

4.84034.35223.84633.34022.88322.55542.4475

Columns36through42

2.61543.02193.49203.71493.32322.0435-0.1277

Columns43through49

-2.8066-5.2470-6.5469-5.9893-3.38620.73655.2312

Columns50through56

8.698510.00008.69855.23120.7365-3.3862-5.9893

Columns57through63

-6.5469-5.2470-2.8066-0.12772.04353.32323.7149

Columns64through70

3.49203.02192.61542.44752.55542.88323.3402

Columns71through77

3.84634.35224.84035.31445.78666.26936.7705

Columns78through84

7.29417.84058.40928.99919.609310.239710.8899

Columns85through91

11.560012.250012.960013.690014.440015.210016.0000

Columns92through98

16.810017.640018.490019.360020.250021.160022.0900

Columns99through101

23.040024.010025.0000

Newton插值多项式

n阶差商的定义:

牛顿插值公式

牛顿插值多项式

牛顿插值余项

其差商表如下所示:

表1差商标

计算规律:

任一个k(≥1)阶均差的数值等于一个分式的值,其分子为所求均差左侧的数减去左上侧的数,分母为所求均差同一行最左边的基点值减去由它往上数第k个基点值。

数据分析

Newton插值多项式数据分析

图1各阶牛顿插值的结果

取x1=[-505],y1=[251025]时,进行牛顿二阶插值:

图2二阶牛顿插值的结果

取x2=[-5:

2.5:

5];,y2=[256.2693106.269325]时,进行牛顿四阶插值:

图3四阶牛顿插值的结果

取x3=[-5:

2:

5],y3=[258.99912.04352.04358.999125]时,进行牛顿五阶插值:

图4五阶牛顿插值的结果

 

取x4=[-5:

1:

5],y4=[25168.99913.84632.0435102.04353.84638.99911625]时,进行牛顿十阶插值:

图5十阶牛顿插值的结果

Newton插值多项式数据分析

从上面的计算结果绘图可以看出以下几点:

(1)当等距选取的插值节点过少时,会产生较大的插值误差,相应增加等距选取的插值节点能减小插值的误差,这从二阶插值倒三、四阶插值插值计算结果越来越接近原函数可以看出。

(2)过大的选取等距插值节点的个数会造成龙格现象,插值的效果反而不好,这可以从十阶插值的结果绘图看出。

总的来说,适当的选取等距插值节点的个数对于提高插值误差和避免龙格现象很重要。

问答题

(1)Ln(x)的次数n越高,逼近f(x)的程度越好?

答:

这说法不正确,并非次数越高逼近程序越好,事实上对于高次的拉格朗日插值,在插值的次数过大时会发生龙格现象,导致在节点两端的波动很大,从而Ln(x)不能一致逼近于f(x)。

(2)高次插值收敛性如何?

答:

对于高次的拉格朗日插值,误差满足下式:

式中,[a,b]为插值区间,

由此看出,当插值节点的个数越多(即n+1越大),误差越小,但不能简单地认为对所有插值问题当插值节点的个数越多,误差就越小,这是因为误差估计式是有条件的,在[a,b]上函数f(x)要有高阶导数,而高阶导数要一致有界,如果Mn+1无限增大,就不能保证Ln(x)收敛于f(x)。

故高次插值的收敛性是有条件的,其取决于其高阶导数是否有界,如果其高阶导数有界则,其高次插值收敛,否则不收敛。

(3)如何选取等距插值多项式次数?

答:

在本题当中,f(x)的高阶导数有界,故高次插值收敛,在进行插值时我在101个点当中选择了部分点进行牛顿插值,通过画图比较插值函数和原函数,得出图像是收敛的,另外对于高阶导数无界的函数,在用多项式插值时不宜选取高次多项式插值(七八次以上),这样就能有效的避免龙格现象。

(4)若要精度增高,你有什么想法?

比如一定用插值么?

答:

采用曲线拟合,通过拟合出的曲线带入插值点的值计算插值点的函数值;插值函数曲线是通过所给全部插值节点的,这将使插值函数保留数据的全部测量误差,并且当插值函数的阶数较高时,曲线摆动很大,而求得的插值函数与实验规律较远,而数值拟合构造的数学函数则能从整体上较好地逼近函数,从而保持比较好的精度。

(5)逼近某个函数不用插值方式,有何变通之举?

答:

曲线拟合。

(6)函数之间的误差如何度量,逼近的标准又是什么?

答:

函数之间的误差可以通过求其余项来进行比较得到度量,而逼近的标准在于n趋近于无穷时,余项趋近于0,这样插值函数就无限接近于f(x)即实现逼近了。

(7)如何比较好的使用插值多项式呢?

答:

根据插值数据的特点选取适当的插值方式,要注意避免龙格现象,总之,具体情况具体分析,使用插值多项式应当从插值对象出发选取适合的插值多项式。

总结

对于本题,采用了牛顿插值法进行编程计算,通过改变插值的阶数对比了选取不同个数的等距插值节点对于插值效果的影响,牛顿插值法在插值节点等距的情况下,低阶时插值效果随阶数变大而提高,但是过大的插值阶次会产生龙格现象,一般情况应该根据具体情况选取插值节点的数目,当中也要考虑到原函数的高阶导数是否有界,这样也能很好的避免的龙格现象。

对于拉格朗日插值插值,其形式与牛顿插值不同,但当在插值节点方面与牛顿插值类似;对于分段线性插值,由于其插值的核心思想是将区间分成很多段,对一个特定的插值点,先找到对应的插值区间段,在进行插值,插值计算时实际上只是去了两个点进行线性化的计算,因为在精度方面并不好,但是这种方法的优点在于可以任意的增加插值节点,而不会对整体有太大的影响;针对分段线性插值精度方面的缺陷,分段抛物线插值能很好的进行弥补,其核心思想是在插值区间段上进行抛物线插值,插值计算时选取了三个节点,而且较之于线性插值,曲线更加平滑,能很好的提高精度。

而三次样条插值在吸收了分段插值的基础上提高了插值曲线的平滑性,被广泛应用。

实验题目

(二)

题目要求

松弛因子对SOR法收敛速度的影响。

用SOR法求解方程组Ax=b,其中

要求程序中不存系数矩阵A,分别对不同的阶数取w=1.1,1.2,...,1.9进行迭代,记录近似解x(k)达到||x(k)-x(k-1)||<10-6时所用的迭代次数k,观察松弛因子对收敛速度的影响,并观察当w0或w2会有什么影响?

高斯-塞德尔迭代法

设有n阶线形方程组

其系数矩阵A非奇异,不妨设

(i=0,1,2……n)。

对n阶线形方程组,可改写为等价方程组

于是,可得高斯-塞德尔迭代法分量表示的计算公式为

高斯-塞德尔改进法—松弛法

松弛法和高斯-塞德尔迭代法基本相同,只是在迭代格式

前面添加了修正系数

,即

为修正因子或松弛因子,

分别称为超松弛修正和低松弛修正。

特别地,当

时就是高斯-塞德尔迭代法。

并且迭代法的程序实现也比较简单,只要令初始的解向量为0,然后根据相应公式进行迭代,当得到的结果误差小于规定的误差时停止迭代。

需要注意的是松弛法与高斯-塞德尔迭代法不同的是松弛法有系数

查其增量的修正形式为:

松弛法的程序设计与分析

算法实现

1)系数矩阵A迭代的收敛的验证条件

2)设置A的阶数、初始向量

的取值;

3)计算

4)如果向量

输出

,输出迭代次数,算法结束;否则转到5;

5)k=k+1,否则返回3。

运算结果

对于本题,采用了五、六和七阶进行计算,取初值

,容忍误差

,得出解和迭代次数,并取w=1.1,1.2,...,1.9取初值

,容忍误差

,如下表所示:

 

(1)矩阵A为五阶时,w代表松弛因子,X1,2…5依次为解的5个向量值,n为迭代次数,|x*-x||2为误差估计:

w

X1

X2

X3

X4

X5

n

||x*-x||2

1.1

0.62937

0.20979

0.349651

0.20979

0.629371

8

4.26244e-007

1.2

0.576923

0.192307

0.320513

0.192308

0.576923

11

3.37399e-007

1.3

0.532545

0.177515

0.295858

0.177515

0.532544

14

5.30078e-007

1.4

0.494506

0.164835

0.274725

0.164835

0.494506

18

6.40707e-007

1.5

0.461538

0.153846

0.25641

0.153846

0.461538

24

4.40722e-007

1.6

0.432693

0.144231

0.240385

0.144231

0.432692

30

7.72716e-007

1.7

0.407239

0.135746

0.226244

0.135747

0.40724

41

8.68492e-007

1.8

0.384616

0.128205

0.213675

0.128205

0.384616

64

9.12428e-007

1.9

0.364373

0.121457

0.202429

0.121457

0.364373

134

9.74884e-007

-0.5

9.52681e+251

2.20745e+252

3.40991e+252

3.95053e+252

3.05125e+252

1000

5.13717e+252

2.2

2.92544e+078

3.64952e+077

2.29644e+078

1.8817e+078

5.72751e+078

1000

1.50571e+079

表2

(2)矩阵A为六阶时,w代表松弛因子,X1,2…6依次为解的6个向量值,n为迭代次数,|x*-x||2为误差估计:

w

X1

X2

X3

X4

X5

X6

n

||x*-x||2

1.1

0.627401

0.21767

0.320102

0.320102

0.21767

0.627401

9

1.38646e-007

1.2

0.575117

0.199531

0.293427

0.293427

0.19953

0.575117

11

6.91953e-007

1.3

0.530877

0.184182

0.270856

0.270856

0.184182

0.530878

14

6.64627e-007

1.4

0.492958

0.171026

0.251509

0.251509

0.171026

0.492958

18

9.00425e-007

1.5

0.460094

0.159624

0.234742

0.234742

0.159624

0.460094

23

9.00425e-007

1.6

0.431338

0.149648

0.220071

0.220071

0.149648

0.431338

30

7.20168e-007

1.7

0.405965

0.140845

0.207125

0.207125

0.140845

0.405965

41

9.35659e-007

1.8

0.383411

0.13302

0.195618

0.195618

0.13302

0.383412

65

8.16491e-007

1.9

0.363232

0.126019

0.185323

0.185322

0.126019

0.363232

137

8.71997e-007

-0.5

8.50157e+254

2.05667e+255

3.44309e+255

4.62246e+255

4.97667e+255

3.70787e+255

1000

7.02681e+255

2.2

-3.65938e+078

-2.31841e+078

-3.60832e+078

-1.26541e+077

-1.04596e+078

2.47624e+078

1000

1.37797e+079

表3

(3)矩阵A为七阶时,w代表松弛因子,X1,2…7依次为解的7个向量值,n为迭代次数,|x*-x||2为误差估计:

w

X1

X2

X3

X4

X5

X6

X7

n

||x*-x||2

1.1

0.627929

0.215558

0.328023

0.290534

0.328022

0.215558

0.627929

10

5.72753e-008

1.2

0.575602

0.197594

0.300687

0.266323

0.300687

0.197594

0.575601

12

4.54823e-007

1.3

0.531324

0.182395

0.277558

0.245836

0.277558

0.182395

0.531324

14

8.54244e-007

1.4

0.493373

0.169367

0.257732

0.228277

0.257732

0.169367

0.493373

18

5.38494e-007

1.5

0.460481

0.158075

0.24055

0.213058

0.24055

0.158076

0.460481

24

8.84051e-007

1.6

0.431701

0.148196

0.225516

0.199742

0.225516

0.148196

0.431701

30

8.34894e-007

1.7

0.406307

0.139479

0.21225

0.187993

0.21225

0.139478

0.406307

42

8.97547e-007

1.8

0.383734

0.13173

0.200458

0.177549

0.200458

0.13173

0.383734

65

8.7015e-007

1.9

0.363538

0.124797

0.189908

0.168204

0.189908

0.124796

0.363538

136

9.38415e-007

-0.5

6.79586e+256

1.68976e+257

2.97093e+257

4.32726e+257

5.37978e+257

5.54077e+257

4.03516e+257

1000

8.37896e+257

2.2

2.32993e+078

-2.33793e+078

4.66731e+078

-1.58468e+078

5.44801e+078

-3.72299e+077

5.17098e+078

1000

2.13542e+079

表4

数据分析

从上面的计算结果可以看出:

时松弛法迭代就不收敛了,此时迭代的方式不能求解。

时,迭代次数随松弛因子w的增大而迅速增加,即收敛速度随收敛因子增大而迅速减慢,而当系数矩阵的阶层变化并不影响SOR法迭代的收敛速度。

运算结果可验证了,对于线性方程组

,设A可逆,则以任意初值向量

出发收敛的Kahan必要条件是

松弛因子不同,收敛速度也不同,寻找最佳松弛因子仍在不断的探索中。

实验题目(三)

题目要求

用Runge-Kutta4阶算法对初值问题

,y(0)=1按不同步长求解,用于观察稳定区间的作用,推荐两种步长h=0.1,0.2。

注:

此方程的精确解为:

Runge-Kutta4阶算法

改进的Euler法可以写成

,若从计算量上看,与Euler法相比,需要多计算一次

的值,从形式上看相当于

代替了Euler

,其精确度有较大的提高。

通过用一些点上的函数值f(x,y)适当的线性组合,来替换Euler法中的

,从而使方法阶数更高。

这就是Runge-Kutta的基本思想。

各种龙格-库塔法的公式都由两部分组成,一个是上一步结果,另一个是步长乘以各点导数的加权和。

一般在计算精度要求较高的情况下,多使用四阶龙格-库塔法。

其计算公式为,其截断误差正比于步长

,其标准型如下

Runge-Kutta4阶算法运算结果及数值分析

运用matlab编程来实现4阶的“经典龙格-库塔法”。

最后结果如下表:

步长h=0.1

步长h=0.2

x

y(龙格-库塔法)

y1(x对应真值)

x

y(龙格-库塔法)

y1(x对应真值)

0

1.0000

1.0000

0

1

1.0000

0.1000

0.3333

0.1353

0.2000

5

0.0183

0.2000

0.1111

0.0183

0.4000

25

0.0003

0.3000

0.0370

0.0025

0.6000

125

0.0000

0.4000

0.0123

0.0003

0.8000

625

0.0000

0.5000

0.0041

0.0000

1.0000

3125

0.0000

0.6000

0.0014

0.0000

0.7000

0.0005

0.0000

0.8000

0.0002

0.0000

0.9000

0.0001

0.0000

1.0000

0.0000

0.0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1