当前位置:文档之家› 数值分析课程

数值分析课程

数值分析课程
数值分析课程

数值分析课程

实验指导书

太原科技大学

应用科学学院数学系

目录

前言 (1)

第一部分数值实验报告格式 (1)

第二部分数值实验报告范例 (2)

第三部分数值实验 (6)

数值实验一 (6)

数值实验二 (8)

数值实验三 (10)

数值实验四 (12)

数值实验五 (13)

数值实验六 (16)

数值实验七 (17)

第四部分MATLAB入门 (19)

前言

该实验指导书是《数值分析》课程的配套数值实验教材。《数值分析》是理工科大学本科生与硕士研究生的必修课程,学习本课程的最终目的,是用计算机解决科学和工程实际中的数值计算问题,因此熟练地在计算机上实现算法是必备的基本技能。数值实验是数值分析课程中不可缺少的部分,利用计算机进行数值实验,以消化巩固所学的内容,增加对算法的可靠性、收敛性、稳定性及效率的感性认识,体会和重视算法在计算机上实验时可能出现的问题。学生通过选择算法、编写程序、分析数值结果、写数值实验报告等环节的综合训练,逐步掌握数值实验的方法和技巧,获得各方面的数值计算经验,培养学生运用所学算法解决实际问题和进行理论分析的能力。

该实验指导书由王希云、刘素梅、王欣洁、李晓峰等老师编写。

第一部分数值实验报告格式

一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下:

一、实验名称

实验者可根据报告形式需要适当写出。

二、实验目的及要求

首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。

三、算法描述(实验原理与基础理论)

数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出。

四、实验内容

实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备。

五、程序流程图

画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题。

六、实验结果

实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格形式列出,较为简单的结果可以与实验结果分析合并出现。

七、实验结果分析

(对算法的理解与分析,包括改进与建议)

实验结果分析是数值实验的重要环节,只有对实验结果认真分析,才能对实验目的、实验方法进一步理解,对实验的重要性充分认识,明确数值分析的实用范围及其优缺点。

第二部分数值实验报告范例

为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考。

数值实验报告

一、实验名称

误差传播与算法稳定性

二、实验目的

1.理解数值计算稳定性的概念。 2.了解数值计算方法的必要性。 3.体会数值计算的收敛性与收敛速度。 三、实验内容

计算

dx

x x I n

n ?

+=1

10,1,2,,10n =

四、算法描述

由 dx x x I n

n ?

+=1

10,知 dx

x x I n n ?+=--101110

n dx x dx x x x I I n n n n n 11010101011

11=

=++=+??

---

可得递推关系

1.=n I 1

101

--n I n ,10,,2,1 =n

2.

)1

(1011n n I n I -=

- ,1,,9,10 =n

下面分别以1,2递推关系求解

方案1 =n I 1

101

--n I n ,10,,2,1 =n

当0=n 时,

=

+=?

dx x I 1

0101

㏑=1011㏑1.1 , 递推公式为

????

?

==-=-1

.1ln 10

,,2,1,10101I n I n I n n (1)

方案2

)1

