西北农林科技大学数值分析数值法实验报告
数值分析实验报告

数值分析实验报告【引言】数值分析是一门研究利用计算机和数学方法解决实际问题的学科,它在工程、科学和经济领域中有着广泛的应用。
在这个实验报告中,我将分享我在数值分析实验中的一些发现和结果。
【实验目的】本次实验的目的是通过数值方法对给定的问题进行求解,并分析数值方法的精确性和稳定性。
我们选择了经典的插值和数值积分问题来进行实验。
【实验过程】在插值问题中,我使用了拉格朗日插值和样条插值两种方法。
通过使用已知的数据点,这些方法能够通过构造多项式函数来逼近原始函数,从而能够在未知点上进行预测。
通过比较两种插值方法的结果,我发现拉格朗日插值在低维数据上表现更好,而样条插值在高维数据上更能保持插值曲线的平滑性。
在数值积分问题中,我使用了复合梯形公式和复合辛普森公式来进行数值积分。
这两种方法可以将复杂的区间上的积分问题转化为对若干个小区间进行数值积分的问题。
实验结果表明,复合辛普森公式在使用相同的步长时,其数值积分结果更为精确。
【实验结果】我以一个实际问题作为例子来展示实验结果。
问题是计算半径为1的圆的面积。
通过离散化的方法,我将圆划分为多个小的扇形区域,并使用数值积分方法计算每个扇形的面积。
最后将每个扇形的面积相加,即可得到圆的近似面积。
通过调整离散化的精度,我发现随着扇形数量的增加,计算得到的圆的面积越接近真实的圆的面积。
在插值问题中,我选择了一段经典的函数进行插值研究。
通过选择不同的插值节点和插值方法,我发现当插值节点越密集时,插值结果越接近原函数。
同时,样条插值方法在高阶导数连续的情况下能够更好地逼近原始函数。
【实验总结】通过这次实验,我对数值分析中的插值和数值积分方法有了更深入的理解。
我了解到不同的数值方法在不同的问题中有着不同的适用性和精确度。
在实际应用中,我们需要根据具体问题选择合适的数值方法,并进行必要的数值计算和分析,以获得准确可靠的结果。
总的来说,数值分析作为一种重要的工具和方法,在科学研究和工程实践中具有广泛的应用,并且不断发展和创新。
数值分析综合实验报告

一、实验目的通过本次综合实验,掌握数值分析中常用的插值方法、方程求根方法以及数值积分方法,了解这些方法在实际问题中的应用,提高数值计算能力。
二、实验内容1. 插值方法(1)拉格朗日插值法:利用已知数据点构造多项式,以逼近未知函数。
(2)牛顿插值法:在拉格朗日插值法的基础上,通过增加基函数,提高逼近精度。
2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,通过不断缩小区间来逼近根。
(2)Newton法:利用函数的导数信息,通过迭代逼近根。
(3)不动点迭代法:将方程转化为不动点问题,通过迭代逼近根。
3. 数值积分方法(1)矩形法:将积分区间等分,近似计算函数值的和。
(2)梯形法:将积分区间分成若干等分,用梯形面积近似计算积分。
(3)辛普森法:在梯形法的基础上,将每个小区间再等分,提高逼近精度。
三、实验步骤1. 拉格朗日插值法(1)输入已知数据点,构造拉格朗日插值多项式。
(2)计算插值多项式在未知点的函数值。
2. 牛顿插值法(1)输入已知数据点,构造牛顿插值多项式。
(2)计算插值多项式在未知点的函数值。
3. 方程求根方法(1)输入方程和初始值。
(2)选择求解方法(二分法、Newton法、不动点迭代法)。
(3)迭代计算,直到满足精度要求。
4. 数值积分方法(1)输入被积函数和积分区间。
(2)选择积分方法(矩形法、梯形法、辛普森法)。
(3)计算积分值。
四、实验结果与分析1. 插值方法(1)拉格朗日插值法:通过构造多项式,可以较好地逼近已知数据点。
(2)牛顿插值法:在拉格朗日插值法的基础上,增加了基函数,提高了逼近精度。
2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,计算简单,但收敛速度较慢。
(2)Newton法:利用函数的导数信息,收敛速度较快,但可能存在数值不稳定问题。
(3)不动点迭代法:将方程转化为不动点问题,收敛速度较快,但可能存在初始值选择不当的问题。
3. 数值积分方法(1)矩形法:计算简单,但精度较低。
数值分析实验 实验报告

