数值分析实验(2)word版本
数值分析实验报告2

实验报告实验项目名称函数逼近与快速傅里叶变换实验室数学实验室所属课程名称数值逼近实验类型算法设计实验日期班级学号姓名成绩512*x^10 - 1280*x^8 + 1120*x^6 - 400*x^4 + 50*x^2 - 1并得到Figure,图像如下:实验二:编写程序实现[-1,1]上n阶勒让德多项式,并作画(n=0,1,…,10 在一个figure中)。
要求:输入Legendre(-1,1,n),输出如a n x n+a n-1x n-1+…多项式。
在MATLAB的Editor中建立一个M-文件,输入程序代码,实现勒让德多项式的程序代码如下:function Pn=Legendre(n,x)syms x;if n==0Pn=1;else if n==1Pn=x;else Pn=expand((2*n-1)*x*Legendre(n-1)-(n-1)*Legendre(n-2))/(n);endx=[-1:0.1:1];A=sym2poly(Pn);yn=polyval(A,x);plot (x,yn,'-o');hold onend在command Windows中输入命令:Legendre(10),得出的结果为:Legendre(10)ans =(46189*x^10)/256 - (109395*x^8)/256 + (45045*x^6)/128 - (15015*x^4)/128 + (3465*x^2)/256 - 63/256并得到Figure,图像如下:实验三:利用切比雪夫零点做拉格朗日插值,并与以前拉格朗日插值结果比较。
在MATLAB的Editor中建立一个M-文件,输入程序代码,实现拉格朗日插值多项式的程序代码如下:function [C,D]=lagr1(X,Y)n=length(X);D=zeros(n,n);D(:,1)=Y';for j=2:nfor k=j:nD(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1));endendC=D(n,n);for k=(n-1):-1:1C=conv(C,poly(X(k)));m=length(C);C(m)= C(m)+D(k,k);end在command Windows 中输入如下命令:clear,clf,hold on;k=0:10;X=cos(((21-2*k)*pi)./22); %这是切比雪夫的零点Y=1./(1+25*X.^2);[C,D]=lagr1(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.01:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到Figure ,图像如下所示:比较后发现,使用切比雪夫零点做拉格朗日插值不会发生龙格现象。
数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
数值分析实验报告二

