数值分析上机实验

合集下载

数值分析上机实验报告

数值分析上机实验报告

实验报告一题目: (绪论) 非线性方程求解及误差估计摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法、Newton 法和改进的Newton 法。

可以节省计算机的计算时间,还能减小不必要的误差。

前言:(目的和意义)掌握二分法与Newton 法的基本原理、应用以及熟练掌握用MATLAB 求函数积分 数学原理:(1)函数的调用格式:quadl(filename,a,b,tol,trace)其中filename 是调用函数名,a 和b 分别为定积分的下限和上限。

用来控制积分精度。

(2)秦九韶算法: S n =a nS k =xS k+1+a k (k=n-1,n-2,...,0), P n (x)=S 0 程序设计:例1.1 计算积分de x xx110利用MATLAB ,下面给出主程序>>g=inline('x.^10.*exp(x-1)'); %定义一个语句函数g(x)=exp(x^10*exp(x-1)) I=quadl(g,0,1) I =0.0098例1.9 秦九韶算法a 0=3,a k=2a k-1+3,Pn(x)=a n x^n+a n-1x^(n-1)+...+a1x+a0求I1=P100(0.5),I2=P150(13)>>x=input('x=');n=input('n=');a=3;for i=1:na=2*a+3;ends=z;b=(a-3)/2;for m=1:100s=x*s+b;b=(b-3)/2;enddisp(s);>>x=0.5n=100600.0000>>x=3n=1004.7039e+078结果分析和讨论:结论:对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。

数值分析2024上机实验报告

数值分析2024上机实验报告

数值分析2024上机实验报告数值分析是计算数学的一个重要分支,它研究如何用数值方法来解决数学问题。

在数值分析的学习过程中,学生需要通过上机实验来巩固理论知识,并学会使用相应的数值方法来解决实际问题。

本篇报告将详细介绍2024年度数值分析上机实验的内容和结果。

一、实验内容2024年度数值分析上机实验分为四个部分,分别是:方程求根、插值与拟合、数值积分和常微分方程的数值解。

1.方程求根这部分实验要求使用数值方法求解给定的非线性方程的根。

常见的数值方法有二分法、牛顿法、割线法等。

在实验过程中,我们需要熟悉这些数值方法的原理和实现步骤,并对不同方法的收敛性进行分析和比较。

2.插值与拟合这部分实验要求使用插值和拟合方法对给定的一组数据进行拟合。

插值方法包括拉格朗日插值、牛顿插值等;拟合方法包括最小二乘拟合、多项式拟合等。

在实验中,我们需要熟悉插值和拟合方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

3.数值积分这部分实验要求使用数值方法计算给定函数的积分。

常见的数值积分方法有梯形法则、辛普森法则、龙贝格积分等。

在实验过程中,我们需要熟悉这些数值积分方法的原理和实现步骤,并对不同方法的精度和效率进行比较。

4.常微分方程的数值解这部分实验要求使用数值方法求解给定的常微分方程初值问题。

常见的数值方法有欧拉法、改进的欧拉法、四阶龙格-库塔法等。

在实验中,我们需要熟悉这些数值解方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

二、实验结果在完成2024年度数值分析上机实验后,我们得到了以下实验结果:1.方程求根我们实现了二分法、牛顿法和割线法,并对比了它们的收敛速度和稳定性。

结果表明,割线法的收敛速度最快,但在一些情况下可能会出现振荡;二分法和牛顿法的收敛速度相对较慢,但稳定性较好。

2.插值与拟合我们实现了拉格朗日插值和最小二乘拟合,并对比了它们的拟合效果和精度。

结果表明,拉格朗日插值在小区间上拟合效果较好,但在大区间上可能出现振荡;最小二乘拟合在整体上拟合效果较好,但可能出现过拟合。

数值分析第一次上机练习实验报告

数值分析第一次上机练习实验报告

数值分析第一次上机练习实验报告一、实验目的本次实验旨在通过上机练习,加深对数值分析方法的理解,并掌握实际应用中的数值计算方法。

二、实验内容1. 数值计算的基本概念和方法在本次实验中,我们首先回顾了数值计算的基本概念和方法。

数值计算是一种通过计算机进行数值近似的方法,其包括近似解的计算、误差分析和稳定性分析等内容。

2. 方程求解的数值方法接下来,我们学习了方程求解的数值方法。

方程求解是数值分析中非常重要的一部分,其目的是找到方程的实数或复数解。

我们学习了二分法、牛顿法和割线法等常用的数值求解方法,并对它们的原理和步骤进行了理论学习。

3. 插值和拟合插值和拟合是数值分析中常用的数值逼近方法。

