数值分析期末实验报告

数值分析期末实验报告
数值分析期末实验报告

数值计算方法论文

论文名称:数值计算方法期末总结

学号:

姓名:

完成时间:

摘要:数值计算方法是数学的一个重要分支,以用计算机求解数学问题的理论和方法为研究对象。本文是我对本学期数值分析这门课程中所学到的内容以及所作的工作的总结。通过一学期的学习,我深入学习了线性方程组的解法,非线

性方程的求根方法,矩阵特征值与特征向量的计算,函数的插值方法,最佳平方逼近,数值积分与数值微分,常微分方程初值问题的数值解法。通过陶老师课堂上的讲解和课下的上机训练,对以上各个章节的算法有了更深刻的体会。

最后做了程序的演示界面,使得程序看起来清晰明了,便于查看与修改。通过本学期的学习。

关键词:数值计算方法、演示界面

第一章前言

随着电子计算机的普及与发展,科学计算已成为现代科学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。

第二章基本概念

2.1算法

算法是指由基本算术运算及运算顺序的规定构成的完整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。

2.2 误差

计算机的计算结果通常是近似的,因此算法必有误差,并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表2.1

表2.1

第三章泛函分析

2.1泛函分析概要

泛函分析(Functional Analysis)是研究“函数的函数”、函数空间和它们之间变换(映射)的一门较新的数学分支,隶属分析数学。它以各种学科为具体背景,在集合的基础上,把客观世界中的研究对象抽象为元素和空间。如:距离空间,赋范线性空间,内积空间。

2.2 范数

范数,是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,泛函是一个函数,其为矢量空间内的所有矢量赋予非零的正长度或大小。

这里以Cn空间为例,Rn空间类似。最常用的范数就是p-范数。若

,那么

当p取1,2,∞的时候分别是以下几种最简单的情形:

1-范数:║x║1=│x1│+│x2│+…+│xn│

2-范数:║x║2=(│x1│2+│x2│2+…+│xn│2)1/2

∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│)

其中2-范数就是通常意义下的距离。

对于这些范数有以下不等式:║x║∞≤ ║x║2≤ ║x║1≤ n1/2║x║2≤ n║x║∞

另外,若p和q是赫德尔(Hölder)共轭指标,即1/p+1/q=1,那么有赫德尔不等式:

|| = ||xH*y| ≤ ║x║p║y║q

当p=q=2时就是柯西-许瓦兹(Cauchy-Schwarz)不等式

一般来讲矩阵范数除了正定性,齐次性和三角不等式之外,还规定其必须满足相容性:║XY║≤║X║║Y║。所以矩阵范数通常也称为相容范数。

如果║·║α是相容范数,且任何满足║·║β≤║·║α的范数║·║β都不是相容范数,那么║·║α称为极小范数。对于n阶实方阵(或复方阵)全体上的任何一个范数║·║,总存在唯一的实数k>0,使得k║·║是极小范数。

注:如果不考虑相容性,那么矩阵范数和向量范数就没有区别,因为mxn矩阵全体和mn维向量空间同构。引入相容性主要是为了保持矩阵作为线性算子的特征,这一点和算子范数的相容性一致,并且可以得到Mincowski定理以外的信息。

第四章算法总结

本学期讲解过的主要算法列举如下:线性方程组的解法(高斯消元法,列主消元法,Doolittle分解法,追赶法,LDL'分解法,Jacobi分解法,Seidel迭

代法);非线性方程的求根方法(二分法,简单迭代法,Newton 迭代法,Newton+下山因子,Newton 迭代法2,Newton 非线性方程);矩阵特征值与特征向量的计算(householder 矩阵,反幂法,幂法,QR 分解);函数的插值方法(三次样条插值,Lagrange 插值法,Newton 差商插值法);最佳平方逼近(chebyshev 最小二乘法,曲线拟合最小二乘法);数值积分与数值微分(simpson 求积分式算法,Romberg 算法,外推法);常微分方程初值问题的数值解法(欧拉改进法、龙格库塔法和修正的Adams 法)。下面对主要算法进行分析。

4.1线性方程组的解法