数值分析实验实验报告数值分析实验实验报告一、引言数值分析是一门研究如何利用计算机对数学问题进行数值计算和模拟的学科。
在实际应用中,数值分析广泛应用于工程、物理、金融等领域。
本实验旨在通过实际操作,探索数值分析方法在实际问题中的应用,并通过实验结果对比和分析,验证数值分析方法的有效性和可靠性。
二、实验目的本实验的主要目的是通过数值分析方法,解决一个实际问题,并对比不同方法的结果,评估其准确性和效率。
具体来说,我们将使用牛顿插值法和拉格朗日插值法对一组给定的数据进行插值,并对比两种方法的结果。
三、实验步骤1. 收集实验数据:我们首先需要收集一组实验数据,这些数据可以来自实验测量、调查问卷等方式。
在本实验中,我们假设已经获得了一组数据,包括自变量x和因变量y。
2. 牛顿插值法:牛顿插值法是一种基于差商的插值方法。
我们可以通过给定的数据点,构造一个插值多项式,并利用该多项式对其他点进行插值计算。
具体的计算步骤可以参考数值分析教材。
3. 拉格朗日插值法:拉格朗日插值法是另一种常用的插值方法。
它通过构造一个满足给定数据点的多项式,利用该多项式对其他点进行插值计算。
具体的计算步骤也可以参考数值分析教材。
4. 结果比较与分析:在完成牛顿插值法和拉格朗日插值法的计算后,我们将比较两种方法的结果,并进行分析。
主要考虑的因素包括插值误差、计算效率等。
四、实验结果在本实验中,我们选取了一组数据进行插值计算,并得到了牛顿插值法和拉格朗日插值法的结果。
经过比较和分析,我们得出以下结论:1. 插值误差:通过计算插值点与实际数据点之间的差值,我们可以评估插值方法的准确性。
在本实验中,我们发现牛顿插值法和拉格朗日插值法的插值误差都较小,但是拉格朗日插值法的误差稍大一些。
2. 计算效率:计算效率是衡量数值分析方法的重要指标之一。
在本实验中,我们发现牛顿插值法的计算速度较快,而拉格朗日插值法的计算速度稍慢。
五、实验结论通过本实验,我们对数值分析方法在实际问题中的应用有了更深入的了解。
数值分析积分实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。
通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。
二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。
实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。
2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。
实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。
3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。
实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。
4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。
它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。
实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。
三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。
2. 选取几个不同的函数,对积分区间进行划分。
3. 使用不同方法计算积分近似值,并与实际积分值进行比较。
4. 分析不同方法的精度和效率。
四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。
2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。
3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。
4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。
数值分析实验报告

数值分析实验报告
一、实验背景
本实验主要介绍了数值分析的各种方法。
在科学计算中,为了求解一
组常微分方程或一些极限问题,数值分析是一种有用的方法。
数值分析是
一种运用计算机技术对复杂模型的问题进行数学分析的重要手段,它利用
数学模型和计算机程序来解决复杂的数学和科学问题。
二、实验内容
本实验通过MATLAB软件,展示了以下几种数值分析方法:
(1)拉格朗日插值法:拉格朗日插值法是由法国数学家拉格朗日发
明的一种插值方法,它可以用来插值一组数据,我们使用拉格朗日插值法
对给定的点进行插值,得到相应的拉格朗日多项式,从而计算出任意一个
点的函数值。
(2)最小二乘法:最小二乘法是一种常用的数据拟合方法,它可以
用来拟合满足一定函数的点的数据,它的主要思想是使得数据点到拟合曲
线之间的距离的平方和最小。
(3)牛顿插值法:牛顿插值法是一种基于差商的插值方法,它可以
用来插值一组数据,可以求得一组数据的插值函数。
(4)三次样条插值:三次样条插值是一种基于三次样条的插值方法,它可以用来对一组数据进行插值,可以求得一组数据的插值函数。
三、实验步骤
1.首先启动MATLAB软件。
数值分析实验报告