在本次实验中,我们学习了插值和拟合的基本原理,并介绍了常见的插值方法,如拉格朗日插值和牛顿插值。

我们还学习了最小二乘拟合方法,如线性拟合和多项式拟合方法。

4. 数值积分和数值微分数值积分和数值微分是数值分析中的两个重要内容。

在本次实验中,我们学习了数值积分和数值微分的基本原理,并介绍了常用的数值积分方法,如梯形法和辛卜生公式。

我们还学习了数值微分的数值方法,如差商法和牛顿插值法。

5. 常微分方程的数值解法常微分方程是物理和工程问题中常见的数学模型,在本次实验中,我们学习了常微分方程的数值解法,包括欧拉法和四阶龙格-库塔法。

我们学习了这些方法的步骤和原理,并通过具体的实例进行了演示。

三、实验结果及分析通过本次实验,我们深入理解了数值分析的基本原理和方法。

我们通过实际操作,掌握了方程求解、插值和拟合、数值积分和数值微分以及常微分方程的数值解法等数值计算方法。

实验结果表明,在使用数值计算方法时,我们要注意误差的控制和结果的稳定性。

根据实验结果,我们可以对计算结果进行误差分析,并选择适当的数值方法和参数来提高计算的精度和稳定性。

此外,在实际应用中,我们还需要根据具体问题的特点和条件选择合适的数值方法和算法。

四、实验总结通过本次实验,我们对数值分析的基本原理和方法有了更加深入的了解。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告摘要:本报告是对数值分析课程上机实验的总结和分析,涵盖了多种算法和数据处理方法,通过对实验结果的分析,探究了数值计算的一般过程和计算的稳定性。

1. 引言数值计算是数学的一个重要分支,广泛应用于物理、金融、工程等领域。

本次实验是对数值分析课程知识的实际应用,通过上机实现算法,探究数值计算的可靠性和误差分析。

2. 实验方法本次实验中,我们实现了多种算法,包括:(1)牛顿迭代法求方程的根;(2)高斯消元法求线性方程组的解;(3)最小二乘法拟合数据点;(4)拉格朗日插值法估计函数值;(5)梯形公式和辛普森公式求积分近似值。

对于每个算法,我们都进行了多组数值和不同参数的实验,并记录了相关数据和误差。

在实验过程中,我们着重考虑了算法的可靠性和计算的稳定性。

3. 实验结果与分析在实验中,我们得到了大量的实验数据和误差分析,通过对数据的展示和分析,我们得到了以下结论:(1)牛顿迭代法求解非线性方程的根能够对算法的初始值和迭代次数进行适当的调整,从而达到更高的稳定性和可靠性。

(2)高斯消元法求解线性方程组的解需要注意到矩阵的奇异性和精度的影响,从而保证计算的准确性。

(3)最小二乘法拟合数据点需要考虑到拟合的函数形式和数据的误差范围,采取适当的数据预处理和拟合函数的选择能够提高计算的准确性。

(4)拉格朗日插值法估计函数值需要考虑到插值点的选择和插值函数的阶数,防止出现龙格现象和插值误差过大的情况。

(5)梯形公式和辛普森公式求积分近似值需要考虑到采样密度和拟合函数的选择,从而保证计算的稳定性和收敛速度。

4. 结论通过本次实验的分析和总结,我们得到了深入的认识和理解数值计算的一般过程和算法的稳定性和可靠性,对于以后的数值计算应用也提供了一定的指导和参考。

优质文档精选——数值分析上机实验报告

优质文档精选——数值分析上机实验报告

数值分析上机实验报告《数值分析》上机实验报告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.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验理学院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 现象。

数值分析上机实践报告

数值分析上机实践报告

数值分析上机实践报告一、实验目的本次实验主要目的是通过上机操作,加深对数值分析算法的理解,并熟悉使用Matlab进行数值计算的基本方法。

在具体实验中,我们将实现三种常见的数值分析算法:二分法、牛顿法和追赶法,分别应用于解决非线性方程、方程组和线性方程组的求解问题。

二、实验原理与方法1.二分法二分法是一种常见的求解非线性方程的数值方法。

根据函数在给定区间端点处的函数值的符号,不断缩小区间的长度,直到满足精度要求。

2.牛顿法牛顿法是求解方程的一种迭代方法,通过构造方程的泰勒展开式进行近似求解。

根据泰勒展式可以得到迭代公式,利用迭代公式不断逼近方程的解。

3.追赶法追赶法是用于求解三对角线性方程组的一种直接求解方法。

通过构造追赶矩阵,采用较为简便的向前追赶和向后追赶的方法进行计算。

本次实验中,我们选择了一组非线性方程、方程组和线性方程组进行求解。