本章学习了一些求解线性方程组的常用方法,其中Gauss 消元法,列主元消元法,LU 分解法,追赶法和LDL ’分解法都是解线性方程组的直接方法;而Jacobi 迭代法和SOR 法则是解线性方程组的基本迭代法。求解线性方程组时,应该注意方程组的性态,对病态方程组使用通常求解方程组的方法将导致错误。迭代求精法可用于求解某些病态方程。

4.1.1高斯列主元LU 分解法求解线性方程组

高斯消元法和LU 分解法是直接法求解线性方程组中的两种方法。其中高斯消元法的基本思想是将线性方程组(1.1)通过消元,逐步化为同解的三角形方程组,然后用回代法解出n 个解。高斯列主元消元法则是在高斯消元法的基础上提

出的先选主元再消元的方法,避免了(1)0k kk a -=时消元无法进行或者是当(1)k kk a -的绝

对值与其下方的元素(1)(1,2,,)k ik a i k k n -=++的绝对值之比很小时,引起计算机

上溢或产生很大的舍入误差而导致所求出的解失真的问题。LU 分解法是将矩阵A 用一个下三角矩阵和一个上三角矩阵之积来表示,即A LU =,然后由A LU =,Ax b =,得LUx b =,将线性方程组的求解化为对两个三角形方程组Ly b =和Ux y =的求解,由此可解出线性方程组(1.1)的n 个解12,,,n x x x 。这两种求解线性方程组的方法在处理单个线性方程组时没有差别,只是方法的不同,但在处理系数矩阵A 相同,而右端项不同的一组线性方程组时,LU 分解法就有明显的优势,因为它是将系数矩阵A 和右端项b 分开处理的,这样就可以只进行一次分解。例如,求解线性方程组,1,2,,i Ax b i m ==,用高斯消元法求解的计算量大约为313mn ,而用LU 分解求解的计算量约为32

13n mn +,后者计算量显然小很多。但是LU 分解法同样有可能由于jj u 的绝对值很小而引起计算机上溢或产生很

大的舍入误差而导致所求出的解失真。因此提出了结合高斯列主元消元的LU 分解法。

我们采用的计算方法是先将A 矩阵进行高斯列主元消元,然后再计算相应的L 矩阵和U 矩阵(U 矩阵就是经过n-1步消元后的A 矩阵)。但要注意,第k 步消元时会产生(1,2,,)ik m i k k n =++,从而可以得到L 矩阵的第k 列元素,但在下一步消元前选取列主元时可能会交换方程的位置,因此与方程位置对应的L 矩阵中的元素也要交换位置。

4.2非线性方程组的求根方法

本章学习的二分法简单迭代法、Newton 迭代法等方法,代表着求解非线性方程所采用的两类方法。大范围收敛方法的初值x0选取没有多少限制,只要在含根区间任选其一即可,二分法就是这类方法。局部收敛法要求x0要充分靠近根x*才能保证收敛,以简单迭代法为基础,Newton 迭代法为代表的各类迭代法都属这类方法。

4.2.1Newton 迭代法

牛顿迭代法的构造过程是这样的:设0x 是()0f x =的一个近似根,将()f x 在