(1011n n I n I -=

- ,1,,9,10 =n

当10<

n n x x x x 101

1011

1≤+≤ 则

dx

x dx x x dx x n

n n 1011011110101

???

≤+≤

)1(101)1(111+≤

≤+n I n n

取递推初值

)110(22021])110(101)110(111[2110+=

+++≈I 递推公式为???????

+==-=-)110(220211,,9,10),1(101101I n I n I n n (2)

取递推公式(1)中的初值

095310.01.1ln 0≈=I ,得

????

?

≈=-=-095310

.010

,,2,1 ,10101I n I n I n n

取递推公式(2)中的初值

008678.010≈I ,得

?????

≈=-=-008678

.01,,9,10),1(101101

I n I n I n n

五、程序流程图

由于实验方案明显、简单,实现步骤及流程图省略。 六、实验结果

计算结果如下:

n )1(~n I

)2(*n I

0 1 2 3 4 5 6 7 8 9 10

0.095310 0.046900 0.031000 0.023333 0.016667 0.033333 -0.166667 1.809524

0.095310 0.046898 0.031018 0.023153 0.018465 0.015353 0.013138 0.011481 0.010188 0.009232 0.008678

七、实验结果分析 由递推公式(1)知当

1.1ln 0=I 时,n I 应当为精确解,递推公式的每一步都没有误

差的取舍,但计算结果033333.0~5=I >=016667.04~

I ,6~I 出现负值。由此看出,当n 较大时,用递推公式(1)中的n I ~

近似n I 是不正确的。

主要原因是初值095310.0~0=I 不是精确值,设有误差)~

(0I e ,由递推公式(1)知

)~

(10)~(1--=n n I e I e 则有

)~()10()~(100)~(10)~(021I e I e I e I e n n n n -=-=-=--

误差

)~(n I e 随n 的增大而迅速增加,增加到)~(0I e 的n )10(-倍。由此可见,递推公式计算的误差不仅取决于初值的误差,公式的精确性,还依赖于误差的传递即递推计算的稳定性。

由递推公式(2)知

008678.010≈I ,n I 为估计值,并不精确,有

12101

)(10≤

I e ,

而由

)(101)(*

*

1n n I e I e -

=- 得

)()101()(*

*

0n n I e I e -

=

误差)(*

0I e 随递推公式逐步缩小。综上所述,在递推计算中,数值计算方法是非常重要的,

误差估计、误差传播及递推计算的稳定性都会直接影响递推结果。

第三部分 数值实验

本部分列出了七个数值实验类型,每个数值实验都应在计算机上实现或演示,由实验者独立编程实现。

要求:

(1) 用MATLAB 语言或其他算法语言编程,使之尽量具有通用性。 (2) 上机前充分准备,复习有关算法,画出程序流程图。 (3) 完成实验后写出实验报告。

(4) 编程语言的种类、运行环境及程序清单以附录形式给出。 以下分别列出七个数值实验的内容。

数值实验一

1. 误差传播与算法稳定性

实验目的:体会稳定性在选择算法中的地位。误差扩张的算法是不稳定的,是我们所不期望的;误差衰竭的算法是稳定的,是我们努力寻求的,这是贯穿本课程的目标。

实验内容:计算

1,2,n ,11

==-?dx e x E x n n

算法一:

e E 1

1=

, 2,3,n ,11=-=-n n nE E

算法二:

0=N E ,

,3,22,-N 1,-N n ,11 =-=

-n E E n

n

实验要求:

(1) 分别用算法一、算法二采用6位有效数字计算n E ,请判断哪种算法能给出更

精确的结果。

(2) 请从理论上证明你实验得出的结果,解释实验的结果。设算法一中1E 的计算误差为e 1,由1E 递推计算到n E 的误差为e n ;算法二中N E 的计算误差为N ε,由N E 向

前递推计算到

n E (N n <)的误差为n ε。如果在上述两种算法中都假定后面的计算不再

引入其他误差,试给出n e 与1e 的关系和

n ε与N ε关系。

(3) 算法一中通常1e 会很小,当n 增大时,n e 的变化趋势如何?算法二中N ε通

常相对比较大,当n 减小时,误差

n ε又是如何传播的?即比较两个算法,当某一步产生

误差后,该误差对后面的影响是衰减还是扩张的。

(4) 通过理论分析与计算实验,针对两个算法的稳定性,给出你的结论。 2. 不同方案收敛速度的比较

实验目的:通过实验体会数值计算中算法选择的重要地位。 实验内容:三种求㏑2的算法比较。

方案一:利用级数`

=--=+-+-=11

)1(.41312112ln k k k , 设

=--=n

k k n k S 11

)1(, 则n S ≈2ln

方案二:对上述

=--=n

k k n k S 11

)1(, 按)

3,4,(n 2)s (2

12

1n =+---=---∧

n n n n n n s s s s S s

生成新数列∧n s ,则∧

≈n s 2ln

方案三:利用级数 ∑∞

==+?+?+?+?143221241231221211k k k

==n

k k

n k S 121,则n S ≈2ln

实验要求:

分别用三种方案求出2ln 的近似值,要求

51021

-?=

ε,观察比较三种计算方案的收

敛速度。在MATLAB 命令窗口输入log(2)求解,并与三种方案计算的结果进行比较。

数值实验二

1. 解线性方程组的列主元素高斯消去法和LU 分解法

实验目的:通过数值实验,从中体会解线性方程组选主元的必要性和LU 分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。

实验内容:解下列两个线性方程组

(1) ?

???? ??=????? ??????? ?

?--11134.981.4987.023.116.427.199.103.601.3321x x x (2) ????

??? ??=??????? ?????????

?

?----15900001.58201

2151526099999.2310

710

4321x x x x 实验要求:

(1) 用你熟悉的算法语言编写程序用列主元高斯消去法和LU 分解求解上述两个方程组,输出Ax=b 中矩阵A 及向量b, A=LU 分解的L 及U ,detA 及解向量x.

(2) 将方程组(1)中系数3.01改为3.00,0.987改为0.990,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x 及detA ,并与(1)中结果比较。

(3) 将方程组(2)中的2.099999改为2.1,5.900001改为5.9,用列主元高斯消去法求解变换后的方程组,输出解向量x 及detA ,并与(1)中的结果比较。

(4)用MATLAB 的内部函数inv 求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b,即可求出上述各个方程组的解,并与列主元高斯消去法和LU 分解法求出的解进行比较,体会选主元的方法具有良好的数值稳定性。用MATLAB 的内部函数det 求出系数行列式的值,并与(1)、(2)、(3)中输出的系数行列式的值进行比较。 2. 研究解线性方程组b Ax =迭代法收敛速度

实验目的:认识迭代法收敛的含义以及迭代法初值和方程组系数矩阵性质对收敛速度的影响。

实验内容:用迭代法求解b Ax =,其中20

20?∈R A 为五对角矩阵

20201132

411132*********

24111134

22

411134

221134

2

A ???-- ? ? ?---

? ? ?----

? ??

??? ?=????

? ????? ? ?-

--- ? ? ?--- ? ? ?-- ?

?

?

实验要求:

(1)选取不同的初始向量X

)

0(及右端向量b ,给定迭代误差要求,用Jacobi 迭代法

和Gauss-Seidel 迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。

(2)用SOR 迭代法求上述方程组的解,松驰系数ω取21<<ω的不同值,在

5

)

1()(10-∞

+≤-k k X X 时停止迭代,记录迭代次数,分析计算结果与松驰系数ω的关

系并得出你的结论。

(3)用MATLAB 的内部函数inv 求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b,即可求出上述各个方程组的解,并与上述方法求出的解进行比较。 3.病态线性方程组的求解

实验目的:通过实验体会病态线性方程组的性态,了解求解病态线性方程组的方法。 实验内容:考虑方程组b Hx =的求解,其中系数矩阵H 为Hilbert 阵,

n

j i j i h h H j i n n j i ,,2,1,,11

,)(,, =-+=

=?

这是一个著名的病态问题。通过首先给定解(例如取各个分量均为1)再计算出右端的办法给出确定的问题。

实验要求:

(1)选择问题的维数为6,分别用列主元Gauss消去法、Jacobi迭代法、Gauss-Seidel迭代法和SOR迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?

(2)逐步增大问题的维数,仍然用上述方法来解它们,计算的结果如何?计算的结果说明了什么?分析产生结果的原因。

(3)讨论病态方程组的解法,并求解维数为6、10、100的上述方程组。

数值实验三

1.矩阵特征值的求法

实验目的:通过实验进一步熟悉掌握求矩阵特征值的各种方法的使用与比较。

实验内容:给定矩阵

??

?

?

?

?

?

?

?

-

-

=

1

1

1

2

1

1

1

1

1

1

2

2

2

1

2

1

A

?

?

?

?

?

?

?

-

-

=

3

1

1

2

6

1

2

B

?

?

?

?

?

?

?

?

?

?

?

?

-

-

-

-

-

-

-

-

-

-

=

4

1

1

4

1

1

4

1

1

4

1

1

4

1

1

4

C

实验要求:

(1)分别用幂法、反幂法、雅可比方法编写程序求矩阵A、B、C的按模最大特征值、按模最小特征值、全部特征值(要求误差<105-)。

(2)用MATLAB的内部函数eig求矩阵A、B、C的全部特征值,并与(1)的结果比较。

2.用QR算法求矩阵的特征值

实验目的:通过实验进一步熟悉掌握求矩阵特征值的QR方法及原理。

实验内容:给定矩阵

?

?

?

?

?

?

?

=

1

1

1

1

3

2

1

2

6

A

,

?

?

?

?

?

?

?

?

?

?

=

1

9

8

2

8

7

6

3

7

6

5

4

4

6

5

4

3

2

H

实验要求:

(1)根据QR算法原理编写程序求矩阵A及矩阵H的全部特征值(要求误差<105-)。

(2)直接用MATLAB的内部函数eig求矩阵A及矩阵H的全部特征值,并与(1)的结果比较。

数值实验四

1.迭代函数对收敛性的影响

实验目的:初步了解非线性方程的简单迭代法及其收敛性,体会迭代函数对收敛性的影响,知道当迭代函数满足什么条件时,迭代法收敛。

实验内容:用简单迭代法求方程

1

2

)

(3=

-

-

=x

x

x

f的根。

方案一:化

1

2

)

(3=

-

-

=x

x

x

f为等价方程

)

(

2

1

3x

x

==

?

+

=

方案二:化

1

2

)

(3=

-

-

=x

x

x

f为等价方程)

(

1

23x

x

==

?

-

=

实验要求:

(1)分别对方案一、方案二取初值

=

x

,迭代10次,观察其计算值,并加以分

析。

(2)用MATLAB内部函数solve直接求出方程的所有根,并与(1)的结果进行比较。

2. 初值的选取对迭代法的影响

实验目的:通过具体的数值实验,体会选取不同的初值对同一迭代法的影响。 实验内容:用牛顿迭代法求方程 013

=--x x 在x =1.5附近的根。 实验要求:

(1)对牛顿迭代公式:

1312

3

1

----=+k k k k k x x x x x ,编写程序进行实验,分别取00

=x ,5.10=x 迭代10次,观察比较其计算值,并分析原因。

(2)用MATLAB 内部函数solve 直接求出方程的所有根,并与(1)的结果进行比较。 3. 收敛性与收敛速度的比较

实验目的:通过用不同迭代法解同一非线性方程,比较各种方法的收敛性与收敛速度。

实验内容:求解非线性方程 0232=-+-x

e x x 的根,准确到106

-。

实验要求:

(1) 用你自己设计的一种线性收敛的迭代法求方程的根,然后用斯蒂芬森加速迭代计算。输出迭代初值、各次迭代值及迭代次数。

(2)用牛顿迭代法求方程的根,输出迭代初值、各次迭代值及迭代次数,并与(1)的结果比较。

(3)用MATLAB 内部函数solve 直接求出方程的所有根,并与(1)、(2)的结果进行比较。

数值实验五

1. 观察直接利用拉格朗日插值多项式的病态性

实验目的:如果直接利用插值多项式的定义,即

i n

i n i i i y x a x a x a a x y =++++= 2210)(

确定系数,就必须解方程

???????

?

?n n n n

n

x x

x x x x 111110

0????

??? ??=??????? ??n n y y y a a a 1010

该方程的系数矩阵为范德蒙(Vandermonde )矩阵,它是严重病态的,因此这种方法不能使用。本实验的目的是观察这种病态性。

实验内容:取不同的n ,并在[0,1]区间上取n 个等分点,计算上述系数矩阵A 的条件数,画出㏑(cond(A))随着n 变化的图形。(可利用MATLAB 的内部函数cond (A )求出矩阵的条件数,当n 取不同的值时,可分别用内部函数plot 画出所要求的图形)。 2. 龙格现象的发生、防止,插值效果的比较

实验目的:观察拉格朗日插值的龙格(Runge )现象,探索避免此现象发生的方法,比较插值效果。

实验内容:对区间[-5,5]作10等分,并给出以下三个函数:

(1)

215x y +=

(2)x y arctan = (3)41x x

y +=

分别对上述函数计算点k x 上的值,作出插值函数的图形并与)(x f y =的图形比较。

实验要求:

(1) 编写程序对上述函数作拉格朗日插值,并在MATLAB 中用内部函数plot 利用插值点绘制函数的图形。

(2) 编写程序对上述函数作分段线性插值,并在MATLAB 中用内部函数plot 利用插值点绘制函数的图形。

(3) 编写程序对上述函数作三次样条插值,并在MATLAB 中用内部函数plot 利用插值点绘制函数的图形。

(4) 在MATLAB 中用内部函数ezplot 可直接绘制出以上函数的图形,并与作出的插值函数的图形进行比较。 3. 牛顿插值法

实验目的:学会牛顿插值法,并应用算法于实际问题。 实验内容:给定函数 x x f =

)(,已知:

414214.1)0.2(=f 449138.1)1.2(=f 483240.1)2.2(=f

516575.1)3.2(=f 549193.1)4.2(=f

实验要求:

(1)用牛顿插值法求4次Newton 插值多项式在2.15处的值,以此作为函数的近似值)15.2(15.2N ≈。在MATLAB 中用内部函数ezplot 绘制出4次Newton 插值多项式的函数图形。

(2) 在MATLAB 中用内部函数ezplot 可直接绘制出以上函数的图形,并与作出的4次Newton 插值多项式的图形进行比较。 4. 拟合方式实验

实验目的:学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。 实验内容:给定数据点

),(i i y x 如下:

i x 0 0.5

0.6

0.7

0.8

0.9

1.0

i y

1

1.75 1.96 2.19 2.44 2.71 3.00

实验要求:

(1) 编写程序用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数

),(i i y x 和拟合函数的图形。

(2) 用MATLAB 的内部函数polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB 的内部函数plot 作出其图形,并与(1)的结果进行比较。 5. 以正交多项式为基底,作最小二乘多项式拟合。

实验目的:探索改善最小二乘多项式的数值不稳定性的可能。

实验内容:

(1)在[-1,1]区间上取n=20个等距节点,计算出以相应点上x e的值作为数据样本,

编写程序以1,

)

(

,

),

(

),

(

2

1

x

P

x

P

x

P

l

为基函数作出9,7,5,3

=

l次的最小二乘多项式,其

中,

)

(x

P

l是勒让德多项式。画出

))

(

ln(A

cond随着n变化的曲线,其中A是确定最小二

乘多项式系数的矩阵。计算出不同阶最小二乘多项式给出的最小偏差

∑=-

=

n

i

i

i

y x

y

l

1

2

)

)

(

(

)(

σ

(2)用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数,并用MATLAB的内部函数plot作出其图形。

数值实验六

1. Newton-cotes型求积公式

实验目的:学会Newton-cotes型求积公式,并应用该算法于实际问题.

实验内容:求定积分?π0cos xdx

e x

实验要求:选择等分份数n,用复化Simpson求积公式求上述定积分的误差不超过8

10-的近似值,用MATLAB中的内部函数int求此定积分的准确值,与利用复化Simpson求积公式计算的近似值进行比较。

2. Romberg算法

实验目的:学会数值求积的Romberg算法,并应用该算法于实际问题.

实验内容:求定积分

?15.0dx x

实验要求:

(1)要求程序不断加密对积分区间的等分,自动地控制Romberg算法中的加速收敛过程,直到定积分近似值的误差不超过6

10-为止,输出求得的定积分近似值。

(2)可用MATLAB 中的内部函数int 求得此定积分的准确值与Romberg 算法计算的近似值进行比较。 3. Gauss 型求积公式

实验目的:学会Gauss 型求积公式,并应用该算法于实际问题.

实验内容:求定积分 ?

-+4

42

1x dx

实验要求:

(1)把Gauss 点的表格存入计算机,以Gauss-Legendre 求积公式作为本实验的例子,要求程序可以根据不同的阶数n ,自动地用n 阶Gauss-Legendre 求积公式计算上述定积分的近似值.体会Gauss 型求积公式是具有尽可能高的代数精度的数值求积公式。

(2)可用MATLAB 中的内部函数int 求得此定积分的准确值与Gauss 型求积公式求得的值进行比较。

数值实验七

1. 常微分方程性态和R-K 法的稳定性

实验目的:学习掌握4阶经典R-K 方法,体会参数和步长对问题的影响。 实验内容:求解常微分方程初值问题

1,01(0)1dy

y x x dx y αα?=-+<

其中5050α-≤≤。 实验要求:

(1)对参数α取不同的值,取步长0.01h =,编写程序用4阶经典R-K 法计算,将计算结果画图比较,并分析相应的初值问题的性态。

(2)取参数α为一个绝对值不大的负值和两个不同的步长,一个步长使参数,h α在经典R-K 法的稳定域内,另一步长在经典R-K 法的稳定域外,分别用R-K 法编写程序计算并比较计算结果,取全域等距的10个点上的计算值。

(3)用MATLAB 中的内部函数dsolve 求此常微分方程初值问题的解并与(1)与(2)中的结果进行比较。 2. 解初值问题各种方法比较

实验目的:掌握了解各种解初值问题的方法,体会步长对问题解的影响。 实验内容:给定初值问题

22,12(0)1x

dy y x e x dx x y ?=+<≤???=?

其精确解为

2()x

y x e e =- 实验要求: 分别按

(1)欧拉法,步长0.025,0.1h h ==; (2)改进的欧拉法,步长0.05,0.1h h ==; (3)四阶标准龙格-库塔法,步长0.1h =; 编写程序求在节点

10.1(1,2,10)k x k k =+= 处的数值解及误差,并比较各方法的

优缺点。用MATLAB 中的内部函数dsolve 求此常微分方程初值问题的解并与上述结果进行比较。

3. 认识刚性微分方程

实验目的:了解认识刚性微分方程。

数值分析课程设计题目与要求

数值分析课程设计题目与要求 (10级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.021=-=+k x x x k k k , 它显然有不动点0* =x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

数值分析课程设计

淮海工学院计算机工程学院课程设计报告书 课程名:《数值分析》 题目:数值分析课程设计 班级: 学号: 姓名:

数值分析课程设计 课程设计要求 1、研究第一导丝盘速度y与电流周波x的关系。 2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。 课程设计目的 1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; 2、学习用计算机解决工程问题,主要包括数据处理与分析。 课程设计环境 visual C++ 6.0 课程设计内容 课程设计题目1: 合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。下面是一组实例数据: 其中x代表电流周波,y代表第一导丝盘的速度 课程设计题目3: 在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。写出你研究的心得体会。 课程设计步骤 1、利用最小二乘法写出题1的公式和算法; 2、利用excel表格画出数据拟合后题1的图像; 3、在Visual C++ 6.0中编写出相应的代码; 4、搜索11月12日南通当地一天的温度变化数据; 5、在Visual C++ 6.0中编写出相应的代码; 6、利用excel表格画出数据拟合后题3的图像 课程设计结果 课程设计题目1 数值拟合

解:根据所给数据,在excel窗口运行: x=[49.2 50.0 49.3 49.0 49.0 49.5 49.8 49.9 50.2 50.2] y=[16.7 17.0 16.8 16.6 16.7 16.8 16.9 17.0 17.0 17.1] 课程设计题目3 数据为: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]; Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14]; 源代码为: 第一题: #include #include"math.h" using namespace std; //double x[100],y[100]; int main(){ int i; double k,b; double sum1=0,sum2=0,sum3=0,sum4=0; double x[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2}; double y[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1}; for(i=0;i<10;i++){ sum1+=x[i]*y[i]; sum2+=x[i];

数值计算方法学习心得

数值计算方法学习心得 ------一个代码的方法是很重要,一个算法的思想也很重要,但 在我看来,更重要的是解决问题的方法,就像爱因斯坦说的内容比 思维本身更重要。 我上去讲的那次其实做了挺充分的准备,程序的运行,pdf文档,算法公式的推导,程序伪代码,不过有一点缺陷的地方,很多细节 没有讲的很清楚吧,下来之后也是更清楚了这个问题。 然后一学期下来,总的来说,看其他同学的分享,我也学习到 许多东西,并非只是代码的方法,更多的是章胜同学的口才,攀忠 的排版,小冯的深入挖掘…都是对我而言比算法更加值得珍惜的东西,又骄傲地回想一下,曾同为一个项目组的我们也更加感到做项 目对自己发展的巨大帮助了。 同时从这些次的实验中我发现以前学到的很多知识都非常有用。 比如说,以前做项目的时候,项目导师一直要求对于要上传的 文件尽量用pdf格式,不管是ppt还是文档,这便算是对产权的一种 保护。 再比如代码分享,最基础的要求便是——其他人拿到你的代码 也能运行出来,其次是代码分享的规范性,像我们可以用轻量级Ubuntu Pastebin,以前做过一小段时间acm,集训队里对于代码的分享都是推荐用这个,像数值计算实验我觉得用这个也差不多了,其 次项目级代码还是推荐github(被微软收购了),它的又是可能更 多在于个人代码平台的搭建,当然像readme文档及必要的一些数据 集放在上面都更方便一些。

然后在实验中,发现debug能力的重要性,对于代码错误点的 正确分析,以及一些与他人交流的“正规”途径,讨论算法可能出 错的地方以及要注意的细节等,比如acm比赛都是以三人为一小组,讨论过后,讲了一遍会发现自己对算法理解更加深刻。 然后学习算法,做项目做算法一般的正常流程是看论文,尽量 看英文文献,一般就是第一手资料,然后根据论文对算法的描述, 就是如同课上的流程一样,对算法进一步理解,然后进行复现,最 后就是尝试自己改进。比如知网查询牛顿法相关论文,会找到大量 可以参考的文献。 最后的最后,想说一下,计算机专业的同学看这个数值分析, 不一定行云流水,但肯定不至于看不懂写不出来,所以我们还是要 提高自己的核心竞争力,就是利用我们的优势,对于这种算法方面 的编程,至少比他们用的更加熟练,至少面对一个问题,我们能思 考出对应问题的最佳算法是哪一个更合适解决问题。 附记: 对课程的一些小建议: 1. debug的能力不容忽视,比如给一个关于代码实现已知错误的代码给同学们,让同学们自己思考一下,然后分享各自的debug方法,一步一步的去修改代码,最后集全班的力量完成代码的debug,这往往更能提升同学们的代码能力。 2. 课堂上的效率其实是有点低的,可能会给学生带来一些负反馈,降低学习热情。 3. 总的来说还是从这门课程中学到许多东西。 数值分析学习心得体会

2010-2011第一学期《数值分析》试卷A卷及答案

2010 ~ 2011 学年第 1学期 《 数值分析 》课程考试试卷(A ) 开课二级学院: 理学院 ,考试时间: 2010 年__ 月_ 日 时 考试形式:闭卷√□、开卷□,允许带 计算器 入场 考生姓名: 学号: 专业: 班级: 一、填空(每个空3分,共30分) 1,设 *3.1415, 3.141x x ==,则* x 有__________位有效数字。 2,* 3587.6x =是经四舍五入得到的近似值,则其相对误差≤*r e ___________. 3,已知=?? ? ??-=1,4032A A 则_______, =∞A _______. 4,设0)(≥''x f , 则由梯形公式计算的近似值T 和定积分? = b a dx x f I )(的值的大小 关系为___________.(大于或者小于) 5, 已知, 3,2,1,03210====x x x x 4,5.2,1.1,03210====f f f f ,则均差 ],,,[3210x x x x f _______________. 6, 已知A=???? ? ? ?2021012a a ,为使A 可分解为T LL A =,其中L 为对角线元素为正的下三角形 矩阵,则a 的取值范围为_______________,如果a =1,则L =______________. 7,若b a ,满足的正规方程组为:??? ? ? ?? =+=+∑∑∑∑∑=====n i n i n i i i i i n i n i i i y x b x a x y b x na 1112111 则x y 与之间的关系式为______________________ 8,若1λ是1 -A 的按模最大的特征值,则A 的按模最小的特征值为___________

研究生《数值分析》教学大纲

研究生《数值分析》教学大纲 课程名称:数值分析 课程编号:S061005 课程学时:64 学时 课程学分: 4 适用专业:工科硕士生 课程性质:学位课 先修课程:高等数学,线性代数,计算方法,Matlab语言及程序设计 一、课程目的与要求 “数值分析”课是理工科各专业硕士研究生的学位课程。主要介绍用计算机解决数学问题的数值计算方法及其理论。内容新颖,起点较高,并加强了数值试验和程序设计环节。通过本课程的学习,使学生熟练掌握各种常用的数值算法的构造原理和过程分析,提高算法设计和理论分析能力,并且能够根据数学模型,提出相应的数值计算方法编制程序在计算机上算出结果。力求使学生掌握应用数值计算方法解决实际问题的常用技巧。 二、教学内容、重点和难点及学时安排: 第一章? 数值计算与误差分析( 4学时) 介绍数值分析的研究对象与特点,算法分析与误差分析的主要内容。 第一节数值问题与数值方法 第二节数值计算的误差分析 第三节数学软件工具----MATLAB 语言简介 重点:误差分析 第二章? 矩阵分析基础( 10学时) 建立线性空间、赋范线性空间、内积空间的概念,为学习以后各章打好基础。矩阵分解是解决数值代数问题的常用方法,掌握矩阵的三角分解、正交分解、奇异值分解,并能够编写算法程序。 第一节? 矩阵代数基础

第二节? 线性空间 第三节? 赋范线性空间 第四节? 内积空间和内积空间中的正交系 第五节矩阵的三角分解 第六节矩阵的正交分解 第七节矩阵的奇异值分解 难点:内积空间中的正交系。矩阵的正交分解。 重点:范数,施密特(Schmidt) 正交化过程,正交多项式,矩阵的三角分解, 矩阵的正交分解。 第三章? 线性代数方程组的数值方法( 12学时) 了解研究求解线性代数方程组的数值方法分类及直接法的应用范围。高斯消元法是解线性代数方程组的最常用的直接法,也是其它类型直接法的基础。在此方法基础上加以改进,可得选主元的高斯消元法、按比例增减的高斯消元法,其数值稳定性更高。掌握用列主元高斯消元法解线性方程组及计算矩阵的行列式及逆,并且能编写算法程序。掌握矩阵的直接三角分解法:列主元LU 分解,Cholesky分解。了解三对角方程组的追赶法的分解形式及数值稳定性的充分条件。掌握矩阵条件数的定义,并能利用条件数判别方程组是否病态以及对方程组的直接方法的误差进行估计。 迭代解法是求解大型稀疏方程组的常用解法。熟练掌握雅可比迭代法、高斯- 塞德尔迭代法及SOR 方法的计算分量形式、矩阵形式,并能在计算机上编出三种方法的程序用于解决实际问题。了解极小化方法:最速下降法、共轭斜量法。迭代法的收敛性分析是研究解线性代数方程组的迭代法时必须考虑的问题。对于上述常用的迭代法,须掌握其收敛的条件。而对一般的迭代法,掌握其收敛性分析的基本方法和主要结果有助于进一步探究新的迭代法。 第一节求解线性代数方程组的基本定理 第二节高斯消元法及其计算机实现 第三节矩阵分解法求解线性代数方程组 第三节? 误差分析和解的精度改进 第四节? 大型稀疏方程组的迭代法 第五节? 极小化方法 难点:列主元高斯消元法,直接矩阵三角分解。迭代法的收敛性,雅可比迭代法,高斯-塞德尔迭代法,SOR 迭代法。

MATLAB与数值分析课程总结

MATLAB与数值分析课程总结 姓名:董建伟 学号:2015020904027 一:MATLAB部分 1.处理矩阵-容易 矩阵的创建 (1)直接创建注意 a中括号里可以用空格或者逗号将矩阵元素分开 b矩阵元素可以是任何MATLAB表达式,如实数复数等 c可以调用赋值过的任何变量,变量名不要重复,否则会被覆盖 (2)用MATLAB函数创建矩阵如:a空阵[] b rand/randn——随机矩阵 c eye——单位矩阵 d zeros ——0矩阵 e ones——1矩阵 f magic——产生n阶幻方矩阵等 向量的生成 (1)用冒号生成向量 (2)使用linspace和logspace分别生成线性等分向量和对 数等分向量 矩阵的标识和引用 (1)向量标识 (2)“0 1”逻辑向量或矩阵标识 (3)全下标,单下标,逻辑矩阵方式引用 字符串数组 (1)字符串按行向量进行储存 (2)所有字符串用单引号括起来 (3)直接进行创建 矩阵运算 (1)注意与数组点乘,除与直接乘除的区别,数组为乘方对应元素的幂

(2)左右除时斜杠底部靠近谁谁是分母 (3)其他运算如,inv矩阵求逆,det行列式的值, eig特征值,diag 对角矩阵 2.绘图-轻松 plot-绘制二维曲线 (1)plot(x)绘制以x为纵坐标的二维曲线 plot(x,y) 绘制以x为横坐标,y为纵坐标的二维曲线 x,y为向量或矩阵 (2)plot(x1,y1,x2,y2,。。。。。。)绘制多条曲线,不同字母代替不同颜色:b蓝色,y黄色,r红色,g绿色 (3)hold on后面的pl ot图像叠加在一起 hold off解除hold on命令,plot将先冲去窗口已有图形(4)在hold后面加上figure,可以绘制多幅图形 (5)subplot在同一窗口画多个子图 三维图形的绘制 (1)plot3(x,y,z,’s’) s是指定线型,色彩,数据点形的字 符串 (2)[X,Y]=meshgrid(x,y)生成平面网格点 (3)mesh(x,y,z,c)生成三维网格点,c为颜色矩阵 (4)三维表面处理mesh命令对网格着色,surf对网格片着色 (5)contour绘制二维等高线 (6)axis([x1,xu,y1,yu])定义x,y的显示范围 3.编程-简洁 (1)变量命名时可以由字母,数字,下划线,但是不得包含空格和标点 (2)最常用的数据类型只有双精度型和字符型,其他数据类型只在特殊条件下使用 (3)为得到高效代码,尽量提高代码的向量化程度,避免使用循环结构

偏微分方程数值解课程设计

课程设计报告 课程:偏微分方程数值解学号: 姓名: 班级: 教师:

《偏微分方程数值解》 课程设计指导书 一.课程设计的目的 1.帮助掌握偏微分方程数值解相关知识。 2.理解偏微分方程数值解差分隐格式解决自由振动方程问题的方法。 3.锻炼编写程序代码的能力。 二.设计名称 差分法求自由振动问题的周期解。 三.设计要求 1.要求写出差分隐格式的理论方法。 2.要求编写matlab 程序,画出函数图形。 3.要求写出实验总结及心得体会。 四.设计题目 用差分法求自由振动问题的周期解: 2222000,,0|0,|sin (0,)(2,)t t u u x t t x u u x t u t u t π==???-=-∞<<∞>???? ??==??? =??? 要求用差分隐格式求解,其中14 θ= 。 五.设计细则 1.区域剖分: 构造上式的差分逼近,取空间步长h 和时间步长τ,用两族平行直线 ?? ?===±±=== ,2,1,0,, ,2,1,0,n n t t j jh x x n j τ 作矩形网格。 2.离散格式: 显格式: 于网点),(n j t x 用Taylor 展式,并整理方程得: ??? ?? ??--++=+-++==-+-++-121121102 10102100 )1(2)(),()()1()]()([2),(n j n j n j n j n j j j j j j j j u u r u u r u x x r x x r u x u τ?????

隐格式: 上述显格式并不是绝对稳定的差分格式,为了得到绝对稳定的差分格式,用第1-n 层、 n 层、1+n 层的中心差商的权平均去逼近xx u ,得到下列差分格式: ? ??? ?? ???+-++--++-=+-+-++==----+-++-+++-++-]22)21(2[2), ()()1()]()([2),(2111112112111112 211102 10102100h u u u h u u u h u u u a u u u x x r x x r u x u n j n j n j n j n j n j n j n j n j n j n j n j j j j j j j j θθθττ?????其中10≤≤θ是参数。当0=θ时就是显格式,而当4 1 =θ时可以证明该格式绝对稳定。 隐格式的矩阵形式是: ??? ???????? ???????????=??????????????????????????????????????????????? ?-+-+-+-+--+-+-+++122111121121 12222 222 2222221212121J J j n J n J n j n n z z z z z u u u u u r r r r r r r r r r r r θθθθ θθθθθ θ θθ 其中: 1 111111122]2()2)(21[(-----+-+-++-++--=n j n j n j n j n j n j n j n j j u u u u u u u u r z θθ 3.格式稳定性: 1)显格式: 显格式稳定的充分必要条件是:网格比1

数值分析心得体会

数值分析心得体会 篇一:学习数值分析的经验 数值分析实验的经验、感受、收获、建议班级:计算131 学号:XX014302 姓名:曾欢欢 数值分析实验主要就是学习MATLAB的使用以及对数值分析类容的应用,可以使学生更加理解和记忆数值分析学得类容,也巩固了MATLAB的学习,有利于以后这个软件我们的使用。在做实验中,我们需要具备较好的编程能力、明白MATLAB软件的使用以及掌握数值分析的思想,才能让我们独立自主的完成该作业,如果是上述能力有限的同学,需要借助MATLAB的书以及网络来完成实验。数值分析实验对于我来说还是有一定难度,所以我课下先复习了MATLAB的使用方法以及编写程序的基本类容,借助互联网和同学老师资源完成了数值分析得实验的内容。在实验书写中,我复习了各种知识,所以我认为这门课程是有必要且是有用处的,特别是需要处理大量实验数据的人员,很有必要深入了解学习它,这样在以后的工作学习里面就减少了很多计算问题也提高了实验结果的精确度。 学习数值分析的经验、感受、收获、建议数值分析的内容包括插值与逼近,数值微分与数值积分,非线性方程与线性方程组的数值解法,矩阵的特征值与特征向量计算,常微分方程数值解等。

首先我们必须明白数值分析的用途。通常所学的其他数学类学科都是由公式定理开始,从研究他们的定义,性质再到证明与应用。但实际上,尤其是工程,物理,化学等其它具体的学科。往往我们拿到 手的只是通过实验得到的数据。如果是验证性试验,需要代回到公式 进行分析,验证。但往往更多面对的是研究性或试探性试验,无具体 公式定理可代。那就必须通过插值,拟合等计算方法进行数据处理以得到一个相对可用的一般公式。还有许多计算公式理论上非常复杂,在工程中不实用,所以必须根据实际情况把它转化成多项式近似表 示。学习数值分析,不应盲目记公式,因为公事通常很长且很乏味。其次,应从公式所面临的问题以及用途出发。比如插值方法,就 是就是把实验所得的数据看成是公式的解,由这些解反推出一个近似公式,可以具有局部一般性。再比如说拟合,在插值的基础上考虑实 验误差,通过拟合能将误差尽可能缩小,之后目的也是得到一个具有 一定条件下的一般性的公式。。建议学习本门课程要结合知识与实际,比如在物理实验里面很多

数值分析学习心得体会.doc

数值分析学习感想 一个学期的数值分析,在老师的带领下,让我对这门课程有了深刻的理解和感悟。这门 课程是一个十分重视算法和原理的学科,同时它能够将人的思维引入数学思考的模式,在处 理问题的时候,可以合理适当的提出方案和假设。他的内容贴近实际,像数值分析,数值微 分,求解线性方程组的解等,使数学理论更加有实际意义。 数值分析在给我们的知识上,有很大一部分都对我有很大的帮助,让我的生活和学习有 了更加方便以及科学的方法。像第一章就讲的误差,在现实生活中,也许没有太过于注意误 差,所以对误差的看法有些轻视,但在学习了这一章之后,在老师的讲解下,了解到这些误 差看似小,实则影响很大,更如后面所讲的余项,那些差别总是让人很容易就出错,也许在 别的地方没有什么,但是在数学领域,一个小的误差,就很容易有不好的后果,而学习了数 值分析的内容,很容易就可以将误差锁定在一个很小的范围内,在这一范围内再逼近,得出 的近似值要准确的多,而在最开始的计算中,误差越小,对后面的影响越小,这无疑是好的。 数值分析不只在知识上传授了我很多,在思想上也对我有很大的影响,他给了我很多数 学思想,很多思考的角度,在看待问题的方面上,多方位的去思考,并从别的例子上举一反三。像其中所讲的插值法,在先学习了拉格朗日插值法后,对其理解透彻,了解了其中 的原理和思想,再学习之后的牛顿插值以及三次样条插值等等,都很容易的融会贯通,很容 易的就理解了其中所想,他们的中心思想并没有多大的变化,但是使用的方式却是不同的, 这不仅可以学习到其中心内容,还可以去学习他们的思考方式,每个不同的思考方式带来的 都是不同的算法。而在看待问题上,不同的思考方式总是可以快速的全方位的去看透彻问题, 从而知道如何去解决。 在不断的学习中,知识在不断的获取,能力在不断的提升,同时在老师的不懈讲解下, 我逐渐的发现数值分析所涵盖的知识面特别的广泛,而我所需要学习的地方也更加的多,自 己的不足也在不断的体现,我知道这只是我刚刚接触到了数学的那一角,在以后我还会接触 到更多,而这求知的欲望也在不停的驱赶我,学习的越多,对今后的生活才会有更大的帮助。 计算132 2013014923 张霖篇二:数值分析学习报告 数值分析学习心得报告 班级:11级软工一班 姓名: * * * 学号: 20117610*** 指导老师:* * * 学习数值分析的心得体会 无意中的一次选择,让我接触了数值分析。 作为这学期的选修课,我从内心深处来讲,数值分析真的有点难。感觉它是在高等数学 和线性代数的基础上,又加深了探讨。虽然这节课很难,我学的不是很好,但我依然对它比 较感兴趣。下面就具体说说我的学习体会,让那些感兴趣的同学有个参考。 学习数值分析,我们首先得知道一个软件——matlab。matrix laboratory,即矩阵实验 室,是math work公司推出的一套高效率的数值计算和可视化软件。它是当今科学界最具影 响力、也是最具活力的软件,它起源于矩阵运算,并高速发展成计算机语言。它的优点是强 大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面、便捷的与其他程序和语 言接口。 根据上网搜集到的资料,你就会发现matlab有许多优点: 首先,编程简单使用方便。到目前为止,我已经学过c语言,机器语言,java语言,这

数值分析课程设计

课程设计报告 课程名称 课题名称 专业 班级 学号 姓名 指导教师 年月日

湖南工程学院课程设计任务书 课程名称数值分析 课题 专业班级 学生姓名 学号 指导老师 审批 任务书下达日期2009 年 5 月 4 日任务完成日期2009 年 5 月18日

一、设计内容与设计要求 1.设计内容: 对课程《计算方法》中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。 2.设计要求: ●课程设计报告正文内容 a.问题的描述及算法设计; b.算法的流程图(要求画出模块图); c.算法的理论依据及其推导; d.相关的数值结果(通过程序调试),; e.数值计算结果的分析; f.附件(所有程序的原代码,要求对程序写出必要的注释)。 ●书写格式 a.要求用A4纸打印成册 b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。 d.封面格式如下页。 ●考核方式 指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: a.平时出勤(占10%) b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) d.设计报告(占30%) 注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 e.独立完成情况(占10%)。 ●课程验收要求 a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

数值分析课程课程设计汇总

课 程 设 计 我再也回不到大二了, 大学是那么短暂 设计题目 数值分析 学生姓名 李飞吾 学 号 x x x x x x x x 专业班级 信息计x x x x x 班 指导教师 设 计 题 目 共15题如下 成绩

数值分析课程设计 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?(15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律可以设起初的椰子数为0p ,第一至五次猴子在夜里藏椰子后,椰子的数目分别为01234,,,,p p p p p 再设最后每个人分得x 个椰子,由题: 14 (1)5 k k p p +=- (k=0,1,2,3,4)51(1)5 x p =- 所以551p x =+,11k k p p +=+利用逆向递推方法求解 15 1,4 k k p p +=+ (k=0,1,2,3,4) MATLAB 代码: n=input('n= '); n= 15621 for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p), break end end disp([x,p]) 1.2 设,1 5n n x I dx x =+? (1)从0I 尽可能精确的近似值出发,利用递推公式: 11 5(1,2,20)n n I I n n -=-+= 计算机从1I 到20I 的近似值; (2)从30I 较粗糙的估计值出发,用递推公式:

《数值分析》课程设计报告

《数值分析》课程设计实验报告 龙格—库塔法分析Lorenz 方程 200820302033 胡涛 一、问题叙述 考虑著名的Lorenz 方程 () dx s y x dt dy rx y xz dt dz xy bz dt ?=-???=--???=-?? 其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。 二、问题分析 Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。 三、实验程序及注释 (1)算法程序 function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组, x0是初始自变量,y0是初始函数 值,h 是步长,n 为步数 if nargin<5 n=100; %如果输入参数个数小于5,则步数 n=100 end r=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将 值赋给r(1) s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并 将值赋给s(1) r=r+s; T=zeros(r,n+1); T(:,1)=[y0;x0]; for t=2:n+1 %以下是具体的求解过程 k1=feval(f,T(1:r-1,t-1)); k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]); k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]); k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]); x0=x0+h; T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0]; end

数值计算课程设计任务书

数值计算课程设计任务书 学院信息与计算科学/应用数学专业班级学生: 题目:典型数值算法的C++语言程序设计 课程设计从2017 年 6 月12 日起到2017 年7月 1 日 1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等): 每人需作10个算法的程序、必做6题、自选4题。 对每个算法要求用C++语言进行编程。 必选题: 1、高斯列主元法解线性方程组 2、牛顿法解非线性方程组 3、经典四阶龙格库塔法解一阶微分方程组 4、三次样条插值算法(压紧样条)用C++语言进行编程计算 依据计算结果,用Matlab画图并观察三次样条插值效果。 5、龙贝格求积分算法 6、M次多项式曲线拟合,据计算结果,用Matlab画图并观察拟合效果。 自选题:自选4道其他数值算法题目.每道题目重选次数不得超过5次. 2、对课程设计成果的要求〔包括图表、实物等硬件要求〕: 2.1 提交课程设计报告 按照算法要求,应用C++语言设计和开发算法程序,提交由: 1)每个算法的原理与公式说明; 2)每个算法相应的程序设计说明(程序中的主要变量语义说明,变量的数据类型说明,数据在内存中组织和存储结构说明,各函数的输入形参和输出形参说明,函数功能说明,函数中算法主要流程图,函数的调用方法说明); 3)每个程序使用的实例(引用的实例可以自拟,也可以借用相关数值计算参考书中的例题作为作为验证程序是否正确的实例,无论是自拟实例还是引用实例,实例都应详细写入报告的正文中); 4)每个算法的调试记录(包括程序调试(静态调试和动态调试)和程序修改记录、程序测试(可以手工计算进行测试、也可以利用Matlab的函数或

数值分析课程报告

插值法和多项式拟合的研究 摘要 在科研和生产实践中,常常需要通过一组测量数据来寻找变量x与y的函数关系近似表达式。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法的原理是用一个简单函数逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。拟合法能够是从给定的一组实验数据出发,寻找函数的一个近似表达式,该近似表达式能反映数据的基本趋势而又不一定过全部的点,即曲线拟合。本文主要介绍拉格朗日插值法、埃尔米特插值法、三次样条插值法以及基于最小二乘法的多项式拟合。 关键词:拉格朗日插值,埃尔米特插值,样条插值,多项式拟合

1方法的意义 在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法的原理是用一个简单函数逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。它要求给出函数的一个函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定一个简单的函数()x ?作为()f x 的近似,概括地说,就是用简单函数为离散数组建立连续模型。插值法在实际应用中非常广泛,但是它也有明显的缺陷,一是测量数据常常带有测试误差,而插值多项式又通过所有给出的点,这样就是插值多项式保留了这些误差;二是如果实际得到的数据过多,则必然得到次数较高的插值多项式,这样近似的效果并不理想。拟合法能够很好的解决这些问题,它从给定的一组实验数据出发,寻找函数的一个近似表达式y=()x ?,该近似表达式能反映数据的基本趋势而又不一定过全部的点,即曲线拟合的问题,函数的近似表达式y=()x ?称为拟合曲线。常用最小而二乘法来确定拟合曲线。 2插值法的介绍 2.1 插值法定义 设 f (x )为[a ,b ]上的函数,在互异点n x x x ,...,,10处的函数值分别为 )(),...,(),(10n x f x f x f ,构造一个简单函数 ?(x ) 作为函数 f (x ) 的近似表达式y = f (x ) ≈ ?(x ),使 )()(i i x f x =? , i =0, 1, 2, …,n (1.0) 则称?(x ) 为关于节点n x x x ,...,,10的插值函数;称n x x x ,...,,10 为插值节点;称 ))((i i x f x , i =1,2,… , n 为插值点;f (x ) 称为被插值函数。式(1.0)称为插值条 件。这类问题称为插值问题。插值的任务就是由已知的观测点,为物理量(未知量)建立一个简单的、连续的解析模型,以便能根据该模型推测该物理量在非观测点

数值分析 第一章 学习小结

数值分析 第1章绪论 --------学习小结 一、本章学习体会 通过本章的学习,让我初窥数学的又一个新领域。数值分析这门课,与我之前所学联系紧密,区别却也很大。在本章中,我学到的是对数据误差计算,对误差的分析,以及关于向量和矩阵的范数的相关内容。 误差的计算方法很多,对于不同的数据需要使用不同的方法,或直接计算,或用泰勒公式。而对于二元函数的误差计算亦有其独自的方法。无论是什么方法,其目的都是为了能够通过误差的计算,发现有效数字、计算方法等对误差的影响。 而对误差的分析,则是通过对大量数据进行分析,从而选择出相对适合的算法,尽可能减少误差。如果能够找到一个好的算法,不仅能够减少计算误差,同时也可以减少计算次数,提高计算效率。 对于向量和矩阵的范数,我是第一次接触,而且其概念略微抽象。因此学起来较为吃力,仅仅知道它是向量与矩阵“大小”的度量。故对这部分内容的困惑也相对较多。 本章的困惑主要有两方面。一方面是如何能够寻找一个可靠而高效的算法。虽然知道算法选择的原则,但对于很多未接触的问题,真正寻找一个好的算法还是很困难。另一方面困惑来源于范数,不明白范数的意义和用途究竟算什么。希望通过以后的学习能够渐渐解开自己的疑惑。 二、本章知识梳理

2.1 数值分析的研究对象 数值分析是计算数学的一个重要分支,研究各种数学问题的数值解法,包括方法的构造和求解过程的理论分析。它致力于研究如何用数值计算的方法求解各种基本数学问题以及在求解过程中出现的收敛性,数值稳定性和误差估计等内容。 2.2误差知识与算法知识 2.2.1误差来源 误差按来源分为模型误差、观测误差、截断误差、舍入误差与传播误差五种。其中模型误差与观测误差属于建模过程中产生的误差,而截断误差、舍入误差与传播误差属于研究数值方法过程中产生的误差。 2.2.2绝对误差、相对误差与有效数字 1.(1)绝对误差e指的是精确值与近似值的差值。 绝对误差:

数值分析学习方法

第一章 1霍纳(horner)方法: 输入=c + bn*c bn?1*c b3*c b2*c b1*c an an?1 an?2 ……a2 a1 a0 bn bn?1 bn?2 b2 b1 b0 answer p(x)=b0 该方法用于解决多项式求值问题=anxn+an?1xn?1+an?2xn?2+……+a2x2+a1x+a0 ? 2 注:p为近似值 p(x) 绝对误差: ?|ep?|p?p ?||p?p rp? |p| 相对误差: ?|101?d|p?p rp?? |p|2 有效数字: (d为有效数字,为满足条件的最大整数) 3 big oh(精度的计算): o(h?)+o(h?)=o(h?); o(hm)+o(hn)=o(hr) [r=min{p,q}]; o(hp)o(hq)=o(hs) [s=q+p]; 第二章 2.1 求解x=g(x)的迭代法用迭代规则 ,可得到序 列值{}。设函数g 满足 y 定义在得 。如果对于所有 x ,则函数g 在 ,映射y=g(x)的范围 内有一个不动点; 此外,设 ,存在正常数k<1,使 内,且对于所有x,则函数g 在 内有唯一的不动点p。 ,(ii)k是一个正常数, 。如果对于所有 定理2.3 设有(i)g,g ’(iii ) 如果对于所有x在

这种情况下,p成为排斥不动点,而且迭代显示出局部发散 性。波理 尔 查 . 诺 二 分 法 ( 二 分 法 定) <收敛速度较慢> 试值(位)法:<条件与二分法一样但改为寻求过点(a,f(a))和(b,f(b))的割线l与 x轴的交点(c,0)> 应注意 越来越 小,但可能不趋近于0,所以二分法的终止判别条件不适合于试值法 . f(pk?1) 其中k=1,2,……证明:用 f(pk?1) 牛顿—拉夫森迭代函数:pk?g(pk?1)?pk?1? 泰勒多项式证明 第三章线性方程组的解法对于给定的解线性方程组ax=b a11x1 ? a12x2 ? ? ? a1nxn ? b1 a21x1 ? a22x2 ? ? ? a2nxn ? b2 ? an1x1 ? an2x2 ? ? ? annxn ? bn 一gauss elimination (高斯消元法第一步forward elimination 第二步 substitution 二lu factorization 第一步 a = lu 原方程变为lux=y ; 第二步令ux=y,则ly = b由下三角解出y;第三步 ux=y,又上三角解出x ; 三iterative methods(迭代法) a11x1 ? a12x2 ? ? ? a1nxn ? b1 a21x1 ? a22x2 ? ? ? a2nxn ? b2? ) back 初始值 0,x0,?,x0x1n2 四 jacobi method 1.选择初始值 2.迭代方程为 0,x0,?,x0x1n2 k?1? x1k?1 ? x2

数值分析课程设计(最终版)

本文主要通过Matlab 软件,对数值分析中的LU 分解法、最小二乘法、复化Simpon 积分、Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论。 实验一线性方程组数值解法中,本文选取LU 分解法,并选取数据于《数值分析》教材第5章第153页例5进行实验。所谓LU 分解法就是将高斯消去法改写为紧凑形式,可以直接从矩阵A 的元素得到计算L 、U 元素的递推公式,而不需要任何步骤。用此方法得到L 、U 矩阵,从而计算Y 、X 。 实验二插值法和数据拟合中,本文选取最小二乘拟合方法进行实验,数据来源于我们课堂学习该章节时的课件中的多项式拟合例子进行实验。最小二乘拟合是一种数学上的近似和优化,利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小。利用excel 的自带函数可以较为方便的拟合线性的数据分析。 实验三数值积分中,本文选取复化Simpon 积分方法进行实验,通过将复化Simpson 公式编译成MATLAB 语言求积分∫e ;x dx 1 0完成实验过程的同时,也对复化Simpon 积分章节的知识进行了巩固。 实验四常微分方程数值解,本文选取Runge-Kutta 方法进行实验,通过实验了解Runge-Kutta 法的收敛性与稳定性同时学会了学会用Matlab 编程实现Runge-Kutta 法解常微分方程,并在实验的过程中意识到尽管我们熟知的四种方法,事实上,在求解微分方程初值问题,四阶法是单步长中最优秀的方法,通常都是用该方法求解的实际问题,计算效果比较理想的。 实验五数值方法实际应用,本文采用最小二乘法拟合我国2001年到2015年的人口增长模型,并预测2020年我国人口数量。 关键词:Matlab ;LU 分解法;最小二乘法;复化Simpon 积分;Runge-Kutta

数值分析课程课程设计

课程设计 我再也回不到大二了, 大学是那么短暂 设计题目________ 数值分析 学生姓名________ 李飞吾 _________ 学号 ______ XXXXXXXX 专业班级信息计XXXXX班 指导教师_________________________

数值分析课程设计 1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的 一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫, 很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只 给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水 手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子, 私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆, 每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? ( 15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律 可以设起初的椰子数为p o ,第一至五次猴子在夜里藏椰子后,椰子的数 目分别为Pb ,p 1 ,p 2,P 3,P 4再设最后每个人分得x 个椰子,由题: 4 1 p k 1 ( p k 1) ( k=0,1,2,3,4 ) x -( p 5 1) 5 5 所以P 5 5x 1, p< p< 1 1利用逆向递推方法求解 P k - P k 1 1, ( k=0,1,2,3,4 ) 4 MATLAB^码: n 二in put(' n 二'); n= 15621 for x=1: n p=5*x+1; for k=1:5 p=5*p/4+1; end if P==fix(p), break end end disp([x,p]) 1 n 1. 2 设,I n — dx 05 x (1) 从I 。尽可能精确的近似值出发,利用递推公式: 1 I n 5I n 1 -(n 1,2,L 20) n 计算机从h 到I 20的近似值; (2) 从%较粗糙的估计值出发,用递推公式: 1 1 I n 1 —I n (n 30,29,L ,3,2) 5 5n 输出结果: 1023 15621 结果分析:此题的解题思想是在迭代法 中,判断p 为整数时,输出与p

相关主题
文本预览
相关文档 最新文档