具体的实验步骤如下:1.调用二分法函数,通过输入给定区间的上下界、截止误差和最大迭代次数,得到非线性方程的数值解。

2.调用牛顿法函数,通过输入初始迭代点、截止误差和最大迭代次数,得到方程组的数值解。

3.调用追赶法函数,通过输入追赶矩阵的三个向量与结果向量,得到线性方程组的数值解。

三、实验结果与分析在进行实验过程中,我们分别给定了不同的参数,通过调用相应的函数得到了实验结果。

下面是实验结果的汇总及分析。

1.非线性方程的数值解我们通过使用二分法对非线性方程进行求解,给定了区间的上下界、截止误差和最大迭代次数。

实验结果显示,根据给定的输入,我们得到了方程的数值解。

通过与解析解进行比较,可以发现二分法得到的数值解与解析解的误差在可接受范围内,说明二分法是有效的。

2.方程组的数值解我们通过使用牛顿法对方程组进行求解,给定了初始迭代点、截止误差和最大迭代次数。

实验结果显示,根据给定的输入,我们得到了方程组的数值解。

与解析解进行比较,同样可以发现牛顿法得到的数值解与解析解的误差在可接受范围内,说明牛顿法是有效的。

数值分析上机实验

数值分析上机实验

刘力辉 2010210804011.“画圆为方”问题也是古希腊人所提出几何三大难题中的另一个问题。

即求作一个正方形,使其面积等于已知圆的面积。

不妨设已知圆的半径为 R = 1,试用数值试验显示“画圆为方”问题计算过程中的误差。

(1)MATLAB 程序:y=pi^(1/2); % to generate 15-bit value of square root of pi b=1; d=1; for k=1:8 b=b*10;d=d/10; % b and d combined to control the digit of x x=d*fix(b*y); s(k)=x^3; l(k)=x; endformat long [l',s'](2)误差分析:2. 设,I x xd x n n=+⎰501由 x n = x n + 5 x n – 1 – 5 x n – 1 可得递推式 I n = – 5I n – 1 + 1/ n(1)从 I 0 尽可能精确的近似值出发,利用递推公式:I I nn n =-+-511 ( n = 1,2,…20)计算从 I 1 到 I 20 的近似值;(2)从 I 30 较粗糙的估计值出发,用递推公式:I I nn n -=-+11515 ( n= 30,29, …, 3, 2 )计算从I 1 到 I 20 的近似值;(3) 分析所得结果的可靠性以及出现这种现象的原因。

I 0 =dx x⎰+1051=ln (5+x )10|=ln 6-ln 5 所以I0≈0.18232155679395format longI0=log2(6)/log2(exp(1))-log2(5)/log2(exp(1)) % calculate the value of I0=ln6-ln5 for n=1:20I0=-5*I0+1/n; % recycling equation between I(n+1) and I(n) s(n)=I0; end s'则计算结果为:表1I1 0.0883922160302300 I11 0.0140713362538500 I2 0.0580389198488700 I12 0.0129766520640700 I3 0.0431387340890000 I13 0.0120398166027400 I4 0.0343063295550100 I14 0.0112294884148600 I5 0.0284683522249700 I15 0.0105192245923700 I6 0.0243249055418100 I16 0.0099038770381400 I7 0.0212326151481100 I17 0.0093041442210800 I8 0.0188369242594600 I18 0.0090348344501700 I9 0.0169264898137900 I19 0.0074574066965100 I10 0.0153675509310500I20 0.0127129665174600从计算的数据看出I 20=0.0127129665174600 > I 19=0.0074574066965100又I n 的积分范围为0~1,所以应该有I n >I n+1。

数值分析上机实践报告

数值分析上机实践报告

数值分析上机实践报告一、实验目的本实验的目的是通过编写数值分析程序,掌握解决数学问题的数值计算方法,并通过实际应用来检验其有效性和准确性。

具体包括以下几个方面的内容:1.掌握二分法和牛顿迭代法的基本原理和实现方法;2.熟悉利用矩阵的LU分解和追赶法解线性方程组的过程;3.通过具体的实例应用,比较不同方法的计算效果和精度。

二、实验内容本实验分为三个部分,每个部分包括一个具体的数学问题和相应的数值计算方法。

1.问题一:求方程f(x)=x^3-5x^2+10x-80=0的近似解。

在问题一中,我们通过二分法和牛顿迭代法来求解方程的近似解,并比较两种方法的精度和收敛速度。

2.问题二:用LU分解解线性方程组。

问题二中,我们通过矩阵的LU分解方法解线性方程组Ax=b,然后和直接用追赶法解线性方程组进行对比,验证LU分解的有效性和准确性。