数值分析实验报告实验目的:通过对数值分析实验的进行,掌握牛顿法解方程的根的求解过程和方法,通过编程实现牛顿法。
实验原理:牛顿法是一种迭代法,通过不断迭代逼近根的过程来求解方程的根。
假设f(x)在[x_0,x]中连续且有一阶连续导数,则根据泰勒展开公式,有下面的公式成立:f(x)=f(x_0)+f'(x_0)(x-x_0)+R(x)其中f(x)是方程的函数,f'(x_0)是f(x)在x_0处的导数,R(x)是无穷小量。
当x接近于x_0时,可以忽略R(x)的影响,即认为R(x)足够小可以忽略。
假设x_0是方程的一个近似根,可以得到如下的迭代公式:x_1=x_0-f(x_0)/f'(x_0)x_2=x_1-f(x_1)/f'(x_1)...在迭代的过程中,如果迭代的结果与上一次迭代的结果的误差小于设定的阈值,则可以认为找到了方程的根。
实验步骤:1.确定方程和初始近似根x_0。
2.计算f(x_0)和f'(x_0)。
3.使用迭代公式计算x的近似值x_i,直到满足终止条件(比如误差小于设定的阈值)。
4.输出计算得到的方程的根。
实验结果和分析:在实验中,我们选择了方程f(x)=x^2-2作为实验对象,初始近似根选择为x_0=1根据上述的迭代公式,可以依次计算得到x_1=1.5,x_2=1.4167,x_3=1.4142,直到满足终止条件。
通过实验计算,可以得到方程f(x)=x^2-2的两个根为x=-1.4142和x=1.4142,与理论解x=±√2比较接近,说明牛顿法可以有效地求解方程的根。
总结:通过本次实验,掌握了牛顿法解方程根的原理和实现方法,实验结果与理论解相近,验证了牛顿法的有效性。
在实际应用中,牛顿法常用于求解非线性方程和优化问题,具有较高的精度和收敛速度,但在选择初始近似根时需要谨慎,否则可能会导致迭代结果发散。
数值分析上机实践报告

数值分析上机实践报告一、实验目的本次实验主要目的是通过上机操作,加深对数值分析算法的理解,并熟悉使用Matlab进行数值计算的基本方法。
在具体实验中,我们将实现三种常见的数值分析算法:二分法、牛顿法和追赶法,分别应用于解决非线性方程、方程组和线性方程组的求解问题。
二、实验原理与方法1.二分法二分法是一种常见的求解非线性方程的数值方法。
根据函数在给定区间端点处的函数值的符号,不断缩小区间的长度,直到满足精度要求。
2.牛顿法牛顿法是求解方程的一种迭代方法,通过构造方程的泰勒展开式进行近似求解。
根据泰勒展式可以得到迭代公式,利用迭代公式不断逼近方程的解。
3.追赶法追赶法是用于求解三对角线性方程组的一种直接求解方法。
通过构造追赶矩阵,采用较为简便的向前追赶和向后追赶的方法进行计算。
本次实验中,我们选择了一组非线性方程、方程组和线性方程组进行求解。
具体的实验步骤如下:1.调用二分法函数,通过输入给定区间的上下界、截止误差和最大迭代次数,得到非线性方程的数值解。
2.调用牛顿法函数,通过输入初始迭代点、截止误差和最大迭代次数,得到方程组的数值解。
3.调用追赶法函数,通过输入追赶矩阵的三个向量与结果向量,得到线性方程组的数值解。
三、实验结果与分析在进行实验过程中,我们分别给定了不同的参数,通过调用相应的函数得到了实验结果。
下面是实验结果的汇总及分析。
1.非线性方程的数值解我们通过使用二分法对非线性方程进行求解,给定了区间的上下界、截止误差和最大迭代次数。
实验结果显示,根据给定的输入,我们得到了方程的数值解。
通过与解析解进行比较,可以发现二分法得到的数值解与解析解的误差在可接受范围内,说明二分法是有效的。
2.方程组的数值解我们通过使用牛顿法对方程组进行求解,给定了初始迭代点、截止误差和最大迭代次数。
实验结果显示,根据给定的输入,我们得到了方程组的数值解。
与解析解进行比较,同样可以发现牛顿法得到的数值解与解析解的误差在可接受范围内,说明牛顿法是有效的。
西北农林科技大学数值分析数值法实验报告

