数值分析课程设计报告--插值算法及MATLAB实现.
- 格式:pdf
- 大小:543.57 KB
- 文档页数:12
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 插值法与数据拟合 专业班级 机械工程 姓 名 余红杰 学 号 10 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、学会Lagrange 插值、牛顿插值和三次样条插值等基本插值方法;2、讨论插值的Runge 现象3、学会Matlab 提供的插值函数的使用方法,会用这些函数解决实际问题。
二、实验原理1、拉格朗日插值多项式2、牛顿插值多项式3、三次样条插值 三、实验步骤1、用MATLAB 编写独立的拉格朗日插值多项式函数2、用MATLAB 编写独立的牛顿插值多项式函数3、用MATLAB 编写独立的三次样条函数(边界条件为第一、二种情形)4、已知函数在下列各点的值为:根据步骤1,2,3编好的程序,试分别用4次拉格朗日多项式4()L x 、牛顿插值多项式4()P x 以及三次样条函数()S x (自然边界条件)对数据进行插值,并用图给出 {(,),0.20.08,0,1,2,,10i i i x y x i i =+=},4()L x 、4()P x 和()S x 。
5、在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21(),(11)125f x x x=-≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图形。
6、下列数据点的插值可以得到平方根函数的近似,在区间[0,64]上作图。
(1)用这9个点作8次多项式插值8()L x 。
(2)用三次样条(第一边界条件)程序求()S x 。
7、对于给函数21()125f x x =+在区间[-1,1]上取10.2(0,1,,10)i x i i =-+=,试求3次曲线拟合,试画出拟合曲线并打印出方程,与第5题的结果比较。
四、实验过程与结果:1、Lagrange 插值多项式源代码:function ya=lag(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 ya=0; mu=1; %初始化%循环方式求L 系数,并求和: for i = 1:length(y) for j = 1:length(x) if i ~= jmu = mu * (xa - x(j) ) / ( x(i) - x(j) ); else continue end endya = ya + y(i) * mu ; mu = 1; end2、Newton 源代码:function ya = newton(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 %建立系数零矩阵D 及初始化:D = zeros(length(x)-1);ya = y(1);xi = 1;%求出矩阵D,该矩阵第一行为牛顿插值多项式系数:for i=1:(length(x)-1)D(i,1) = (y(i+1) -y(i))/(x(i+1) -x(i));endfor j=2:(length(x)-1)for i=1:(length(x)-j)D(i,j) = (D(i+1,j-1) - D(i,j-1)) / (x(i+j) - x(i)); endend%xi为单个多项式(x-x(1))(x-x(2))...的值for i=1:(length(x)-1)for j=1:ixi = xi*(xa - x(j));endya = ya + D(1,i)*xi;xi = 1;end3、三次样条插值多项式(1)(第一边界条件)源代码:function y=yt1(x0,y0,f_0,f_n,x) _____________(1)%第一类边界条件下三次样条插值;%xi 所求点;%yi 所求点函数值;%x 已知插值点;%y 已知插值点函数值;%f_0左端点一次导数值;%f_n右端点一次导数值;n = length(x0);z = length(y0);h = zeros(n-1,1);k=zeros(n-2,1);l=zeros(n-2,1);S=2*eye(n);for i=1:n-1h(i)= x0(i+1)-x0(i);endfor i=1:n-2k(i)= h(i+1)/(h(i+1)+h(i));l(i)= 1-k(i);end%对于第一种边界条件:k = [1;k]; _______________________(2)l = [l;1]; _______________________(3)%构建系数矩阵S:for i = 1:n-1S(i,i+1) = k(i);S(i+1,i) = l(i);end%建立均差表:F=zeros(n-1,2);for i = 1:n-1F(i,1) = (y0(i+1)-y0(i))/(x0(i+1)-x0(i));endD = zeros(n-2,1);for i = 1:n-2F(i,2) = (F(i+1,1)-F(i,1))/(x0(i+2)-x0(i));D(i,1) = 6 * F(i,2);end%构建函数D:d0 = 6*(F(1,2)-f_0)/h(1); ___________(4)dn = 6*(f_n-F(n-1,2))/h(n-1); ___________(5)D = [d0;D;dn]; ______________(6)m= S\D;%寻找x所在位置,并求出对应插值:for i = 1:length(x)for j = 1:n-1if (x(i)<=x0(j+1))&(x(i)>=x0(j))y(i) =( m(j)*(x0(j+1)-x(i))^3)/(6*h(j))+...(m(j+1)*(x(i)-x0(j))^3)/(6*h(j))+...(y0(j)-(m(j)*h(j)^2)/6)*(x0(j+1)-x(i))/h(j)+... (y0(j+1)-(m(j+1)*h(j)^2)/6)*(x(i)-x0(j))/h(j) ; break;else continue;endendend(2)(自然边界条件)源代码:仅仅需要对上面部分标注的位置做如下修改:__(1):function y=yt2(x0,y0,x)__(2):k=[0;k]__(3):l=[l;0]__(4)+(5):删除—(6):D=[0:D:0]4、——————————————PS:另建了一个f方程文件,后面有一题也有用到。
数值分析实验报告拉格朗日插值法拉格朗日插值法基本原理:通过平面上不同两点可以确定一条直线,这就是拉格朗日线性插值问题,对于不在同一条直线的三个点得到的插值多项式则为抛物线。
拉格朗日插值的基多项式(即基函数)为:ni x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=有了基函数以后就可以直接构造如下多项式:∑==ni i i n x l x f p 0)()(该多项式就是拉格朗日插值法所求得的插值多项式。
拉格朗日插值法算法:1、根据所给点),(i i y x 的坐标依次写出其差值基函数(用for 循环可以轻易解决)ni x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=2、将差值基函数与其对应的点的函数值相乘得:n i x l x f i i ,,2,1,0),()( =3、将2中各项累加即得差值多项式:∑==ni i i n x l x f p 0)()(拉格朗日插值法程序:function lagrange(A)%A 为一个只有两行的矩阵,第一行为插值点,第二行为插值点对应的函数值 [m,n]=size(A); f=1;p=0;%两个用到的变量 syms xfor i=1:nf=(x-A(1,i))*f;endfor j=1:ng(j)=f/(x-A(1,j));%求插值基函数的分母h(j)=subs(g(j),x,A(1,j));%求插值基函数的分子s(j)=g(j)/h(j)*A(2,j);%插值基函数endfor k=1:ns(j)=collect(s(j));%合并同类项endfor i=1:np=p+s(i);endfprintf('拉格朗日插值法可得多项式:')collect(p) % 可用lagrange([1 3 6 8;4 6 9 12])调试例:有如下表格中有四个插值点及其对应的函数值,用lagrange插值法写出其三次插值多项式:x 1 3 6 8iy 4 6 9 12i解:在matlab命令窗口输入:lagrange([1 3 6 8;4 6 9 12])可得运行结果:拉格朗日插值法可得多项式:ans =x^3/70 - x^2/7 + (97*x)/70 + 96/35牛顿插值法牛顿插值法基本原理:拉格朗日插值多项式的理论在许多方面都有应用,是很不错的一种方法,但就插值问题而言,如果增加一个插值点,原先计算插值的多项式就没有用了,即拉格朗日插值法的继承性很差,牛顿插值法就很好地解决了这个问题,具有很好的继承性。
辽宁工程技术大学上机实验报告1. 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。
1)211x+,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10x , x ∈[0,2π].注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的差异,或采用两个函数之间的某种距离。
(1)-0.200.20.40.60.811.2(2)(3)00.51 1.52 2.53 3.52. 对于二维插值的几种方法:最邻近插值、分片线性插值、双线性插值、三次插值等,利用如下函数进行插值计算,观察其插值效果变化,得出什么结论?1) ())(sin ),(px t t x f -=ω,参数p =1/2000~1/200;采样步长为:t =4ms~4s ;x =5~25m. 2) ⎪⎭⎫ ⎝⎛-+⎪⎭⎫ ⎝⎛-+⎪⎭⎫ ⎝⎛-+⎪⎭⎫ ⎝⎛-+=εεεεy y x x y x f 1516sin 1516sin 1516sin 1516sin 103),(22 参数ε =1~2;x ,y ∈ [-1,1]。
3) 将2)中的函数推广到三维情形,进行同样的处理,体会高维插值的运用。
(1)三次插值:近邻点插值:双线性插值:三个比较可得,三次插值最好。
(2)双线性插值:近邻点插值:三次插值:三个比较可得,三次插值最好。
(3)三次插值:三线性插值:近邻点插值:3.轮船的甲板成近似半椭圆面形,为了得到甲板的面积。
首先测量得到横向最大相间8.534米;然后等间距地测得纵向高度,自左向右分别为:0.914, 5.060, 7.772, 8.717, 9.083, 9.144, 9.083, 8.992, 8.687, 7.376, 2.073,计算甲板的面积。
甲板的插值图形为:由无限分割求得面积为:4.物体受水平方向外力作用,在水平直线上运动。
数值分析学院:计算机专业:计算机科学与技术班级:xxx学号:xxx姓名:xxx指导教师:xxx数值分析摘要:数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。
在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。
学习数值分析这门课程可以让我们学到很多的数学建模方法。
分别运用matlab数学软件编程来解决插值问题和数值积分问题。
题目中的要求是计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。
编程求解出来的结果为:P4x=x4+1。
其中Aitken插值计算的结果图如下:对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。
编程求解出来的结果为:0.6932其中复化梯形公式计算的结果图如下:问题重述问题一:已知列表函数表格分别用拉格朗日,牛顿,埃特金插值方法计算P4x 。
问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分121xdx ,使精度小于5×10-5。
问题解决问题一:插值方法对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。
一、拉格朗日插值法:拉格朗日插值多项式如下:首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数)(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子)())(()(110n i i x x x x x x x x ----+- 。
又因)(x l i 是一个次数不超过n 的多项式,所以只可能相差一个常数因子,固)(x l i 可表示成:)())(()()(110n i i i x x x x x x x x A x l ----=+-利用1)(=i i x l 得:)())(()(1110n i i i i i i x x x x x x x x A ----=+-于是),,2,1,0()())(()()())(()()(110110n i x x x x x x x x x x x x x x x x x l n i i i i i i n i i i =--------=+-+-因此满足i i n y x L =)( ),2,1,0(n i =的插值多项式可表示为:∑==nj j j n x l y x L 0)()(从而n 次拉格朗日插值多项式为:),,2,1,0()()(0n i x l y x L nj i j j i n ==∑=matlab 编程:编程思想:主要从上述朗格朗日公式入手:依靠循环,运用poly ()函数和conv ()函数表示拉格朗日公式,其中的poly (i )函数表示以i 作为根的多项式的系数,例如poly (1)表示x-1的系数,输出为1 -1,而poly (poly (1))表示(x-1)*(x-1)=x^2-2*x+1的系数,输出为1 -2 1;而conv ()表示多项式系数乘积的结果,例如conv (poly (1),poly (1))输出为1 -2 1;所以程序最后结果为x^n+x^n-1+……+x^2+x+1(n 的值据结果的长度为准)的对应系数。
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),即插值效果越来越好。
实验二插值法实验2.1(多项式插值的振荡现象) (3)实验要求1: (3)程序: .................................................................................................................................................. 3 主函数: .............................................................................................................................................. 3 实验结果: .......................................................................................................................................... 5 实验要求2: .. (6)(1)对:4()1xh x x=+ .................................................................................................................... 6 程序: .................................................................................................................................................. 6 主函数: .............................................................................................................................................. 6 实验结果: .......................................................................................................................................... 8 实验分析 .............................................................................................................................................. 8 (2)对g (x )=arctan x .................................................................................................................... 8 程序: .................................................................................................................................................. 8 实验结果: ........................................................................................................................................ 10 实验分析 .............................................................................................................................................11 实验要求3: . (11)程序: .................................................................................................................................................11 实验结果: ........................................................................................................................................ 13 实验分析: . (14)实验2.2(样条插值的收敛性) (15)实验要求(一) (15)程序: ................................................................................................................................................ 15 数值实验结果 .................................................................................................................................... 15 实验分析 ............................................................................................................................................ 17 实验要求(二): .. (17)程序: ................................................................................................................................................ 17 实验总结: . (19)实验2.3 (20)程序: ................................................................................................................................................ 20 运行结果: . (20)实验2.1(多项式插值的振荡现象)实验要求1:程序:M文件:lagrange.mtest1p1.mLagrange函数:%lagrange insertfunction y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end主函数:x1=[-1:1:1];y1=1./(1+25*x1.^2);x2=[-1:0.5:1];y2=1./(1+25*x2.^2);x3=[-1:0.4:1];y3=1./(1+25*x3.^2);x4=[-1:0.25:1];y4=1./(1+25*x4.^2); x5=[-1:0.2:1];y5=1./(1+25*x5.^2); x6=[-1:0.1:1];y6=1./(1+25*x6.^2); x0=[-1:0.01:1];subplot(4,2,1)y7=1./(1+25*x0.^2);plot(x0,y7,'-b')y0=lagrange(x1,y1,x0);y1=1./(1+25*x0.^2);subplot(4,2,2)plot(x0,y0,'--b')y0=lagrange(x2,y2,x0);y2=1./(1+25*x0.^2);subplot(4,2,3)plot(x0,y0,'-g')y0=lagrange(x3,y3,x0);y3=1./(1+25*x0.^2);subplot(4,2,4)plot(x0,y0,'--g')y0=lagrange(x4,y4,x0);y4=1./(1+25*x0.^2);subplot(4,2,5)plot(x0,y0,'-r')y0=lagrange(x5,y5,x0);y5=1./(1+25*x0.^2);subplot(4,2,6)plot(x0,y0,'--r')y0=lagrange(x6,y6,x0);y6=1./(1+25*x0.^2);subplot(4,2,7)plot(x0,y0,'-y')数值实验结果及分析:图一为原函数曲线。
基于MATLAB数值分析实验报告班级:072115姓名:李凯学号:20111003943实验二:矩阵与向量运算实验目的:在MATLAB里,会对矩阵与向量进行加、减、数乘、求逆及矩阵特征值运算,以及矩阵的LU分解。
设A是一个n×n方阵,X是一个n维向量,乘积Y=AX可以看作是n维空间变换。
如果能够找到一个标量λ,使得存在一个非零向量X,满足:AX=λX (3.1)则可以认为线性变换T(X)=AX将X映射为λX,此时,称X 是对应于特征值λ的特征向量。
改写式(3.1)可以得到线性方程组的标准形式:(A-λI)X=0 (3.2)式(3.2)表示矩阵(A-λI)和非零向量X的乘积是零向量,式(3.2)有非零解的充分必要条件是矩阵(A-λI)是奇异的,即:det(A-λI)=0该行列式可以表示为如下形式:a11–λa12 (1)a21 a22 –λ…a2n =0 (3.3)…………A n1 a n2 …a nn将式(3.3)中的行列式展开后,可以得到一个n阶多项式,称为特征多项式:f(λ)=det(A-λI)=(-1)n(λn+c1λn-1+c2λn-2+…+c n-1λ+c n) (3.4) n阶多项式一共有n个根(可以有重根),将每个根λ带入式(3.2),可以得到一个非零解向量。
习题:求下列矩阵的特征多项式的系数和特征值λj:3 -1 0A= -1 2 -10-1 3解:在MATLAB中输入命令:A=【3 -1 0;-1 2 -1;0 -1 3】;c=poly(A)roots(c)得到:实验四:Lagrange插值多项式实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项式的公式源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。
%功能:对一组数据做Lagrange插值%调用格式:yi=Lagran_(x,y,xi)%x,y:数组形式的数据表%xi:待计算y值的横坐标数组%yi:用Lagrange还擦之算出y值数组function fi=Lagran_(x,f,xi)fi=zeros(size(xi));np1=length(f);for i=1:np1z=ones(size(xi));for j=i:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));endendfi=fi+z*f(i);endreturn习题:已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。
数值分析实验报告线性插值和二次插值计算ln0.54的近似值数值分析实验报告线性插值和二次插值计算ln0.54的近似值篇一:数值分析-用线性插值及二次插值计算数值分析上机报告习题:给出f(x)?lnx的数值表,用线性插值及二次插值计算ln0.54的近似值。
解:(1)用线性插值计算 Matla b程序 x=0.54; a=[0.5,0.6];b=[-0.693147,-0.510826]; l1=b (1)*((x-a(2))/(a(1)-a (2))); l2=b(2)*((x-a(1))/(a(2)-a(1))); y=l1+l2 y = -0.6202(2)用抛物插值计算 Ma tlab程序 x=0.54; a=[0.4,0.5,0.6]; b=[-0.916291,-0.693147,-0.510826]; A=b(1)*(x-a(2))*(x-a(3))/((a (1)-a(2))*(a(1)-a(3))); B=b(2)*(x-a (1))*(x-a(3))/((a(2)-a(1))*(a(2)-a(3))); C=b(3)*(x-a(1))*(x-a(2))/((a(3)-a(1))*(a(3)-a(2)));y=A+B+C y= -0.6153篇二:数值分析上机实验报告二实验报告二题目:如何求解插值函数摘要:在工程测量和科学实验中,所得到的数据通常都是离散的,如果要得到这些离散点意外的其他点的数值,就需要根据这些已知数据进行插值。
这里我们将采用多种插值方法。
前言:(目的和意义)掌握Lagrange,Netn,Hermi te,线性,三次样条插值法的原理及应用,并能求解相应问题。
数学原理:主要的插值法有:多项式插值法、拉格朗日插值法、线性插值法、牛顿插值法,H ermite插值法三次样条插值法等。
数值分析matlab实验报告数值分析 Matlab 实验报告一、实验目的数值分析是研究各种数学问题数值解法的学科,Matlab 则是一款功能强大的科学计算软件。
本次实验旨在通过使用 Matlab 解决一系列数值分析问题,加深对数值分析方法的理解和应用能力,掌握数值计算中的误差分析、数值逼近、数值积分与数值微分等基本概念和方法,并培养运用计算机解决实际数学问题的能力。
二、实验内容(一)误差分析在数值计算中,误差是不可避免的。
通过对给定函数进行计算,分析截断误差和舍入误差的影响。
例如,计算函数$f(x) =\sin(x)$在$x = 05$ 附近的值,比较不同精度下的结果差异。
(二)数值逼近1、多项式插值使用拉格朗日插值法和牛顿插值法对给定的数据点进行插值,得到拟合多项式,并分析其误差。
2、曲线拟合采用最小二乘法对给定的数据进行线性和非线性曲线拟合,如多项式曲线拟合和指数曲线拟合。
(三)数值积分1、牛顿柯特斯公式实现梯形公式、辛普森公式和柯特斯公式,计算给定函数在特定区间上的积分值,并分析误差。
2、高斯求积公式使用高斯勒让德求积公式计算积分,比较其精度与牛顿柯特斯公式的差异。
(四)数值微分利用差商公式计算函数的数值导数,分析步长对结果的影响,探讨如何选择合适的步长以提高精度。
三、实验步骤(一)误差分析1、定义函数`compute_sin_error` 来计算不同精度下的正弦函数值和误差。
```matlabfunction value, error = compute_sin_error(x, precision)true_value = sin(x);computed_value = vpa(sin(x), precision);error = abs(true_value computed_value);end```2、在主程序中调用该函数,分别设置不同的精度进行计算和分析。
(二)数值逼近1、拉格朗日插值法```matlabfunction L = lagrange_interpolation(x, y, xi)n = length(x);L = 0;for i = 1:nli = 1;for j = 1:nif j ~= ili = li (xi x(j))/(x(i) x(j));endendL = L + y(i) li;endend```2、牛顿插值法```matlabfunction N = newton_interpolation(x, y, xi)n = length(x);%计算差商表D = zeros(n, n);D(:, 1) = y';for j = 2:nfor i = j:nD(i, j) =(D(i, j 1) D(i 1, j 1))/(x(i) x(i j + 1));endend%计算插值结果N = D(1, 1);term = 1;for i = 2:nterm = term (xi x(i 1));N = N + D(i, i) term;endend```3、曲线拟合```matlab%线性最小二乘拟合p = polyfit(x, y, 1);y_fit_linear = polyval(p, x);%多项式曲线拟合p = polyfit(x, y, n);% n 为多项式的次数y_fit_poly = polyval(p, x);%指数曲线拟合p = fit(x, y, 'exp1');y_fit_exp = p(x);```(三)数值积分1、梯形公式```matlabfunction T = trapezoidal_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);T = h ((y(1) + y(end))/ 2 + sum(y(2:end 1)));end```2、辛普森公式```matlabfunction S = simpson_rule(f, a, b, n)if mod(n, 2) ~= 0error('n 必须为偶数');endh =(b a) / n;x = a:h:b;y = f(x);S = h / 3 (y(1) + 4 sum(y(2:2:end 1))+ 2 sum(y(3:2:end 2))+ y(end));end```3、柯特斯公式```matlabfunction C = cotes_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);w = 7, 32, 12, 32, 7 / 90;C = h sum(w y);end```4、高斯勒让德求积公式```matlabfunction G = gauss_legendre_integration(f, a, b)x, w = gauss_legendre(5);%选择适当的节点数t =(b a) / 2 x +(a + b) / 2;G =(b a) / 2 sum(w f(t));end```(四)数值微分```matlabfunction dydx = numerical_derivative(f, x, h)dydx =(f(x + h) f(x h))/(2 h);end```四、实验结果与分析(一)误差分析通过不同精度的计算,发现随着精度的提高,误差逐渐减小,但计算时间也相应增加。