三、实验结果及分析1.问题一的结果分析:通过二分法和牛顿迭代法求解方程f(x)=x^3-5x^2+10x-80=0的近似解,得到的结果如下:从结果来看,两种方法得到的近似解均与真实解x≈5非常接近。

但是,通过比较可以发现,牛顿迭代法的计算速度比二分法更快,迭代的次数更少。

因此,在需要高精度近似解的情况下,牛顿迭代法是一个更好的选择。

2.问题二的结果分析:通过LU分解和追赶法解线性方程组Ax=b,得到的结果如下:-用LU分解解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0;-用追赶法解线性方程组得到的结果为x1≈1.0,x2≈2.0,x3≈3.0。

从结果来看,两种方法得到的结果完全一致,而且与真实解非常接近。

这表明LU分解方法和追赶法均可以有效地解决线性方程组问题。

但是,在实际应用中,当方程组规模较大时,LU分解方法的计算复杂度较高,因此追赶法更加适用。

四、实验总结通过本实验,我掌握了二分法和牛顿迭代法以及LU分解和追赶法的基本原理和实现方法。

通过具体的数学问题实例应用,我比较了不同方法的计算效果和精度,得出以下结论:1.在求解函数的近似解时,牛顿迭代法相对于二分法具有更快的收敛速度和更高的计算精度;2.在解决线性方程组问题时,LU分解方法在计算准确性方面与追赶法相当,但在处理较大规模的问题时,计算复杂度较高,追赶法更适合。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告导言:本次上机实验主要是针对数值分析课程中的一些基本算法进行实验验证。

实验内容包括迭代法、插值法、数值积分和常微分方程的数值解等。

在实验过程中,我们将会使用MATLAB进行算法的实现,并对结果进行分析。

一、迭代法迭代法是解决函数零点、方程解等问题的常用方法。

我们将选择几个常见的函数进行迭代求根的实验。

(1)二分法二分法是一种简单而有效的迭代求根法。

通过函数在区间两个端点处的函数值异号来确定函数在区间内存在零点,并通过不断缩小区间来逼近零点。

(2)牛顿法牛顿法利用函数的一阶导数和二阶导数的信息来逼近零点。

通过不断迭代更新逼近值,可以较快地求得零点。

实验结果表明,对于简单的函数,这两种迭代法都具有很好的收敛性和稳定性。

但对于一些复杂的函数,可能会出现迭代失效或者收敛速度很慢的情况。

二、插值法插值法是在给定一些离散数据点的情况下,通过构造一个插值函数来逼近未知函数的值。

本实验我们将使用拉格朗日插值和牛顿插值两种方法进行实验。

(1)拉格朗日插值拉格朗日插值通过构造一个多项式函数来逼近未知函数的值。

该多项式经过离散数据点,并且是唯一的。

该方法简单易懂,但插值点越多,多项式次数越高,插值函数的精度也就越高。

(2)牛顿插值牛顿插值利用差商的概念,通过构造一个插值多项式来逼近未知函数的值。

与拉格朗日插值相比,牛顿插值的计算过程更加高效。

但同样要求插值点的选择要合理,否则可能出现插值函数不收敛的情况。

实验结果表明,这两种插值方法都能够很好地逼近未知函数的值。

插值点的选择对插值结果有很大的影响,过多或者过少的插值点都可能导致插值结果偏离真实函数的值。

三、数值积分数值积分是一种将定积分问题转化为数值求和的方法。

本实验我们将使用复合梯形求积法和复合辛普森求积法进行实验。

(1)复合梯形求积法复合梯形求积法将定积分区间等分为若干小区间,然后使用梯形公式对每个小区间进行近似求积,最后将结果相加得到整个定积分的近似值。

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

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

(完整版)哈工大-数值分析上机实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

前言:掌握二分法与Newton法的基本原理和应用。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=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'))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; else break end end endk;%给出迭代次数 x=x0;%给出解结果分析和讨论:1. 用二分法计算方程在[1,2]内的根。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告实验报告插值法与数值积分实验(数值计算方法,3学时)一实验目的1.掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。

2.掌握复化的梯形公式、辛扑生公式、牛顿-柯特斯公式计算积分。

3. 会用龙贝格公式和高斯公式计算积分。

二实验内容用拉格朗日插值公式计算01.54.1==y x 以及所对应的近似值。