数值法实验报告专业班级:信息与计算科学121 姓名:金辉 学号:20120142801)实验目的本次实验的目的是熟练《数值分析》第二章“插值法”的相关容,掌握三种插值法:牛顿多项式插值,三次样条插值,拉格朗日插值,并比较三种插值法的优劣。
本次试验要求编写牛顿多项式插值,三次样条插值,拉格朗日插值的程序编码,并在MATLAB 软件中去实现。
2)实验题目实验一:已知函数在下列各点的值为试用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 )。
实验二:在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21()125f x x =+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数即()f x 的图形。
实验三:可以得到平根函数的近似,在区间[0,64]上作图。
(1)用这9各点作8次多项式插值L8(x).(2)用三次样条(自然边界条件)程序求S(x)。
从结果看在[0,64]上,那个插值更精确;在区间[0,1]上,两种哪个更精确?3)实验原理与理论基础《数值分析》第二章“插值法”的相关容,包括:牛顿多项式插值,三次样条插值,拉格朗日4)实验容实验一:已知函数在下列各点的值为试用4次牛顿插值多项式P4(x)及三次样条函数S(x)(自然边界条件)对数据进行插值。
用图给出{(x i,y i),x i=0.2+0.08i,i=0,1, 11, 10},P4(x)及S(x)。
(1)首先我们先求牛顿插值多项式,此处要用4次牛顿插值多项式处理数据。
已知n次牛顿插值多项式如下:P n=f(x0)+f[x0,x1](x-x0)+ f[x0,x1,x2](x-x0) (x-x1)+···+f[x0,x1,···x n](x-x0) ···(x-x n-1)我们要知道牛顿插值多项式的系数,即均差表中得部分均差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值法实验报告专业班级:信息与计算科学121 姓名:金辉 学号:20120142801)实验目的本次实验的目的是熟练《数值分析》第二章“插值法”的相关内容,掌握三种插值方法:牛顿多项式插值,三次样条插值,拉格朗日插值,并比较三种插值方法的优劣。
本次试验要求编写牛顿多项式插值,三次样条插值,拉格朗日插值的程序编码,并在MATLAB 软件中去实现。
2)实验题目 实验一:试用44据进行插值。
用图给出{(x i ,y i ),x i =0.2+0.08i ,i=0,1, 11, 10},P 4(x )及S (x )。
实验二:在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21()125f x x =+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数即()f x 的图形。
实验三:可以得到平方根函数的近似,在区间[0,64]上作图。
(1)用这9各点作8次多项式插值L 8(x).(2)用三次样条(自然边界条件)程序求S (x )。
从结果看在[0,64]上,那个插值更精确;在区间[0,1]上,两种哪个更精确?3)实验原理与理论基础《数值分析》第二章“插值法”的相关内容,包括:牛顿多项式插值,三次样条插值,拉格朗日4)实验内容 实验一:试用44据进行插值。
用图给出{(xi ,yi),xi=0.2+0.08i,i=0,1, 11, 10},P4(x)及S(x)。
(1)首先我们先求牛顿插值多项式,此处要用4次牛顿插值多项式处理数据。
已知n次牛顿插值多项式如下:P n =f(x)+f[x,x1](x-x)+ f[x,x1,x2](x-x) (x-x1)+···+f[x0,x1, (x)n](x-x) ···(x-xn-1)我们要知道牛顿插值多项式的系数,即均差表中得部分均差。
在MATLAB的Editor中输入程序代码,计算牛顿插值中多项式系数的程序如下:function varargout=newtonliu(varargin)clear,clcx=[0.2 0.4 0.6 0.8 1.0];fx=[0.98 0.92 0.81 0.64 0.38];newtonchzh(x,fx);function newtonchzh(x,fx)%由此函数可得差分表n=length(x);fprintf('*****************差分表*****************************\n');FF=ones(n,n);FF(:,1)=fx';for i=2:nfor j=i:nFF(j,i)=(FF(j,i-1)-FF(j-1,i-1))/(x(j)-x(j-i+1));endendfor i=1:nfprintf('%4.2f',x(i));for j=1:ifprintf('%10.5f',FF(i,j));endfprintf('\n'); end由所以有四次插值牛顿多项式为:P 4(x )=0.98-0.3(x-0.2)-0.62500 (x-0.2)(x-0.4) -0.20833(x-0.2)(x-0.4)(x-0.6)-0.52083 (x-0.2)(x-0.4)(x-0.6)(x-0.8)(2)接下来我们求三次样条插值函数。
用三次样条插值函数由上题分析知,要求各点的M 值:⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡06.7500-4.5000-3.7500-0M M M M M 2.5000000020.50000000.50002.500000.50002.5000000 243210三次样条插值函数计算的程序如下:function tgsanci(n,s,t) %n 代表元素数,s,t 代表端点的一阶导。
x=[0.2 0.4 0.6 0.8 1.0]; y=[0.98 0.92 0.81 0.64 0.38];n=5for j=1:1:n-1h(j)=x(j+1)-x(j);endfor j=2:1:n-1r(j)=h(j)/(h(j)+h(j-1));endfor j=1:1:n-1u(j)=1-r(j);end for j=1:1:n-1f(j)=(y(j+1)-y(j))/h(j);endfor j=2:1:n-1d(j)=6*(f(j)-f(j-1))/(h(j-1)+h(j));endd(1)=0 d(n)=0 a=zeros(n,n);for j=1:1:na(j,j)=2;endr(1)=0; u(n)=0;for j=1:1:n-1a(j+1,j)=u(j+1); a(j,j+1)=r(j);end b=inv(a) m=b*d'p=zeros(n-1,4); %p 矩阵为S(x)函数的系数矩阵 for j=1:1:n-1 p(j,1)=m(j)/(6*h(j));p(j,2)=m(j+1)/(6*h(j));p(j,3)=(y(j)-m(j)*(h(j)^2/6))/h(j); p(j,4)=(y(j+1)-m(j+1)*(h(j)^2/6))/h(j);end p得到m=(0 -1.6071 -1.0714 -3.1071 0)T即M 0=0 ;M 1= -1.6071;M 2= -1.0714; M 3= -3.1071; M 4=0 则根据三次样条函数定义,可得:S(x)= ⎪⎪⎩⎪⎪⎨⎧∈-+-+--∈-+-+-∈-+-+--∈-+-+---]0.1,8.0[x )8.0(9.10.1 3036.38.00-x 0.12.5893-]8.0,6.0[x 6.0x 3036.3x 8.00857.4.60-x 5893.2-x .800.8929-]6.0,4.0[x 4.0x 7508.4x 6.04.6536 .40-x 8929.0x .601.3393- ]4.0,2.0[x )2.0(6536.44.0900.42.0 1.33934.00 3333333,)()()(),()()()(),()()()(,)()()(x x x x x x x接着,在Command Window里输入画图的程序代码,下面是画牛顿插值以及三次样条插值图形的程序:x=[0.2 0.4 0.6 0.8 1.0];y=[0.98 0.92 0.81 0.64 0.38];plot(x,y)hold onfor i=1:1:5y(i)=0.98-0.3*(x(i)-0.2)-0.62500*(x(i)-0.2)*(x(i)-0.4)-0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.52083*(x(i)-0.2)*(x(i)-0 .4)*(x(i)-0.6)*(x(i)-0.8)endk=[0 1 10 11]x0=0.2+0.08*kfor i=1:1:4y0(i)=0.98-0.3*(x(i)-0.2)-0.62500*(x(i)-0.2)*(x(i)-0.4)-0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.52083*(x(i)-0.2)*(x(i)-0 .4)*(x(i)-0.6)*(x(i)-0.8)endplot( x0,y0,'o',x0,y0 )hold ony1=spline(x,y,x0)plot(x0,y1,'o')hold ons=csape(x,y,'variational')fnplt(s,'r')hold ongtext('三次样条自然边界')gtext('原图像')gtext('4次牛顿插值')运行上述程序可知:给出的{(xi ,yi),xi=0.2+0.08i,i=0,1, 11, 10}点,S(x)及P4(x)图形如下所示:实验二:在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21()125f x x =+作多项式插值及三次样条插值,对每个n 值,分别画出插值函数即()f x 的图形。
我们先求多项式插值:在MATLAB 的Editor 中建立一个多项式的M-file,输入如下的命令(如牛顿插值公式):function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:nD(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=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当n=10时,我们在Command Window中输入以下的命令:clear,clf,hold on;X=-1:0.2:1;Y=1./(1+25*X.^2);[C,D]=newpoly(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.2:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到插值函数和f(x)图形:当n=20时,我们在Command Window中输入以下的命令:clear,clf,hold on;X=-1:0.1:1;Y=1./(1+25*X.^2);[C,D]=newpoly(X,Y);x=-1:0.01:1;y=polyval(C,x);plot(x,y,X,Y,'.');grid on;xp=-1:0.1:1;z=1./(1+25*xp.^2);plot(xp,z,'r')得到插值函数和f(x)图形:下面再求三次样条插值函数,在MATLAB的Editor中建立一个多项式的M-file, 输入下列程序代码:function S=csfit(X,Y,dx0,dxn)N=length(X)-1;H=diff(X);D=diff(Y)./H;A=H(2:N-1);B=2*(H(1:N-1)+H(2:N));C=H(2:N);U=6*diff(D);B(1)=B(1)-H(1)/2;U(1)=U(1)-3*(D(1));B(N-1)=B(N-1)-H(N)/2;U(N-1)=U(N-1)-3*(-D(N));for k=2:N-1temp=A(k-1)/B(k-1);B(k)=B(k)-temp*C(k-1);U(k)=U(k)-temp*U(k-1);endM(N)=U(N-1)/B(N-1);for k=N-2:-1:1M(k+1)=(U(k)-C(k)*M(k+2))/B(k);endM(1)=3*(D(1)-dx0)/H(1)-M(2)/2;M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;for k=0:N-1S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));S(k+1,2)=M(k+1)/2;S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6; S(k+1,4)=Y(k+1);end当n=10时,我们在Command Window中输入以下的命令:clear,clcX=-1:0.2:1;Y=1./(25*X.^2+1);dx0= 0.0739644970414201;dxn= -0.0739644970414201; S=csfit(X,Y,dx0,dxn)x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1));x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2));x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3));x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4));plot(x1,y1,x2,y2,x3,y3,x4,y4, X,Y,'.')结果如图:当n=20时,我们在Command Window中输入以下的命令:clear,clcX=-1:0.1:1;Y=1./(25*X.^2+1);dx0= 0.0739644970414201;dxn= -0.0739644970414201; S=csfit(X,Y,dx0,dxn)x1=-1:0.01:-0.5;y1=polyval(S(1,:),x1-X(1));x2=-0.5:0.01:0;y2=polyval(S(2,:),x2-X(2));x3=0:0.01:0.5; y3=polyval(S(3,:),x3-X(3));x4=0.5:0.01:1;y4=polyval(S(4,:),x4-X(4));plot(x1,y1,x2,y2,x3,y3,x4,y4, X,Y,'.')结果如图:实验三:可以得到平方根函数的近似,在区间[0,64]上作图。