0x 处作Taylor 展开得'''

200000()()()()()()2!f x f x f x f x x x x x =+-+-+,若取其

前两项来近似代替()f x ,得近似方程的根

'1000()/()x x f x f x =-,然后再对1x 做上述同样处理,继续下去,一般若'()0k f x ≠,则可以构造出迭代格式

1'()

()k k k k f x x x f x +=-

此格式称为牛顿迭代格式,用它来求解()0f x =的方法称为牛顿迭代法。 牛顿迭代法的几何意义是用()f x 在k x 处的切线与x 轴得交点作为下一个迭代点1k x +的。由于这一特点,牛顿迭代法也常称为切线法。

牛顿迭代法虽然收敛很快,但它通常过于依赖初值0x 的选取,如果0x 选择不当,将导致迭代发散或产生无限循环。

4.3 矩阵特征值与特征向量的计算

本章学习了计算矩阵特征值和特征向量的三种常用的有效方法。

幂法是求矩阵的主特征值和对应特征向量的一种迭代方法。它在计算过程中原始举证A 始终不变。这种方法简单方便,适用于任意类型的矩阵,特别适用于

高阶稀疏矩阵。

QR 算法是计算任意矩阵A 的全部特征值的一种正交相似变换方法。它利用Househoder 变换把矩阵A 约化成一种上三角阵,所得三角阵的对角线的元就是所求矩阵的特征值。

Jacobi 方法是另一种求矩阵特征值的变换法。它是把实对称阵A 经过一系列正交旋转变换化为一个对角阵。对角阵的对角元就是A 的特征值。

4.3.1 QR 法求特征值

QR 算法是目前求一般矩阵全部特征值最有效的方法。

其以基本步骤如下:

(1)令

1A A =,对1A 作QR 分解:()111A Q R = (4-1)

(2)将(4-1)右端逆序相乘,得到()211A R Q = (4-2)

(3)(4-2)式中对2A 作QR 分解,有()222A Q R =,()322A R Q =,以此类推

(4)得到矩阵序列(){}k A ,容易证明()k A 与A 相似,因而具有相同特征值。

在一定条件下,(){}

k A 收敛于上三角阵(或分块上三角阵),其对角元(或分块)有确定的极限。如果收敛于上三角阵,则主对角元就是A 的特征值;如果收敛于分块,则这些分块的特征值也就是A 的特征值。

4.4 函数的插值法

本章学习了插值多项式与样条插值函数的构造与误差,主要构造方法是利用插值基函数。插值多项式的两种形式各有特点,Lagrange 插值适用于不等距节点的插值和导出数值计算公式。Newton 插值使用与等距节点的插值及在插值中增加节点。由于高次插值的效果不好,实践中常用分段低次插值,特别是样条插值。样条函数是当前函数逼近中最活跃的一个分支,它在函数插值、数值积分、微分方程求解中都有重要应用。

4.4.1Hermite 插值

设()f x ,[],x a b ∈。已知它在1n +个互异点n x (012n a x x x x b ≤<<<

<≤)上的函中求数值: (), 0,1,

,i i f x y i n ==。

求解插值问题就是从函数类Φ中求?使: () 0,1,,i i x y i n ?==

这里()f x 称为被插函数,[],a b 称为插值区间,()0,1,,i x i n =称为插值结

点,()x ?称为插值函数,Φ称为插值函数类。误差函数()()()R x f x x ?=-称为插值余项,并以()x ?作为()

f x 的估值,x 称为插值点,当x 属于包含结点012,,,,n x x x x 的最小闭区间时,相应的插值称为内插,否则称为外插。

在0x 附近,可用()f x 在0x 处的n 阶Taylor 展开式)(x p n 来近似函数()f x

显然它与()f x 在0x 处具有相同的函数值,以及1到n 阶导数值,即有

()()00()() (0,1,2,)i i n p x f x i n ==

(4.31)

故可将n 阶的Taylor 公式视为在0x 处满足插值条件(4.31)的一种插值方法.

为在较大的范围内能更好的近似被插值函数()f x ,在实际应用中,不但要求在节点上插值函数与被插值函数有相同的函数值,而且要求在部分或者全部节点上一阶甚至更高阶的导数值也相同.这类插值称为Hermite 插值。在一点处两个函数的函数值和一阶导数值相同,在几何上表现为两条曲线在该点有相同的切线;如果直至二阶导数值相同,则两条曲线在该点具有相同的凹凸性及曲率。可见,Hermite 插值是一类更广泛的插值方法,Taylor 公式可视为在0x 处的Hermite 插值。

在构造Hermite 插值时,如给出的插值条件有1m +个,则可以构造一个不超过m 次的插值多项式。

4.5最佳平方逼近

最小二乘曲线拟合是处理实验数据的常用方法。通常选取多项式为拟合函数,但此种拟合对应的法方程当阶数较高时,往往出现病态。为避免上述问题,可采用正交多项式。样条函数亦是一个很好的拟合模型,它既能保证有良好的逼近效果,又比较便于计算。

4.5.1Legendre 最小二乘曲线拟合

曲线拟合问题就是从在实验中得到的1m +对数据(,),(0,1,,)i i x y i m =中找到一个经验公式。曲线拟合的最小二乘法实际上是离散数据下的最佳平方逼近,n

n n x x n x f x x x f x f x p )(!)())((')()(00)

(000-+-+=

其提法为:给定1m +对数据(,),(0,1,,)i i x y i m =和一组权系数01,,,m ωωω。设

{}010,,

,n n j j j j M span c c R ?????=??===∈????∑ 是曲线拟合函数类,其中01,,

,n ???是线性无关的基函数。求 **

()()n j j j x c x M ??==∈∑

使得***0101(,,,)min (,,,)n n M S c c c S c c c ?∈=,若满足此式的解*()x ?存在,则*()x ?称为数据(,),(0,1,,)i i x y i m =的最小二乘拟合函数。

常规的最小二乘拟合通常取(),(0,1,,j j x x j n ?==,并取权系数

1(0,1,,)i i m ω==,

而Legendre 最小二乘拟合是以Legendre 正交多项式为基函数的,即()()j j x P x ?=,可解得 *

(,),0,1,,(,)j j j j y c j n ???==

(5.1)

其中0(,)()m j i j i i i y x y ?ω?==∑是带权内积,而()()j j x P x ?=可由如下递推公式得到: 110121()()(),()1,()11

j j j j j P x xP x P x P x P x x j j +-+=-==++ (5.2)

则拟合的结果为**

0()()n j j j x c x ??==∑,最小平方误差为*

*2

0(,)(,)n

j j j j S y y c ??==-∑ 若所给区间不是[-1,1],而是[a,b],则可通过变换x=(a+b)/2+[(b-a)/2]t 将其转换为-1<=t<=1上的情形处理,具体是现在程序中有所体现。

4.6 数值积分与数值微分

本章学习了数值积分与数值微分的计算方法,这些近似方法都是基于对函数作插值逼近,用插值函数的积分或微分近似原来函数的积分或微分。等距结点求积公式及其复合公式算法比较简单,程序易实现,特别是Romberg 求积公式,当节点加密提高积分近似程度时,前面的结果可以为后面的计算使用,因此对减少

计算量有好处。Gauss 型求积公式是高精度求积公式,其节点是不规则的。通常在具有相同数目结点的情况下,它将大大优于其他等距节点求积公式。特别是计算无穷积分与旁义积分是其它方法不能比的。但使用gauss 型求积公式要在计算机中存储节点和求积系数,计算过程也较麻烦。

4.6.1 数值积分

所谓数值积分方法,就是用一个足够精度的简单函数

()p x 去近似被积函数,

从而有

()()b b a

a f x dx p x dx ≈?? (1-6-1)

一般取()p x 为()f x 的插值多项式或分段插值多项式,因此得到

()()0 b n k k k a

f x dx A f x =≈∑?

(1-6-2) 式(1-6-1)称为数值求积公式。k A 称为求积数,它仅与k x 有关,与被积函数()f x 无关。k x 称为求积结点。

4.6.2 数值微分

根据函数在一些离散点的函数值,推算它在某点的导数或高阶导数的近似值的方法。通常用差商代替微商,或者用一个能够近似代替该函数的较简单的可微函数(如多项式或样条函数等)的相应导数作为能求导数的近似值。例如一些常用的数值微分公式(如两点公式、三点公式等)就是在等距步长情形下用插值多项式的导数作为近似值的。此外,还可以采用待定系数法建立各阶导数的数值微分公式,并且用外推技术来提高所求近似值的精确度。当函数可微性不太好时,利用样条插值进行数值微分要比多项式插值更适宜。如果离散点上的数据有不容忽视的随机误差,应该用曲线拟合代替函数插值,然后用拟合曲线的导数作为所求导数的近似值,这种做法可以起到减少随机误差的作用。数值微分公式是微分方程数值解法的重要依据。

4.7 常微分方程初值问题的数值解法

本章主要学习了求解常微分方程初值问题的两类数值解法:单步法与线性多步法。单步法中最常用的是R-K 方法。它的特点是易于编程,易于调整步长,且稳定性好,不用提供辅助值,是自开始方法;但是它的精度的提高依赖于计算f (x ,y )的次数。因此R-K 方法适用于计算函数值不太复杂且精度要求不很高的问题。线性多步法具有计算函数值次数少,精度高的优点,并且它还宜于估计误

差。所以在计算比较复杂时,推荐使用线性多步法。本章介绍了变步长的单步法,误差控制方法,它要求计算中固定方法的阶,若想在计算过程中提高方法的阶,则要用外推法。

4.7.1改进的Euler 方法

利用原有的Euler 方法,利用其结果(0)1

n y +,再利用梯形公式迭代一次就得到1n y +,这样的计算公式就是改进的Euler 方法。其计算格式为

1111(,)[(,)(,)]2

n n n n n n n n n n y y hf x y h y y f x y f x y ++++=+???=++?? 按上面第一个式子算出初值1n y +称为预测,按第二式迭代一次求出1n y +称为校正,这两个式子构成一个预测-校正公式。它可以改写成一个显示公式:

11[(,)(,(,))]2

n n n n n n n n h y y f x y f x y hf x y ++=+++ 4.7.2 Runge-Kutta 方法

将改进Euler 法改写成如下形式: ???????++==++=+),()

,()(21121211K y h t f h K y t f h K K K y y i i i i i i

此为一单步、2阶、显式公式(比较梯形:2阶隐式)。若注意此处的21,K K ,它们是两个不同的增量,Heun 方法则是从

i y 出发加上若干个增量的加权平均值后得到1+i y ,将此推广到一般形式,i y 出发加上m 个增量的加权平价取得1+i y ,便有:m -级Runge-Kutta 公式

?????????++++=++==++++=--+)

,()

,(),(11221112122122111m m m m m i m i m i i i i m m i i K K K y h t f h K K y h t f h K y t f h K K K K y y βββαβαλλλ

二级Runge-Kutta 公式为: ?????++==++=+),(),(12122111K y h t f h K y t f h K K K y y i i i i i i βαλλ

常用的四阶四级Runge-Kutta 公式(称为经典、古典或标准Runge-Kutta 公式——

Classical Runge-Kutta )

1123411223431(22)6(,)

(,)22(,)22(,)i i i i i i i i i i y y K K K K K h f t y K h K h f t y K h K h f t y K h f t h y K +?=++++??=???=++???=++??=++??

几何意义:若将上述44--RK 公式改写为:

)22(643211f f f f h y y i i ++++=+ 其中)4,3,2,1(=j f j 为分别为原式中)4,3,2,1(=j K j 中相应的函数j f 值。比较在区间

],[1+i i t t 上的数值积分Simpson 公式

)4(6),(111+++++=+=?+i m i i t t i i f f f h y dt y t f y y i i 其中 1,,+i m i f f f 分别表示),(y t f 在区间 ],[1+i i t t 的左、中、右端点的值;它们分别有:

41321,,f f f f f f f i m i ≈≈≈≈+;因此可简略地得到该44--RK 公式的误差公式是 )(28801),()5(5i i y h h t E ξ-

=

第五章 算法界面制作

学期末,我运用VB 环境制作界面,如图5.1所示

图5.1总结界面

由上图可以很直观地看到总结界面综合了本学期所有编写的程序,并且,在该界面环境下,根据程序设计的要求,允许修改程序及输入数据文件,支持修改后的编译连接,并可以在这个图形界面下面运行这学期编写的所有程序。对本学期所做工作做了一个很好的总结。

第六章 总结

通过对《数值计算方法》这门课程的理论学习以及以上一系列的程序编写,我不仅对数值计算方法的原理和和算法应用有了更近一步的了解,同时还对C 语言的程序编写,编译和链接等方面有了进一步的掌握,对规模稍大的程序编写也积累了一定的经验。通过学习我已经对数值计算方法这门课程有了一定的了解,我相信有了这样实用的数学工具,在今后的学习生活中一定会给我带来狠多的帮

助,我也会更加努力,争取更大的进步!!

这门课程分工合作的性质,增进了我与其他同学之间相互协作的能力。相信这些都会对我以后的自身发展有很大的帮助。在此,对陶老师课堂上的悉心指导表示衷心的感谢!

第七章参考文献

[1]刘钦圣张晓丹王兵团. 数值计算方法教程. 北京:冶金工业出版社,2005.

数值分析实验报告176453

实验报告 插值法 数学实验室 数值逼近 算法设计 级 ____________________________ 号 ____________________________ 名 _____________________________ 实验项目名称 实验室 所属课程名称 实验类型 实验日期

实验概述: 【实验目的及要求】 本次实验的目的是熟练《数值分析》第二章“插值法”的相关内容,掌握三种插 多项式插值,三次样条插值,拉格朗日插值,并比较三种插值方法的 优劣。 本次试验要求编写牛顿多项式插值,三次样条插值,拉格朗日插值的程序编码,并 去实现。 【实验原理】 《数值分析》第二章“插值法”的相关内容,包括:牛顿多项式插值,三次样条插值, 拉格朗日 插值的相应算法和相关性质。 【实验环境】(使用的软硬件) 软件: MATLAB 2012a 硬件: 电脑型号:联想 Lenovo 昭阳E46A 笔记本电脑 操作系统: Win dows 8专业版 处理器:In tel ( R Core ( TM i3 CPU M 350 @2.27GHz 2.27GHz 实验内容: 【实验方案设计】 第一步,将书上关于三种插值方法的内容转化成程序语言,用 MATLA B 现; 第二步,分别用牛顿多项式插值,三次样条插值,拉格朗日插值求解不同的问题。 【实验过程】(实验步骤、记录、数据、分析) 实验的主要步骤是:首先分析问题,根据分析设计 MATLA 程序,利用程序算出 问题答案,分析所得答案结果,再得出最后结论。 实验一: 已知函数在下列各点的值为 试用4次牛顿插值多项式 P 4( x )及三次样条函数 S ( x )(自然边界条件)对数据进行插值。 用图给出{( X i , y i ), X i =0.2+0.08i , i=0 , 1, 11, 10 } , P 4 ( x )及 S ( x )。 值方法:牛顿 在MATLAB 件中

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

数值分析实验报告

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p Λ 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a Λ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a Λ 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots +

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值分析实验报告资料

机电工程学院 机械工程 陈星星 6720150109 《数值分析》课程设计实验报告 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1 求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈) 实验步骤: 第一步:先在matlab 中定义lagran 的M 文件为拉格朗日函数 代码为: function[c,l]=lagran(x,y) w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if(k~=j) v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; end

第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >>p = lagran(x,y) 回车得到: P = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05]; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.0845; >> plot(x,y) 命令执行后得到如下图所示图形,然后 >> x=0.596; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.084 y =0.6257 得到f(0.596)=0.6257 同理得到f(0.99)=1.0542

数值分析实验报告册

实验名称:Lagrange插值(实验一) 实验目的: 掌握Lagrange插值数值算法,能够根据给定的函数值表达求出插值多项式和函数在某一点的近似值。实验准备: 1.在开始本实验之前,请回顾教科书的相关内容; 2.需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。 实验内容及要求 已知数据如下: 要求: 试用Lagrange插值多项式求0.5626,0.5635,0.5645 x 时的函数近似值. 实验过程: 编写Matlab函数M文件Lagrange如下: function yy=lagrange(x,y,xi) m=length(x); n=length(y); if m~=n,error('向量x与y的长度必须一致');end for k=1:length(xi) s=0; for i=1:m z=1; for j=1:n if j~=i z=z*(xi(k)-x(j))/(x(i)-x(j)); end end s=s+z*y(i); end yy=s end 在命令窗口调用函数M文件lagrange,输出结果如下: >>x=[0.56160, 0.56280, 0.56401, 0.56521]; >>y=[0.82741, 0.82659, 0.82577, 0.82495]; >>xi=[0.5626, 0.5635, 0.5645]; >>yi= lagrange (x,y,xi)

yi= 0.8628 0.8261 0.8254 实验总结(由学生填写): 教师对本次实验的评价(下面的表格由教师填写): 实验名称:曲线拟合的最小二乘方法(实验二) 实验目的: 掌握最小二乘方法,并能根据给定数据求其最小二乘一次或二次多项式,然后进行曲线拟合。实验准备: 1.在开始本实验之前,请回顾教科书的相关内容;

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

数值分析实验报告

实验五 解线性方程组的直接方法 实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。 实验要求: (1)取矩阵?? ? ?? ?? ?????????=????????????????=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。取n=10计算矩阵的 条件数。让程序自动选取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。 (4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。 思考题一:(Vadermonde 矩阵)设 ?? ??????????????????????=? ? ? ?????????????=∑∑∑∑====n i i n n i i n i i n i i n n n n n n n x x x x b x x x x x x x x x x x x A 0020 10022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=, (1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化? (2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b (3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。 (4)你能由此解释为什么不用插值函数存在定理直接求插值函数而要用拉格朗日或牛顿插值法的原因吗? 相关MATLAB 函数提示: zeros(m,n) 生成m 行,n 列的零矩阵 ones(m,n) 生成m 行,n 列的元素全为1的矩阵 eye(n) 生成n 阶单位矩阵 rand(m,n) 生成m 行,n 列(0,1)上均匀分布的随机矩阵 diag(x) 返回由向量x 的元素构成的对角矩阵 tril(A) 提取矩阵A 的下三角部分生成下三角矩阵

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

数值分析实验报告3

实验报告 实验项目名称数值积分与数值微分实验室数学实验室 所属课程名称数值逼近 实验类型算法设计 实验日期 班级 学号 姓名 成绩

实验概述: 【实验目的及要求】 本次实验的目的是熟练《数值分析》第四章“数值积分与数值微分”的相关内容,掌握复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式。 本次试验要求编写复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的程序编码,并在MATLAB软件中去实现。 【实验原理】 《数值分析》第四章“数值积分与数值微分”的相关内容,包括:复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的相应算法和相关性质。 【实验环境】(使用的软硬件) 软件: MATLAB 2012a 硬件: 电脑型号:联想 Lenovo 昭阳E46A笔记本电脑 操作系统:Windows 8 专业版 处理器:Intel(R)Core(TM)i3 CPU M 350 @2.27GHz 2.27GHz 实验内容: 【实验方案设计】 第一步,将书上关于复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的内容转化成程序语言,用MATLAB实现;第二步,分别用以上求积公式的程序编码求解不同的问题。 【实验过程】(实验步骤、记录、数据、分析) 实验的主要步骤是:首先分析问题,根据分析设计MATLAB程序,利用程序算出问题答案,分析所得答案结果,再得出最后结论。 实验:用不同数值方法计算积分 (1) 取不同的步长h.分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善? (2) 用龙贝格求积计算完成问题(1)。 (3)用勒让德多项式确定零点,再代入计算高斯公式,使其精度达到10-4 (1)在MATLAB的Editor中建立一个M-文件,输入程序代码,实现复合梯形求积公式的程序代码如下:

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

数值分析实验报告2

一、实验名称 复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。 二、实验目的及要求 1. 掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤. 2. 培养Matlab 编程与上机调试能力. 三、实验环境 计算机,MATLAB 软件 四、实验内容 1.用不同数值方法计算积分9 4 ln 1 0-=? xdx x 。 (1)取不同的步长h 。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善。 (2)用龙贝格求积计算完成问题(1)。 (3)用自适应辛普森积分,使其精度达到10-4。 五、算法描述及实验步骤 1.复合梯形公式 将区间[a,b]划分为n 等份,分点x k =a+ah,h=(b-a)/h,k=0,1,...,n ,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用梯形公式(),得 )]()([2 )(b f a f a b dx x f b a +-≈ ? () )]()(2)([2)]()([21 1 110b f x f b f h x f x f h T n k k k n k k n ++=+=∑∑-=+-= () ),(),(12 )(' '2b a f h a b f R n ∈-- =ηη () 其中Tn 称为复合梯形公式,Rn 为复合梯形公式的余项。 2.复合辛普森求积公式 将区间[a,b]划分为n 等份,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用辛普森公式(),得 )]()2 (4)([6b f b a f a f a b S +++-= ()

数值分析实验报告97389

数值分析实验报告 (第二章) 实验题目: 分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程 f(x)=(x2+1)(x?1)5=0 的根x=1,观察不同初始值下的收敛性,并给出结论。 问题分析: 题目有以下几点要求: 1.不同的迭代法计算根,并比较收敛性。 2.选定不同的初始值,比较收敛性。 实验原理: 各个迭代法简述 二分法:取有根区间[a,b]的重点x0,确定新的有根区间[a1,b1]的区间长度仅为[a,b]区间长度的一版。对压缩了的有根区间[a1,b1]重复以上过程,又得到新的有根区间[a2,b2],其区间长度为[a1,b1]的一半,如此反复,……,可得一系列有根区间,区间收敛到一个点即为根。 牛顿迭代法:不动点迭代法的一种特例,具有局部二次收敛的特性。迭代格式为 x n+1=x n?f(x n) f′(x n) ,n=0,1,2,… 割线法:是牛顿法的改进,具有超线性收敛的特性,收敛阶为1.618. 迭代格式为 x n+1=x n? f(x n) (n)(n?1) (x n?x n?1),n=1,2,… 史蒂芬森迭代法:采用不动点迭代进行预估校正。至少是平方收敛的。迭代格式为 y n=φ(x n) z n=φ(y n) x n+1=x n? (y n?x n)2 z n?2y n+x n 这里φ(x)可采用牛顿迭代法的迭代函数。实验内容:

1.写出该问题的f(x)函数代码如下: function py= f(x) syms k; y=(k^2+1)*(k-1)^5; yy=diff(y,k); py(1)=subs(y,k,x); py(2)=subs(yy,k,x); end 2.分别写出各个迭代法的迭代函数代码如下: 二分法: function y=dichotomie(a,b,e) i=2; m(1)=a; while abs(a-b)>e t=(a+b)/2; s1=f(a); s2=f(b); s3=f(t); if s1(1)*s3(1)<=0 b=t; else a=t; end m(i)=t; i=i+1; end y=[t,i+1,m]; end 牛顿迭代法: function y=NewtonIterative(x,e) i=2; en=2*e;m(1)=x; while abs(en)>=e s=f(x); t=x-s(1)/s(2); en=t-x; x=t; m(i)=t; i=i+1; end y=[x,i+1,m]; end 牛顿割线法: function y=Secant(x1,x2,e) i=3; m(1)=x1,m(2)=x2; while abs(x2-x1)>=e s1=f(x1); s2=f(x2); t=x2-(x2-x1)*s2(1)/(s2(1)-s1( 1)); x1=x2; x2=t; m(i)=t; i=i+1; end

数值分析实验报告77712

《数值分析》 实验报告 学院:计算机科学与软件学院姓名:XXX 班级:计算机XX班 学号:XXXXXX 实验一:舍入误差与数值稳定性

实验目的: 1、 通过上机编程,复习巩固以前所学程序设计语言; 2、 通过上机计算,了解舍入误差所引起的数值不稳定性。 3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。 实验内容:用两种不同的顺序计算644834.1100001 2≈∑=-n n ,分析其误差 的变化。 实验流程图: 实验源程序:

#include #include void main() { int i; float s1=0,s2=0,d1,d2; for (i=1;i<=10000;i++) s1=s1+1.0f/(i*i); for (i=10000;i>=1;i--) s2=s2+1.0f/(i*i); d1=(float)(fabs(1.644834-s1)); d2=(float)(fabs(1.644834-s2)); printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1); printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2); if(d1

实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。在运算中,如果参加运算的数的数量级相差很大,而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,进而影响计算结果的可靠性,所以计算过程中要注意运算次序,避免出现这种现象。 实验二:拉格朗日插值法和牛顿插值法 实验目的:分别用拉格朗日差值和牛顿插值解决数学问题,并比较各方法的优略。 1、拉格朗日插值 实验内容: x i -3.0-1.0 1.0 2.0 3.0 y i 1.0 1.5 2.0 2.0 1.0 作二次插值,并求x 1=-2,x 2 =0,x 3 =2.75时的函数近似值。

相关文档
最新文档