用牛顿插值公式求)102(y 的近似值。

三实验步骤(算法)与结果1拉格朗日插值法:(C 语言版)#include "Stdio.h" #include "Conio.h"int main(void) {float X[20],Y[20],x; int n;void input(float *,float *,float *,int *); float F(float *,float *,float,int); input(X,Y,&x,&n);printf("F(%f)=%f",x,F(X,Y,x,n));getch(); return 0; }void input(float *X,float *Y,float *x,int *n) {int i;printf("Please input the number of the data:");scanf("%d",n);printf("\nPlease input the locate of each num:\n");for(i=0;i<*n;i++){scanf("%f,%f",X+i,Y+i);}printf("\nPlease input the chazhi:"); scanf("%f",x);}float F(float *X,float *Y,float x,int n){int i,j;float Lx,Fx=0;for(i=0;i<n;i++)< p="">{Lx=1;for(j=0;j<n;j++)< p="">{if(j!=i) Lx=Lx*((x-*(X+j))/(*(X+i)-*(X+j))); } Fx=Fx+Lx*(*(Y+i));}return Fx;}得出结果如图:所以Y(1.4)=3.7295252#include#define N 10double X[N], Y[N], A[N][N];int n;double Newton(double x);double f(double x);void main() {printf("请输入已知x与对应y=f(x)的个数: n = "); scanf("%d", &n);getchar();if(n>N||n<=0) {printf("由于该维数过于犀利, 导致程序退出!"); return;}printf("\n请输入X[%d]: ", n);for (int i=0; i<="" p="">scanf("%lf", &X[i]);getchar();printf("\n请输入Y[%d]: ", n);for (i=0; i<="" p="">scanf("%lf", &Y[i]);getchar();double x;printf("\n请输入所求结点坐标x = ");scanf("%lf", &x);getchar();printf("\nf(%.4lf)≈%lf\n\n", x, Newton(x));}double Newton(double x) {int i, j;// 求均差for (i =0; i<="" p="">A[i][0] = Y[i];for (i=1; i<="" p="">for (j =1; j<=i; j++)A[i][j] = (A[i][j-1] - A[i-1][j-1]) / (X[i] - X[i-j]); // 求结点double result = A[0][0];for (i=1; i<="">double tmp = 1.0;for (int j=0; j<="" p="">tmp *= (x - X[j]);result += tmp * A[i][i];}return result;}四实验收获与教师评语</n;j++)<></n;i++)<>。

《数值分析》上机实验报告

《数值分析》上机实验报告

数值分析上机实验报告《数值分析》上机实验报告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.9do{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.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

哈工大-数值分析上机实验报告

哈工大-数值分析上机实验报告

Emax= 0.70770085900503,0 此时由 Emax 可以看出,不选主元的结果应该可以说是不正确了,这是由机器误差引 起的。 当 10 20 时,不选主元和选主元的计算结果如下 NaN NaN NaN Emax=NaN, 0 不选主元时,程序报错: Warning: Divide by zero. 。这是因为机器计算的最小精度为 10-15,所以此时的 10 20 就认为是 0,故出现了错误现象。而选主元时则没有这种现象, 而且由 Emax 可以看出选主元时的结果应该是精确解。
x3 x 1 0
x0=1; x0=0.45, x0=0.65;
( x 1) 2 (2 x 1) 0
当 x0=0.45 时,计算结果为 x= 0.49999999999983; f(x)= -8.362754932994584e-014; k=4; 由 f(x)知结果满足要求,而且又迭代次数只有 4 次看出收敛速度很快,实际上该方程确实 有真解 x=0.5。 当 x0=0.65 时,计算结果为 x= 0.50000000000000; f(x)=0; k=9; 由 f(x)知结果满足要求,实际上该方程确实有真解 x=0.5,但迭代次数增多,实际上当取 x0〉0.68 时,x≈1,就变成了方程的另一个解,这说明 Newton 法收敛与初值很有关系, 有的时候甚至可能不收敛。
实验报告
结果分析和讨论: 例 用最小二乘法处理下面的实验数据 . xi fi 3 2.01 4 2.98 5 3.50 6 5.02 7 5.47 8 6.02 9 7.05
Hale Waihona Puke 并作出 f ( x) 的近似分布图。 分别采用一次,二次和五次多项式来拟合数据得到相应的拟合多项式为: y1=-0.38643+0.82750x ; y2=-1.03024+1.06893x-0.02012x2; y5=-50.75309+51.53527x-19.65947x2+3.66585x3-0.32886x4+0.01137x5; 分别作出它们的曲线图,图中点划线为 y1 曲线,实线为 y2 曲线,虚线为 y5 曲线。’x’为 给定的数据点。从图中可以看出并不是多项式次数越高越好,次数高了,曲线越能给定点 处和实际吻合,但别的地方就很差了。因此,本例选用一次和两次的多项式拟合应该就可 以了。

数值分析上机实验报告

数值分析上机实验报告

一、实验目的通过本次上机实验,掌握数值分析中常用的算法,如二分法、牛顿法、不动点迭代法、弦截法等,并能够运用这些算法解决实际问题。

同时,提高编程能力,加深对数值分析理论知识的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:MATLAB3. 实验工具:MATLAB数值分析工具箱三、实验内容1. 二分法求方程根二分法是一种常用的求方程根的方法,适用于连续函数。

其基本思想是:从区间[a, b]中选取中点c,判断f(c)的符号,若f(c)与f(a)同号,则新的区间为[a, c],否则为[c, b]。

重复此过程,直至满足精度要求。

2. 牛顿法求方程根牛顿法是一种迭代法,适用于可导函数。

其基本思想是:利用函数在某点的导数值,求出函数在该点的切线方程,切线与x轴的交点即为方程的近似根。

3. 不动点迭代法求方程根不动点迭代法是一种迭代法,适用于具有不动点的函数。

其基本思想是:从初始值x0开始,不断迭代函数g(x)的值,直至满足精度要求。

4. 弦截法求方程根弦截法是一种线性近似方法,适用于可导函数。

其基本思想是:利用两点间的直线近似代替曲线,求出直线与x轴的交点作为方程的近似根。

四、实验步骤1. 二分法求方程根(1)编写二分法函数:function [root, error] = bisection(a, b, tol)(2)输入初始区间[a, b]和精度要求tol(3)调用函数计算根:[root, error] = bisection(a, b, tol)2. 牛顿法求方程根(1)编写牛顿法函数:function [root, error] = newton(f, df, x0, tol)(2)输入函数f、导数df、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = newton(f, df, x0, tol)3. 不动点迭代法求方程根(1)编写不动点迭代法函数:function [root, error] = fixed_point(g, x0, tol)(2)输入函数g、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = fixed_point(g, x0, tol)4. 弦截法求方程根(1)编写弦截法函数:function [root, error] = secant(f, x0, x1, tol)(2)输入函数f、初始值x0和x1,以及精度要求tol(3)调用函数计算根:[root, error] = secant(f, x0, x1, tol)五、实验结果与分析1. 二分法求方程根以方程f(x) = x^2 - 2 = 0为例,输入初始区间[a, b]为[1, 3],精度要求tol 为1e-6。

数值分析实验(参考答案)

数值分析实验(参考答案)

数值分析上机实验学生姓名: 学号: 教师:实验1:1. 实验项目的性质和任务通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步理解。

2.教学内容和要求 1)对高阶多多项式201()(1)(2)(20)()k p x x x x x k ==---=-∏编程求下面方程的解 19()0p x x ε+=并绘图演示方程的解与扰动量ε的关系。

Matlab 程序:x=1:20;y=zeros(1,20); ve=zeros(1,21); plot(x,y,'o') hold on ; pause; for x=1:5ve(2)=10^(-x);e=roots(poly(1:20)+ve);plot(e,'*') hold on pause; end0510152025303540-20-15-10-5051015202)对2~20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组 n H x b =最后,用矩阵分解方法求解方程组,并分析计算结果。