数值实验报告二一、实验名称解线性方程组的列主元素高斯消去法和LU 分解法二、实验目的通过数值实验,从中体会解线性方程组选主元的必要性和LU 分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。
三、实验内容解下列两个线性方程组(1) ⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--11134.981.4987.023.116.427.199.103.601.3321x x x (2) ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----15900001.582012151526099999.23107104321x x x x 四、算法描述1、 列主元素高斯消去法记: ij ij a a =1)( (i, j = 1,2,3n )i i b b =1)( (i = 1,2,3n )消元过程:对于k = 1,2,3n(1) 选行号k i ,使)()(max k i ni k k k i k k a a ≤≤=。
(2) 交换)(k kj a 与)(k j i k a (j = k, k+1,k+2n )以及)()(k i k k k b b 与所含的数值。
(3)对于i = k, k+1,k+2n ,计算)()(k kkk ik ik a a m =)()()1(k kj ik k ij k ij a m a a -=+ (j = k, k+1,k+2n ))()()1(k k ik k i k i b m b b -=+回代过程:)(n nnn n a b x = )()1)()(/(k kk j n k j k kj k k k a x a a x ∑+=-= (k = n-1, n-2, n-3 1 )在此算法中的)(k k i k a 称为第k 个列主元素,它的数值总要被交换到第k 个主对角线元素的位置上。
2、 LU 分解法通过MATLAB 自有的函数,把系数矩阵A 分解成A=LU ,其中:L 是下三角矩阵,U 是上三角矩阵,这时方程组Ax=b 就可以分解成两个容易求解的三角形方程组Ly=b ,Ux=y 。
数值分析实验二

内江师范学院数值分析实验报告册编制张莉审定牟廉明专业:班级:级班学号:姓名:数学与信息科学学院2013年9月说明一、学生在做实验之前必须要准备实验,主要包括预习与本次实验相关的理论知识,熟练与本次实验相关的软件操作,收集整理相关的实验参考资料,要求学生在做实验时能带上充足的参考资料;若准备不充分,则学生不得参加本次实验,不得书写实验报告;二、要求学生要认真做实验,主要是指不得迟到、早退和旷课,在做实验过程中要严格遵守实验室规章制度,认真完成实验内容,极积主动地向实验教师提问等;三、各个实验按照学生水平分别设置了A、B、C、D四个等级,其中对应的难度系数为1、0.8、0.7、0.6,也可根据实际完成情况制定相应地的难度系数,但总体保证难度排序为A级难度最大,B级次之,C级较易,D级最简单。
四、学生可以根据自己对各个实验涉及到的知识点掌握的程度自由选取A、B、C、D等级的实验题目。
五、学生要认真工整地书写实验报告,实验报告的内容要紧扣实验的要求和目的,不得抄袭他人的实验报告;四、根据实验准备、实验态度、实验报告的书写、实验报告的内容进行综合评定,并给出实验成绩评定分。
实验名称: 实验二 插值与拟合 指导教师: 吴开腾 张莉 实验时数: 4 实验设备:安装了Matlab 、C ++、VF 软件的计算机 实验日期:2013年 10 月 23、30 日 实验地点: 第五教学楼北902 实验目的:1. 掌握插值方法的基本思想和基本步骤,能够根据实际问题选用适当地插值方法进行数值实验,并从实验过程中理解各类插值方法之间的了解与区别。
2. 理解各类插值方法优缺点,并能自行编程求解。
3. 理解插值方法与数据拟合的区别,掌握数据拟合方法解决实际问题的基本步骤和求解理论,并能通过数值实验进行验证。
实验准备:1. 在开始本实验之前,请回顾教科书的相关内容;2. 需要一台准备安装Windows XP Professional 操作系统和装有数学软件的计算机。
数值分析实验报告二2汇总

title('数据点(xi,yi)和牛顿插值曲线y=f(x)的图形')
运行结果:
实验结果分析:
最小二乘法拟合的曲线误差最小。
也可以得到三图合一的图像:
在以上命令的基础上
运行命令plot(x1,y1,'r*',x,y,'b-',t,p1,'k-',x,P2,'y-')
% f积分函数
% a/b:积分上下限
% tol:积分误差
% R:Romberg积分值
% k:二分次数
k=1;
h=b-a;
%第一步
T(k,1)=h/2*(f(a)+f(b));
err=1;
whileerr>=eps
T(k,k)= Tห้องสมุดไป่ตู้k,1);
h=h/2;
%第二步求梯形值T0
temp=0;
i=1;
whilei<2^k
实验结果分析:
本题用了三种方法计算,虽然三种方法的结果差别不大,但得到结果的过程不同,每个方法都有其优缺点。
成绩评定
签字:年月日
-3002399751579999/9007199254740992*x^3-311/1125899906842624*x^2+4128299658423301/562949953421312*x-2533274790396013/281474976710656
拉格朗日插值
实验步骤:
11级数值分析2实验项目

数值分析2实验项目实验一 简单迭代法与加速方法一、目的与要求:1、掌握求解非线性方程实根的简单迭代法的编程运算2、会分析迭代步数,设计容许误差二、实验内容:1、方程324100x x +-=可以等价化成以下三种形式:(i) 1/210(4)x x x =- (ii) 1/210()4x x =+ (iii) 32241038x x x x x x+-=-+ 针对三种等价形式给出三种不同的简单迭代格式并使用每种格式计算方程在区间[1,2]上的解,初值选为1.5,容许误差选为1.0E-5,即510-;分析每种格式的收敛性;分析收敛格式的迭代步数与计算时间.2、结合上述问题中(ii)相应的迭代格式,利用Stenffenson 迭代法求原方程的解。
初值选为1.5,容许误差选为1.0E-5,分析迭代步数与计算时间,并与上述简单迭代法作比较.实验二 Newton 迭代法一、目的与要求:掌握求解非线性方程实根的Newton 切线法的编程运算二、实验内容:1、用Newton 切线法求xx e -=在0.5附近的根,2、用Newton 切线法求方程310x x --=在1.5附近的一个根. (选做)3、用Newton 切线法计算3k =,4k =时,方程2((3)0k x x -=在1.3附近的根以及2.5附近的根,比较计算两根时的迭代次数,并与理论结论作比较. 实验三 Newton 下山法与重根加速法一、目的与要求:掌握求解非线性方程实根的Newton 下山法与重根加速法的编程运算二、实验内容:1、分别使用Newton 切线法与Newton 下山法求解方程310x x --=在 1.5x =附近的根,但是初值选为0.6x =,根据计算结果,验证下山法在初值选取范围上的优越性。
2、分别使用Newton 切线法与重根加速法计算3k =,4k =时,方程2((3)0k x x -=在1.3附近的根,在相同的容许误差下,比较两种方法的计算时间与迭代次数.实验四 解非线性方程组的Newton 迭代法一、目的与要求:掌握求解非线性方程方程组的Newton 迭代法编程运算二、实验内容:使用Newton 迭代法求解非线性方程组122212230450x x x x +-=⎧⎨+-=⎩,容许误差选为1.0E-5,给出初值分别选取为(1.5,1.0),(2.0,2.0),(1000,1000)时迭代步数,并分析迭代步数之间差别的原因.实验五 Euler 方法和梯形方法一、目的与要求:掌握求解一阶常微分方程初值问题Euler 方法和梯形方法编程运算二、实验内容:1. 分别使用Euler 方法、梯形方法和预估-校正方法在步长选为1/10时计算一阶常微分方程初值问题⎪⎩⎪⎨⎧=<<++-=1)0(110,1y x y y dx d (该问题的精确解为x e x y x +=-)(), 将误差(精确解与数值解的差)列表, 并画出精确解与数值解的函数图象.2. 使用Euler 方法和梯形方法在步长选为1/8,1/16,1/32时分别计算下述一阶常微分方程初值问题'()4(0,1](0)1y x x y ⎧=∈⎪⎨=⎪⎩(该问题的精确解为22()(1)y x x =+) 给出(1)y 的近似值与误差,将误差(精确解与数值解的差)列表,并画出精确解与数值解的函数图象.(选作)实验六 经典Runge-kutta 方法一、目的与要求:掌握求解一阶常微分方程初值问题经典Runge-kutta 方法编程运算二、实验内容:1.用经典Runge-kutta 方法在步长选为1/10时计算一阶常微分方程初值问题⎪⎩⎪⎨⎧=<<++-=1)0(110,1y x y y dx d (该问题的精确解为x e x y x +=-)(), 将误差(精确解与数值解的差)列表, 并画出精确解与数值解的函数图象. 实验七 四阶Adama 显式和隐式方法一、目的与要求:掌握求解一阶常微分方程初值问题四阶Adama 显式和隐式方法编程运算二、实验内容:1.分别用四阶Adama 显式和隐式方法在步长选为1/10时计算一阶常微分方程初值问题⎪⎩⎪⎨⎧=<<++-=1)0(110,1y x y y dx d (该问题的精确解为x e x y x +=-)(), 将误差(精确解与数值解的差)列表, 并画出精确解与数值解的函数图象. 实验八 计算矩阵主特征值及主特征向量(选作)一、目的与要求:掌握求解矩阵主特征值及主特征向量的改进幂法编程运算二、实验内容:用改进幂法求解矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1634310232的主特征值及主特征向量,并列表.。
数值分析实验(2.3.5章)

试验2.1 多项式插值的振荡现象实验目的:观察多项式插值的振荡现象,了解多项式的次数与逼近效果的关系。
实验内容:问题提出:考虑在一个固定的区间上用插值逼近一个函数。
显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。
Runge 给出的一个例子是极著名并富有启发性的。
设区间[-1,1]上的函数225x11)x (+=f ,考虑区间[-1,1]上的一个等距划分,分点为n2i 1x i +-=,i=0,1,2,…,n则拉格朗日插值多项式为:)x (l 25x11)x (Ln i ni 2i∑=+=,其中的)x (l i ,i=0,1,2,…,n 是n 次拉格朗日插值基函数。
实验要求:1、选择不断增大的分点数目n=2,3,………,画出原函数)x (f 及插值多项式函数)x (Ln 在[-1,1]上的图像,比较并分析试验结果。
2、选择其他的函数,例如定义在区间[-5,5]上的函数4()1x h x x=+,()arctan g x x =,重复上述的实验看其结果如何。
实验步骤及结果分析:1、选择不断增大的分点数目n=2,3,4,5,6,7,8,9,10做)x (f 的拉格朗日插值多项式)x (Ln ,并与原函数值做比较,如下图所示。
观察图像可知:n=2,3时插值函数和原函数差别很大,n=4,5,6时插值函数与原函数的逼近程度相对较好,继续增加插值次数n ,插值函数在插值区域的中间部分收敛,而在这区间外是发散的,此外,n=7,9时在插值中间区域逼近效果不好。
因此,适当提高插值多项式次数,可以提高逼近的精度,但是次数太高反而产生相反的效果。
2、选择其他的函数进行插值。
原函数4()1x h x x=+,区间[-5,5],插值结果如下图:观察图像可知:低次插值时,插值效果不好。
n=7,8,9,10时,在区间[-2,2],插值函数与原函数逼近程度好,但在区间外插值函数发散。
数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。
本实验采用两种常见的求解方法二分法和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);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析实验(2)
实验二 插值法 P50
专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的
1、熟悉MATLAB 编程;
2、学习插值方法及程序设计算法。
二、实验题目
1、已知函数在下列各点的值为
试用4次牛顿插值多项式()4P x 及三次样条函数()S x (自然边界条件)对数据进行插值用图给出(){},,0.20.08,0,1,11,10i i i x y x i i =+=,()4P x 及()S x 。
2、在区间[]1,1-上分别取10,20n =用两组等距节点对龙格函数()2
1125f x x =
+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。
3、下列数据点的插值
可以得到平方根函数的近似,在区间[]0,64上作图 (1)用这9个点作8次多项式插值()8L x (2)用三次样条(第一边界条件)程序求()S x
从得到结果看在[]0,64上,哪个插值更精确;在区间[]0,1上,两种插值哪个更精确?
三、实验原理与理论基础
1、拉格朗日差值公式
)()(111k k
k k
k k x x x x y y y x L ---+
=++ 点斜式
k
k k
k k k k k
x x x x y x x x x y x L --+--=++++11111)( 两点式
2、n 次插值基函数
....,2,1,0,)()(0n j y x l y x L i j n
k k k j n ===∑=
n k x x x x x x x x x x x x x l n k n k k k k k ,...,1,0,)
()
(...
)
()
(...
)
()
()(1100=------=
--
3、牛顿插值多项式
...))(](,,[)](,[)()(102100100+--+++=x x x x x x x f x x x x f x f x P n ))...(](,...,[100---+n n x x x x x x f
)(],...,,[)()()(10x x x x f x P x f x R n n n n +=-=ω
4、三次样条函数
若函数],,[)(2b a C x S ∈且在每个小区间],[1+j j x x 上是三次多项式,其中,
b x x x a n =<<<=...10是给定节点,则称)(x S 是节点n x x x ,...,,10上的三次样条函数。
若在节点j x 上给定函数值),,...,2,1,0)((n j x f y j i ==并成立,,...,2,1,0,)(n j y x S i j ==则称)(x S 为三次样条插值函数。
5、三次样条函数的边界条件
(1)0)()(''''''00''====n n f x S f x S (2)'''00')(,)(n n f x S f x S == 四、实验内容 1、M 文件:
function [p]=Newton_Polyfit(X,Y) format long g r=size(X); n=r(2);
M=ones(n,n); M(:,1)=Y'; for i=2:n
for j=i:n
M(j,i)=(M(j,i-1)-M(j-1,i-1))/(X(j)-X(j-i+1));
end
end
p0=[zeros(1,n-1) M(1,1)];p=p0;
for i=1:n-1
p1=M(i+1,i+1).*poly(X(1:i));
p0=[zeros(1,n-i-1) p1];
p=p+p0;
end
3、M文件:
function f=Language(~,~,~)
%%求已知数据点的拉格朗日插值多项式
%%已知数据点的x坐标向量:x
%%已知数据点的y坐标向量:y
%%插值点的x坐标:x0
%%解得的拉格朗日插值多项式f
x=[0.0 0.4 0.8 1.2 1.6];
y=[0 0.428392 0.722101 0.910314 0.970348];
x0=[0.3 0.5];
syms t l;
if(length(x)==length(y))
n=length(x);
else
disp('x,y维数不一样');
return;
end
p=sym(0);
for i=1:n
l=sym(y(i));
for k=1:i-1
l=l*(t-x(k))/(x(i)-x(k));
end
for k=i+1:n
l=l*(t-x(k))/(x(i)-x(k));
end
p=p+1;
end
simplify(p);
f=subs(p,'t',x0);
f=vpa(f,6);
end
五、实验结果
1、
>> X=[0.2 0.4 0.6 0.8 1.0];
>> Y=[0.98 0.92 0.81 0.64 0.38];
>> [p]=Newton_Polyfit(X,Y);
>> Y2=polyval(p,X);
>> X1=0:0.01;1;
>> Y3=interp1(X,Y,X1,'spline');
>> plot(X,Y,'o',X,Y2,'r',X1,Y3,'g')图像:
2、
>> X=-1:0.01:1;
>> Y=1./(1+25*X.^2);
>> X1=-1:0.2:1;
>> Y1=1./(1+25*X1.^2);
>> Y2=interp1(X1,Y1,X,'linear');
>> Y3=interp1(X1,Y1,X,'spline');
>> subplot(211)
>> plot(X,Y,X,Y2,'r-',X,Y3,'g-')
图像:
3、
>> x=[0;1;4;9;16;25;36;49;64];
>> y=0:1:8;
>> x0=0:0.1:64;
>> f=Language(x,y,x0);
>> Y=interp1(x,y,x0,'spline');
>> Y1=sqrt(x0);
>> plot(x0,Y1,x0,f,'g',x0,Y,'r')
图像:
六、实验结果分析与小结
1、通过这次实习,我学会了用matlab设计程序并运行绘制出图形。
根据已知的点的信息用牛顿插值法、三次样条插值法、拉格朗日插值法等插值方法来求
得近似函数,在运行出图形时可以很直观地看出近似函数的精确度哪个更好。
使用matlab来处理数学问题确实很方便,使我对matlab的很多功能也有了不少的了解,知道了最基本最常用的术语怎么来表达,同时让我对这几个插值方法的算法更熟悉。
2、不过,使用matlab进行程序设计对我来说确实有点难度,不太会编写函数,特别是涉及到专门的函数,matlab中已有的函数,不太会调用,查一下资料看到别人如何表示我也不是太懂,现在用matlab写作业需要很长时间,而且还参考别人是如何写函数的,自己只是稍作修改来运行,出现问题也不太会修改。
以后实习多练习,学会编写程序,学会调用matlab内部函数,了解更多。