数值分析上机实验指导书
- 格式:doc
- 大小:1.09 MB
- 文档页数:37
数值分析课程实验指导书应用科学学院数学系目录前言 (1)第一部分数值实验报告格式 (1)第二部分数值实验报告范例 (2)第三部分数值实验 (6)数值实验一 (6)数值实验二 (8)数值实验三 (10)数值实验四 (12)数值实验五 (13)数值实验六 (16)数值实验七 (17)第四部分MATLAB入门 (19)前言该实验指导书是《数值分析》课程的配套数值实验教材。
《数值分析》是理工科大学本科生与硕士研究生的必修课程,学习本课程的最终目的,是用计算机解决科学和工程实际中的数值计算问题,因此熟练地在计算机上实现算法是必备的基本技能。
数值实验是数值分析课程中不可缺少的部分,利用计算机进行数值实验,以消化巩固所学的内容,增加对算法的可靠性、收敛性、稳定性及效率的感性认识,体会和重视算法在计算机上实验时可能出现的问题。
学生通过选择算法、编写程序、分析数值结果、写数值实验报告等环节的综合训练,逐步掌握数值实验的方法和技巧,获得各方面的数值计算经验,培养学生运用所学算法解决实际问题和进行理论分析的能力。
该实验指导书由王希云、刘素梅、王欣洁、李晓峰等老师编写。
第一部分数值实验报告格式一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下:一、实验名称实验者可根据报告形式需要适当写出。
二、实验目的及要求首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。
三、算法描述(实验原理与基础理论)数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出。
四、实验内容实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备。
实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。
本实验采用两种常见的求解方法二分法和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;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%% 输入函数f=input('请输入需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('input initial value x0>>');k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while (abs(R)>1e-8)x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));R=x1-x0;x0=x1;k=k+1;if (eval(subs(f,'x0','x'))<1e-10);breakendif k>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input('maybe result is error,choose a new x0,y/n?>>','s');if strcmp(ss,'y')x0=input('input initial value x0>>');k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.用二分法计算方程在[1,2]内的根。
数值分析上机实验报告《数值分析》上机实验报告1.用Newton 法求方程 X 7-X 4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。
1.1 理论依据:设函数在有限区间[a ,b]上二阶导数存在,且满足条件{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间],[0)(3,2,1,0,)(')()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f ab c f x f b a x f b f x f k k k k k k ==-==∈≤-≠>+令)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3225333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f故以1.9为起点⎪⎩⎪⎨⎧='-=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。
当前后两个的差<=ε时,就认为求出了近似的根。
本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。
1.2 C 语言程序原代码:#include<stdio.h>#include<math.h> main(){double x2,f,f1;double x1=1.9; //取初值为 1.9 do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数 printf("计算结果:x=%f\n",x1);}1.3 运行结果:1.4 MATLAB 上机程序function y=Newton(f,df,x0,eps,M) d=0;for k=1:Mif feval(df,x0)==0d=2;breakelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;if e<=eps&&abs(feval(f,x1))<=epsd=1;breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey= '奇异'endfunction y=df(x)y=7*x^6-28*4*x^3;Endfunction y=f(x)y=x^7-28*x^4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newton('f','df',x0,eps,M);>> vpa(x,7)1.5 问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。
数值分析实验指导书目录实验目的 (1)实验基本要求 (2)实验一、误差分析 (3)一、实验目的 (3)二、算法实例 (3)三、实验任务 (10)实验二、插值法 (12)一、实验目的 (12)二、算法实例 (12)三、实验任务 (19)四、思考题 (20)实验三、解线性方程组的直接法 (21)一、实验目的 (21)二、算法实例 (21)三、实验任务 (24)四、思考题 (24)实验四、解线性方程组的迭代法 (25)一、实验目的 (25)二、算法实例 (25)三、实验任务 (29)四、思考题 (29)实验五、常微分方程初值问题的数值解法 (30)一、实验目的 (30)二、算法实例 (30)三、实验任务 (40)四、思考题 (40)实验目的作为实践性非常强的课程,安排上机实验的目的,不仅是为了验证教材和授课内容,更重要的是,要通过实验深入理解方法的设计原理与处理问题的技巧,培养自行处理常规数值计算问题的能力和综合运用知识分析、解决问题的能力。
1、通过上机实验加深课堂内容的理解。
数值分析的主要任务就是研究适合于在计算机上使用的数值计算方法及与此相关的理论。
通过编程上机,就可以加深对方法运行过程的理解,同时在编程中领会和理解数值计算方法的计算要领和步骤,体会问题的条件和限制范围,理解一般问题和特殊问题的区别。
2、学会对数值计算结果的分析和处理。
数值分析实验不只是编写程序得到一个数值结果,我们应在掌握数值计算计算方法的基本原理和思想的同时,注意方法处理的技巧及其与计算机的密切结合,重视误差分析、收敛性及稳定性的讨论。
此外,还要注意算法能否在计算机上实现,应避免因数值方法选用不当、程序设计不合理而导致超过计算机的存储能力,或导致计算结果精度不高等。
3、要能灵活掌握各种数值计算方法。
由于针对同一个问题可以选用不同的数值计算方法,我们要注意各种方法的使用条件。
通过上机,比较各种方法间的异同及优缺点,以便更好的使用不同的方法来解决实际问题,使计算机成为我们最好的工具。
数值分析上机实验理学院11级统计01班41108030125鲁庆实验报告一一.实验名称误差与误差估计二.实验目的掌握数值运算的误差估计方法三.数学原理 1.绝对误差(*)e x设某一量的准确值为x ,近似值为x*,则x*与x 之差叫做近似值x*的绝对误差(简称误差),记为*(*)*e e x x x ==- 2.绝对误差限适当小的正数,使|(*)||*|*e x x x ε=-≤则称*ε为近似值 x * 的绝对误差限。
(有时用*x x ε*=±表示近似值x *的精度或准确值的所在范围。
3.相对误差(*)r e x绝对误差与准确值之比*(*)*(*),0r r e x x xe e x x x x-===≠称为x *的相对 误差。
4.相对误差限(*)r x ε若指定一个适当小的正数 (*)r x ε,使|(*)||(*)|(*)||r r e x e x x x ε=≤则称(*)r x ε为近似值 x *的相对误差限。
5.有效数字若近似值x*的绝对误差限是某一位的半个单位,该位到x*的第一位非零数字一共有n 位,则称近似值x*有n 位有效数字,或说x*精确到该位。
6.绝对误差的运算:)()()(2121x x x x εεε+=± )()()(122121x x x x x x εεε+≈22122121+=x x x x x x x )()()(εεε (f(x))()(x)f x εε'≈四.实验内容1. 计算I n=e 1-⎰10nxe x 2dx (n=0,1,...)并估计误差。
解: >> I0 = exp(-1)*quad('(x.^0).*exp(x.^2)',0,1,10^(-10));>> vpa(I0,10) ans =.5380795069>> I1= exp(-1)*quad('(x.^1).*exp(x.^2)',0,1,10^(-10)); >> vpa(I1,10) ans =.3160602794>> I2 = exp(-1)*quad('(x.^2).*exp(x.^2)',0,1,10^(-10)); >> vpa(I2,10) ans =.2309602465>> I3 = exp(-1)*quad('(x.^3).*exp(x.^2)',0,1,10^(-10)); >> vpa(I3,10) ans =.1839397206>> I4 = exp(-1)*quad('(x.^4).*exp(x.^2)',0,1,10^(-10)); >> vpa(I4,10) ans =.1535596302>> I5 = exp(-1)*quad('(x.^5).*exp(x.^2)',0,1,10^(-10)); >> vpa(I5,10) ans =.1321205588>> I6 = exp(-1)*quad('(x.^6).*exp(x.^2)',0,1,10^(-10)); >> vpa(I6,10) ans =.1161009245>> I7 = exp(-1)*quad('(x.^7).*exp(x.^2)',0,1,10^(-10)); >> vpa(I7,10) ans =.1036383235>> I8 = exp(-1)*quad('(x.^8).*exp(x.^2)',0,1,10^(-10)); >> vpa(I8,10) ans =.9364676413e-1>> I9 = exp(-1)*quad('(x.^9).*exp(x.^2)',0,1,10^(-10)); >> vpa(I9,10) ans =.8544670595e-1 2.计算x255的值。
数值分析第一次上机练习实验报告——Lagrange 插值与三次样条插值一、 问题的描述设()2119f x x =+, []1,1x ∈-,取15iix =-+,0,1,2,...,10i =.试求出10次Lagrange 插值多项式()10L x 和三次样条插值函数()S x (采用自然边界条件),并用图画出()f x ,()10L x ,()S x .二、 方法描述——Lagrange 插值与三次样条插值我们取15i ix =-+,0,1,2,...,10i =,通过在i x 点的函数值()2119i i f x x =+来对原函数进行插值,我们记插值函数为()g x ,要求它满足如下条件:()()21,0,1,2,...,1019i i i g x f x i x ===+ (1)我们在此处要分别通过Lagrange 插值(即多项式插值)与三次样条插值的方法对原函数()2119f x x=+进行插值,看两种方法的插值结果,并进行结果的比较。
10次的Lagrange 插值多项式为:()()10100i i i L x y l x ==∑ (2)其中:()21,0,1,2,...,1019i i iy f x i x ===+ 以及()()()()()()()()()011011......,0,1,2,...,10......i i n i i i i i i i n x x x x x x x x l x i x x x x x x x x -+-+----==----我们根据(2)进行程序的编写,我们可以通过几个循环很容易实现函数的Lagrange 插值。
理论上我们根据区间[]1,1-上给出的节点做出的插值多项式()n L x 近似于()f x ,而多项式()n L x 的次数n 越高逼近()f x 的精度就越好。
但实际上并非如此,而是对任意的插值节点,当n →+∞的时候()n L x 不一定收敛到()f x ;而是有时会在插值区间的两端点附近会出现严重的()n L x 偏离()f x 的现象,即所谓的Runge 现象。
数值分析实验指导书考核标准:及格:独立完成12—15题,其中八组实验中每组至少做1题; 中: 独立完成16—23题,其中八组实验中每组至少做1题; 良: 独立完成24—31题,其中八组实验中每组至少做2题; 优: 独立完成32—40题,其中八组实验中每组至少做3题。
结束课程时,抽查上机考核。
实验一1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。
由于旅途的颠簸,大家都很疲惫,很快就入睡了。
第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。
第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。
1.2 当0,1,2,,100n =时,选择稳定的算法计算积分10d 10nxn xe I x e --=+⎰.1.3 绘制静态和动态的Koch 分形曲线问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5个结点的新的图形;在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替,再次形成新的图形,这时,图形中共有17个结点。
这种迭代继续进行下去可以形成Koch 分形曲线。
在迭代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。
Koch 分形曲线的绘制与算法设计和计算机实现相关。
图1.1 Koch 曲线的形成过程实验二2.1 小行星轨道问题:一天文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所示: P 1 P 2 P 3 P 4 P 5 X 坐标 53605 58460 62859 66662 68894 Y 坐标 6026 11179 16954 23492 68894 由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为:221234522210a x a xy a y a x a y +++++=现需要建立椭圆的方程以供研究。
实验一:数据的图形显示一、实验目的通过本实验,掌握MiniTAB基本使用方法,如何在MiniTAB使用图形显示及数据分析。
二、实验内容和要求模拟研究一种新的,完全的有机化合物来替代CCA(一种目前工厂常用的用来减少木材腐烂和虫蛀危害的防腐剂),使得既能够保持木材的质量,又要消除公众利益团体对产品的质疑。
在研究中,你企图模拟CCA 和新的有机化合物在60 年的时间中保护木材的功效。
同样规格的松木板被用来实验这两种防腐剂,在实验过程中使用 3 种不同标准饱和度的溶液,并把木材放置在老化容器中。
然后木板再被用来测试它的最大负载量,以用来查看不同的方案是如何保护木材的。
三、实验主要仪器设备和材料电脑,MiniTAB软件四、实验方法、步骤及结果测试见附录一五、实验报告要求认真按照附录一的步骤,单独完成,并当堂回答以下的思考题,上机结束后将本报告交实验室。
六、思考题1, 通过本节的图形输出与显示,为什么说已经显示了CCA一直表现的比Organic(有机混合物)好?答:因为从图中点可以看出,CCA样本的强度值总体上比Organic更高。
由此推算出CCA表现的比Organic(有机混合物)好。
2,你能顺利地改变工作表数据替换变量吗?如果能,叙述一下你的操作方法?如果不能,原因在哪里?答:可以。
在开放数据库互连(ODBC)情况下,改变工作表数据是允许的。
具体操作方法:选择Editor>Create Similar Graph将允许你替换掉任何用来创建图形的变量,而且不用在图形数据源对话框中重新输入信息,而且也不会丢失任何先前所做过的更改。
3,通过本节学习,你主要学习到了什么?答:我主要学习到怎样通过多组数据创建散点图,重新设置变量,使得图形显示更容易去分析,得到我们想要的实验结果。
同时,我也知道怎样去改变工作表数据替换变量。
实验二:数据的输入/输出与数据分析一、实验目的通过本实验,掌握如何在MiniTAB使用Excel数据表、如何输入/输出数据,以及利用MiniTAB进行方差分析和回归分析。
“数值计算方法”上机实验指导书实验一 误差分析实验1.1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=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的全部根;而函数 p o l y (vb = 的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
“数值计算方法”上机实验指导书实验一 误差分析实验1.1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=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的全部根;而函数p o l y (vb = 的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
如果扰动项的系数ε很小,我们自然感觉(1.1)和(1.2)的解应当相差很小。
计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?(2)将方程(1.2)中的扰动项改成18x ε或其它形式,实验中又有怎样的现象出现?(3)(选作部分)请从理论上分析产生这一问题的根源。
注意我们可以将方程(1.2)写成展开的形式,)3.1(0),(1920=+-= x x x p αα同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系?为什么?你发现了什么现象,哪些根关于α的变化更敏感?思考题一:(上述实验的改进)在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考MATLAB 的帮助。
思考题二:(二进制产生的误差)用MATLAB 计算1001.010001-∑=i 。
结果居然有误差!因为从十进制数角度分析,这一计算应该是准确的。
实验反映了计算机内部的二进制本质。
思考题三:(一个简单公式中产生巨大舍入误差的例子)可以用下列式子计算自然对数的底数n n ne e )11(lim 1+==∞→ 这个极限表明随着n 的增加,计算e 值的精度是不确定的。
现编程计算n nn f )11()(+=与exp(1)值的差。
n 大到什么程度的时候误差最大?你能解释其中的原因吗?实验二 插值法实验2.1(多项式插值的振荡现象)问题提出:考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时,)(x L n 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数22511)(xx f += 实验内容:考虑区间[-1,1]的一个等距划分,分点为n i ni x i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为∑=+=ni i j n x l x x L 02)(2511)( 其中的n i x l i ,,2,1,0),( =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数x x g x x x h arctan )(,1)(4=+= 重复上述的实验看其结果如何。
(3)区间[a,b]上切比雪夫点的定义为1,,2,1,)1(2)12(c o s 22+=⎪⎪⎭⎫ ⎝⎛+--++=n k n k a b a b x k π 以121,,+n x x x 为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。
实验2.2(样条插值的收敛性)问题提出:多项式插值是不收敛的,即插值的节点多,效果不一定就好。
对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。
实验内容:请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。
考虑实验2.1中的函数或选择其他你有兴趣的函数,可以用MATLAB 的函数“spline ”作此函数的三次样条插值。
实验要求:(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。
分析所得结果并与拉格朗日多项式插值比较。
(2)样条插值的思想是早产生于工业部门。
作为工业应用的例子考虑如下问题:某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:思考题一:(二维插值)在一丘陵地带测量高程,x和y方向每隔100米测一个点,得高程数据如下。
试用MATLAB的二维插值函数“interp2”进行插值,并由此找出最高点和该点实验三 函数逼近与曲线拟合实验3.1(曲线逼近方法的比较)问题提出:曲线的拟合和插值,是逼近函数的基本方法,每种方法具有各自的特点和特定的适用范围,实际工作中合理选择方法是重要的。
实验内容:考虑实验2.1中的著名问题。
下面的MATLAB 程序给出了该函数的二次和三次拟合多项式。
x=-1:0.2:1;y=1/(1+25*x.*x);xx=-1:0.02:1;p2=polyfit(x,y,2);yy=polyval(p2,xx);plot(x,y ,’o’,xx,yy);xlabel(‘x’);ylabel(‘y’);hold on;p3=polyfit(x,y,3);yy=polyval(p3,xx);plot(x,y,’o’,xx,yy);hold off;适当修改上述MATLAB 程序,也可以拟合其他你有兴趣的函数。
实验要求:(1)将拟合的结果与拉格朗日插值及样条插值的结果比较。
(2)归纳总结数值实验结果,试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。
思考题一:(病态)考虑将[0,1]30等分节点,用多项式51x x y +++= 生成数据,再用polyfit 求其3次、5次、10次、15次拟合多项式,并分析误差产生的原因。
实验四 数值积分与数值微分实验4.1 (高斯数值积分方法用于积分方程求解)问题提出:线性的积分方程的数值求解,可以被转化为线性代数方程组的求解问题。
而线性代数方程组所含未知数的个数,与用来离散积分的数值方法的节点个数相同。
在节点数相同的前提下,高斯数值积分方法有较高的代数精度,用它通常会得到较好的结果。
实验内容:求解第二类Fredholm 积分方程b t a t f ds s y s t k t y ba ≤≤+=⎰),()(),()( 首先将积分区间[a,b]等分成n 份,在每个子区间上离散方程中的积分就得到线性代数方程组。
实验要求:分别使用如下方法,离散积分方程中的积分1.复化梯形方法;2.复化辛甫森方法;3.复化高斯方法。
求解如下的积分方程。
1)t t e ds s y e e t y --=⎰10)(12)(,方程的准确解为t e ; 2)t t st e e ds s y e t y +-+=⎰210211)()(,方程的准确解为t e ; 比较各算法的计算量和误差以分析它们的优劣。
实验4.2(高维积分数值计算的蒙特卡罗方法)问题提出:高维空间中的积分,如果维数不很高且积分区域是规则的或者能等价地写成多重积分的形式,可以用一元函数积分的数值方法来计算高维空间的积分。
蒙特卡罗方法对计算复杂区域甚至不连通的区域上的积分并没有特殊的困难。
实验内容:对于一般的区域Ω,计算其测度(只要理解为平面上的面积或空间中的体积)的一般方法是:先找一个规则的区域A 包含Ω,且A 的测度是已知的。
生成区域A 中m 个均匀分布的随机点m i p i ,,2,1, =,如果其中有n 个落在区域Ω中,则区域Ω的测度m(Ω)为n/m 。
函数f(x)在区域Ω上的积分可以近似为:区域Ω的测度与函数f(x)在Ω中n 个随机点上平均值的乘积,即∑⎰Ω∈Ω⨯Ω≈k p k p f n m dx x f )(1)()( 实验要求:假设冰琪淋的下部为一锥体而上面为一半球,考虑冰琪淋体积问题:计算锥面222y x z +=上方和球面1)1(222=-++z y x 内部区域的体积。
如果使用球面坐标,该区域可以表示为如下的积分:⎰⎰⎰4/0cos 20202sin πϕπθρϕϕρd d d用蒙特卡罗方法可以计算该积分。
另一方面,显然这样的冰琪淋可以装在如下立方体的盒子里 20,11,11≤≤≤≤-≤≤-z y x而该立方体的体积为8。
只要生成这个盒子里均匀分布的随机点,落入冰琪淋锥点的个数与总点数之比再乘以8就是冰琪淋锥的体积。
比较两种方法所得到的结果。
类似的办法可以计算复杂区域的测度(面积或体积)。
试求由下列关系所界定区域的测度:⎪⎩⎪⎨⎧≥≤≤≤-≤≤≤≤0)sin(31,21,10)1(y z y e z y x x⎪⎩⎪⎨⎧-≥≤+≤≤-≤≤22941,31)2(33x e y y x y x⎪⎩⎪⎨⎧≤+-≤+≤≤≤≤≤≤1sin 10,10,10)3(2x e z x z y x z y x实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性)问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。