Matlab 程序:for n=2:20; H=hilb(n); ca=cond(H,2) x=(1:n)'; b=H*x; [L,U]=lu(H); y=L\b;x1=U\yplot(x,x,'o',x1,x1,'*') hold on pause; end-500-400-300-200-100100200300400500-500-400-300-200-10001002003004005003)对函数 21()[1,1]125f x x x=∈-+的Chebyshev 点 (21)cos()1,2,...,12(1)kk x k n n π-==++编程进行Lagrange 插值,并分析插值结果。

Matlab 程序:function y=lagrangen(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i);s=0;for k=1:nL=1;for j=1:nif j~=kL=L*(z-x0(j))/(x0(k)-x0(j));endends=s+L*y0(k);endy(i)=s;endy;for n=5:20x=-1:0.01:1; y=1./(1+25*x.^2);plot(x,y,'r')hold onk=n+1:-1:1;x0=cos((2*k-1)*pi./(2*(n+1))),y0=1./(1+25*x0.^2);x=-1:0.01:1; y1=lagrangen(x0,y0,x);plot(x0,y0,'o',x,y1), pausehold off end-1-0.8-0.6-0.4-0.200.20.40.60.81-0.200.20.40.60.811.2-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81。

《数值分析》上机实验报告

《数值分析》上机实验报告

数值分析上机实验报告x k x k - f(X k) f (X k)《数值分析》上机实验报告1. 用Newt on法求方程X7-X4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001 )。

1.1理论依据:设函数在有限区间[a,b]上二阶导数存在,且满足条件1. f(x)f(b) 02. f(x)在区间[a, b]上不变号3f(x) = 0;4」f (c)〔f .(x) |,其中c是a,b中使mir(| f .(a), f .(b) |)达到的一个b -a则对任意初始近似值x0• [a,b],由Newton迭代过程込f(x k )X“ M(Xk) = Xk — T^,k = 0,1,2,3…f'(X k)所生的迭代序列 % [平方收敛于方程f(x)=0在区间[a,b]上的惟一解: 令7 4f(x)=x -28x 14, f (0.1) 0, f(1.9) ::0f (x) =7x6-112x3=7x3(x3-16) ::: 0f (x) =42x5-336x2=42x2(x3-8) :: 0f (1.9) f (1.9) 0故以1.9为起点x0 =1.9如此一次一次的迭代,逼近X的真实根。

当前后两个的差<=出寸,就认为求出了近似的根。

本程序用Newton法求代数方程(最高次数不大于10)在(a,b )区间的根//限制循环次数1.2 C 语言程序原代码:#i nclude<stdio.h> #in clude<math.h> mai n() {double x2,f,f1; double x1=1.9; // 取初值为 1.9do {x2=x1;f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x 仁 x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); printf("计算结果:x=%f\n",x1);}1.3运行结果:* D:\VC + +\EXERCIS E\Debu g\l1.4 MATLAB上机程序fun cti on y=Newt on( 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))v=epsd=1; breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey=奇异’endfun cti on y=df(x)y=7*x A6-28*4*x A3;Endfunction y=f(x) y=x A7-28*x A4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newto n('f,'df,x0,eps,M);>> vpa(x,7)1.5问题讨论:1•使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告数值分析上机实验报告一、引言数值分析是一门研究利用计算机进行数值计算的学科。

通过数值分析,我们可以使用数学方法和算法来解决实际问题,例如求解方程、插值和逼近、数值积分等。

本次上机实验旨在通过编程实现数值计算方法,并应用于实际问题中。

二、实验目的本次实验的目的是掌握数值计算方法的基本原理和实现过程,加深对数值分析理论的理解,并通过实际应用提高编程能力。

三、实验内容1. 数值求解方程首先,我们使用二分法和牛顿迭代法分别求解非线性方程的根。

通过编写程序,输入方程的初始值和精度要求,计算得到方程的根,并与理论解进行对比。

2. 数值插值和逼近接下来,我们使用拉格朗日插值和最小二乘法进行数据的插值和逼近。

通过编写程序,输入给定的数据点,计算得到插值多项式和逼近多项式,并绘制出插值曲线和逼近曲线。

3. 数值积分然后,我们使用梯形法和辛普森法进行定积分的数值计算。

通过编写程序,输入被积函数和积分区间,计算得到定积分的近似值,并与解析解进行比较。

四、实验步骤1. 数值求解方程(1)使用二分法求解非线性方程的根。

根据二分法的原理,编写程序实现二分法求解方程的根。

(2)使用牛顿迭代法求解非线性方程的根。

根据牛顿迭代法的原理,编写程序实现牛顿迭代法求解方程的根。

2. 数值插值和逼近(1)使用拉格朗日插值法进行数据的插值。

根据拉格朗日插值法的原理,编写程序实现数据的插值。

(2)使用最小二乘法进行数据的逼近。

根据最小二乘法的原理,编写程序实现数据的逼近。

3. 数值积分(1)使用梯形法进行定积分的数值计算。

根据梯形法的原理,编写程序实现定积分的数值计算。

(2)使用辛普森法进行定积分的数值计算。

根据辛普森法的原理,编写程序实现定积分的数值计算。

五、实验结果与分析1. 数值求解方程通过二分法和牛顿迭代法,我们成功求解了给定非线性方程的根,并与理论解进行了对比。

结果表明,二分法和牛顿迭代法都能够较好地求解非线性方程的根,但在不同的问题中,二者的收敛速度和精度可能会有所差异。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 绪论 (1)2 实验题目(一) (2)2.1 题目要求 (2)2.2 NEWTON插值多项式 (3)2.3 数据分析 (4)2.3.1 NEWTON插值多项式数据分析 (4)2.3.2 NEWTON插值多项式数据分析 (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.2 RUNGE-KUTTA 4阶算法 (13)4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14)总结 (16)附录A (17)1绪论数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。

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

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

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

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

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

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

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

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

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

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

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

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

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

最后感谢数值分析课程任课教师赵海良老师的悉心指导!2实验题目(一)2.1题目要求已知:a=-5,b=5, 以下是某函数f(x)的一些点(x k,y k), 其中x k=a+0.1(k-1) ,k=1,..,101 请用插值类方法给出函数f(x)的一个解决方案和具体结果。

并通过实验考虑下列问题(1)Ln(x)的次数n越高,逼近f(x)的程度越好?(2)高次插值收敛性如何?(3)如何选择等距插值多项式次数?(4)若要精度增高,你有什么想法?比如一定用插值吗?(5)逼近某个函数不用插值方式,有何变通之举?(6)函数之间的误差如何度量,逼近的标准又是什么?(7)如何比较好的使用插值多项式呢?x k =-5.0000:0.1:5.0000;y(x k)=y k=Columns 1 through 725.0000 24.0100 23.0400 22.0900 21.1600 20.2500 19.3600 Columns 8 through 1418.4900 17.6400 16.8100 16.0000 15.2100 14.4400 13.6900Columns 15 through 2112.9600 12.2500 11.5600 10.8899 10.2397 9.6093 8.9991 Columns 22 through 288.4092 7.8405 7.2941 6.7705 6.2693 5.7866 5.3144 Columns 29 through 354.8403 4.3522 3.8463 3.3402 2.8832 2.5554 2.4475 Columns 36 through 422.61543.0219 3.4920 3.7149 3.3232 2.0435 -0.1277 Columns 43 through 49-2.8066 -5.2470 -6.5469 -5.9893 -3.3862 0.7365 5.2312Columns 50 through 568.6985 10.0000 8.6985 5.2312 0.7365 -3.3862 -5.9893 Columns 57 through 63-6.5469 -5.2470 -2.8066 -0.1277 2.0435 3.3232 3.7149 Columns 64 through 703.4920 3.0219 2.6154 2.4475 2.5554 2.8832 3.3402 Columns 71 through 773.84634.3522 4.84035.3144 5.78666.2693 6.7705 Columns 78 through 847.2941 7.8405 8.4092 8.9991 9.6093 10.2397 10.8899 Columns 85 through 9111.5600 12.2500 12.9600 13.6900 14.4400 15.2100 16.0000 Columns 92 through 9816.8100 17.6400 18.4900 19.3600 20.2500 21.1600 22.0900Columns 99 through 10123.0400 24.0100 25.00002.2 Newton 插值多项式n 阶差商的定义:[][]0110211010,,,,,)(],,,[],,,[x x x x x f x x x f x f x x x x x x f n n n n n --==-ΛΛΛΛ牛顿插值公式)()()(x R x P x f n n +=牛顿插值多项式)())(](,,,[)](,[)()(110100100----++-+=n n n x x x x x x x x x f x x x x f x f x P ΛΛΛ牛顿插值余项)(],,,,[)(010i n i n n x x x x x x f x R -∏==Λ其差商表如下所示:表1差商标计算规律:任一个k(≥1) 阶均差的数值等于一个分式的值,其分子为所求均差左侧的数减去左上侧的数,分母为所求均差同一行最左边的基点值减去由它往上数第k 个基点值。

2.3数据分析2.3.1Newton插值多项式数据分析图1各阶牛顿插值的结果取x1=[-5 0 5],y1=[25 10 25]时,进行牛顿二阶插值:图2二阶牛顿插值的结果取x2=[-5:2.5:5];,y2=[25 6.2693 10 6.2693 25]时,进行牛顿四阶插值:图3四阶牛顿插值的结果取x3=[-5:2:5],y3=[25 8.9991 2.0435 2.0435 8.9991 25]时,进行牛顿五阶插值:图4五阶牛顿插值的结果取x4=[-5:1:5],y4=[25 16 8.9991 3.8463 2.0435 10 2.0435 3.8463 8.9991 16 25]时,进行牛顿十阶插值:图5十阶牛顿插值的结果2.3.2 Newton 插值多项式数据分析从上面的计算结果绘图可以看出以下几点:(1)当等距选取的插值节点过少时,会产生较大的插值误差,相应增加等距选取的插值节点能减小插值的误差,这从二阶插值倒三、四阶插值插值计算结果越来越接近原函数可以看出。

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

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

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

(2)高次插值收敛性如何?答:对于高次的拉格朗日插值,误差满足下式:1max |()()|()0()(1)!n n a x b M f x L x b a n n +≤≤-≤-→→∞+式中,[a,b]为插值区间,(1)1max |()|n n a x bM f x M ++≤≤=≤。

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

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

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

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

(5) 逼近某个函数不用插值方式,有何变通之举?答:曲线拟合。

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

(7)如何比较好的使用插值多项式呢?答:根据插值数据的特点选取适当的插值方式,要注意避免龙格现象,总之,具体情况具体分析,使用插值多项式应当从插值对象出发选取适合的插值多项式。

相关文档
最新文档