数值分析函数逼近和曲线拟合
- 格式:ppt
- 大小:926.00 KB
- 文档页数:49
常用函数的逼近和曲线拟合在数学中,函数逼近和曲线拟合都是常见的问题。
函数逼近是指找到一个已知函数,尽可能地接近另一个函数。
而曲线拟合则是给定一组数据点,找到一条曲线来描述这些数据点的分布。
本文将讨论常用的函数逼近和曲线拟合方法。
一、函数逼近1. 插值法插值法是最简单的函数逼近方法之一。
它的基本思想是:给定一组已知点,通过构造一个多项式,使得该多项式在这些点处的函数值与已知函数值相等。
插值法的优点是精度高,缺点是易产生龙格现象。
常用的插值多项式有拉格朗日插值多项式和牛顿插值多项式。
拉格朗日插值多项式的形式为:$f(x)=\sum_{i=0}^{n}y_{i}\prod_{j=i,j\neq i}^{n}\frac{x-x_{j}}{x_{i}-x_{j}}$其中,$x_{i}$是已知点的横坐标,$y_{i}$是已知点的纵坐标,$n$是已知点的数量。
牛顿插值多项式的形式为:$f(x)=\sum_{i=0}^{n}f[x_{0},x_{1},...,x_{i}]\prod_{j=0}^{i-1}(x-x_{j})$其中,$f[x_{0},x_{1},...,x_{i}]$是已知点$(x_{0},y_{0}),(x_{1},y_{1}),...,(x_{i},y_{i})$的差商。
2. 最小二乘法最小二乘法是一种常用的函数逼近方法。
它的基本思想是:给定一组数据点,找到一个函数,在这些数据点上的误差平方和最小。
通常采用线性模型,例如多项式模型、指数模型等。
最小二乘法的优点是适用性广泛,缺点是对于非线性模型要求比较高。
最小二乘法的一般形式为:$F(x)=\sum_{i=0}^{n}a_{i}\varphi_{i}(x)$其中,$a_{i}$是待求的系数,$\varphi_{i}(x)$是一组已知的基函数,$n$是基函数的数量。
最小二乘法的目标是使得$\sum_{i=1}^{m}[f(x_{i})-F(x_{i})]^{2}$最小,其中$m$是数据点的数量。
曲线拟合实验报告[优秀范文5篇]第一篇:曲线拟合实验报告数值分析课程设计报告学生姓名学生学号所在班级指导教师一、课程设计名称函数逼近与曲线拟合二、课程设计目的及要求实验目的: ⑴学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。
⑵学会基本的矩阵运算,注意点乘与叉乘的区别。
实验要求: ⑴编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函数与拟合函数的图形;⑵用MATLAB 的内部函数polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)结果进行比较。
三、课程设计中的算法描述用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确的经过这些点,而就是拟合曲线无限逼近离散点所形成的数据曲线。
思路分析 : 从整体上考虑近似函数)(x p 同所给数据点)(i iy x , 误差i i iy x p r -=)(的大小,常用的方法有三种:一就是误差i i iy x p r -=)(绝对值的最大值im ir≤≤ 0max ,即误差向量的无穷范数;二就是误差绝对值的与∑=miir0,即误差向量的 1成绩评定范数;三就是误差平方与∑=miir02的算术平方根,即类似于误差向量的 2 范数。
前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑 2 范数的平方,此次采用第三种误差分析方案。
算法的具体推导过程: 1、设拟合多项式为:2、给点到这条曲线的距离之与,即偏差平方与:3、为了求得到符合条件的 a 的值,对等式右边求偏导数,因而我们得到了:4、将等式左边进行一次简化,然后应该可以得到下面的等式5、把这些等式表示成矩阵的形式,就可以得到下面的矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∑∑∑∑∑∑∑∑∑∑∑=====+==+====niininiiknikinikinikinikiniiniinikiniiyyyaax x xx x xx x11i11012111111211 1an MMΛM O M MΛΛ 6.将这个范德蒙得矩阵化简后得到⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡n kkn nkkyyyaaax xx xx x M MΛM O M MΛΛ21102 21 1111 7、因为 Y A X = * ,那么 X Y A / = ,计算得到系数矩阵,同时就得到了拟合曲线。
《数值分析》课程设计实验报告实验二函数逼近与曲线拟合一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。
在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t 的拟合曲线。
二、实验步骤先写出线性最小二乘法的M文件function c=lspoly(x,y,m)% x是数据点的横坐标组成的向量,y是纵坐标组成的向量% m是要构成的多项式的次数,c是多项式由高到低次的系数所组成的向量n=length(x);b=zeros(1:m+1);f=zeros(n,m+1);for k=1:m+1f(:,k)=x.^(k-1);enda=f'*f;b=f'*y';c=a\b;c=flipud(c);方法一:近似解析表达式为:y(t)=a1t+a2t2+a3t3第二步在命令窗口输入:lspoly([0,5,10,15,20,25,30,35,40,45,50,55],[0,1.27,2.16,2.86,3.44 ,3.87,4.15,4.37,4.51,4.58,4.02,4.64],2)回车得到:ans =0.0000-0.00520.26340.0178即所求的拟合曲线为y=-0.0052t2+0.2634t+0.0178在编辑窗口输入如下命令:>>x=[0,5,10,15,20,25,30,35,40,45,50,55];y=[0,1.27,2.16,2.86,3.44, 3.87,4.15,4.37,4.51,4.58,4.02,4.64];>> t=0:0.1:55;>> z=-0.0052*t.^2+0.2634*t+0.0178;>> plot(x,y,'ro',t,z);grid命令执行得到如下图(图2-1)0102030405060拟合多项式与数据点的关系方法二:假设近似表达式为:y(t)=c0+c1t+c2t2第一步在命令窗口输入:>>lspoly([0,5,10,15,20,25,30,35,40,45,50,55],[0,1.27,2.16,2.86,3. 44,3.87,4.15,4.37,4.51,4.58,4.02,4.64],2)回车得到:ans =-0.00240.20370.2305即所求的拟合曲线为y=-0.0024t2+0.2037t+0.2305在编辑窗口输入如下命令:>>x=[0,5,10,15,20,25,30,35,40,45,50,55];y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64];>> t=0:0.1:55;>> z=-0.0024*t.^2+0.2037*t+0.2305;>> plot(x,y,'ro',t,z);grid命令执行得到如下图(图2-2)拟合多项式与数据点的关系三、实验结论在利用数据的最小二乘法求拟合曲线时,选取合适的近似表达式很重要,应通过不断的试验找出较为合适的近似表达式,这样才能尽可能的提高拟合精度。
实验类别:数值分析专业:信息与计算科学班级:学号:姓名:中北大学理学院实验二 函数逼近与曲线拟合【实验内容】从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。
在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。
【实验方法或步骤】1、用最小二乘法进行曲线拟合;2、近似解析表达式为;33221)(t a t a t a t ++=ϕ3、打印出拟合函数)(t ϕ,并打印出)(j t ϕ与)(j t y 的误差,12,,2,1 =j ;4、另外选取一个近似表达式,尝试拟合效果的比较;5、* 绘制出曲线拟合图。
#include "stdio.h" #include "conio.h" #include "stdlib.h" #include "math.h"#define N 12//N 个节点 #define M 2//M 次拟合 #define K 2*Mvoid zhuyuan (int k,int n,float a[M+1][M+2]) {int t,i,j;float x,y;x=fabs(a[k][k]);t=k;for (i=k+1;i<=n;i++)if (fabs(a[i][k])>x){x=fabs(a[i][k]);t=i;}for (j=k;j<=n+1;j++){y=a[k][j];a[k][j]=a[t][j];a[t][j]=y;}}void xiaoyuan(int n,float a[M+1][M+2]){int k,i,j;for(i=0;i<n;i++){zhuyuan(i,n,a);for (j=i+1;j<=n;j++)for (k=i+1;k<=n+1;k++)a[j][k]=a[j][k]-a[j][i]*a[i][k]/a[i][i];}}void huidai(int n,float a[M+1][M+2],float x[M+1]){int i,j;x[n]=a[n][n+1]/a[n][n];for (i=n-1;i>=0;i--){ x[i]=a[i][n+1];for (j=i+1;j<=n;j++)x[i]=x[i]-a[i][j]*x[j];x[i]=x[i]/a[i][i];}}void main(){float x_y[N][2],A[N][K+1],B[N][M+1],AA[K+1],BB[M+1],a[M+1][M+2],m[M+1]; int i,j,n;printf("请输入%d个已知点:\n",N);for(i=0;i<N;i++){printf("(x%d y%d):",i,i);scanf("%f %f",&x_y[i][0],&x_y[i][1]);}for(i=0;i<N;i++){A[i][0]=1;for(j=1;j<=K;j++)A[i][j]=A[i][j-1]*x_y[i][0];for(j=0;j<=M;j++)B[i][j]=A[i][j]*x_y[i][1];}for(j=0;j<=K;j++)for(AA[j]=0,i=0;i<N;i++)AA[j]+=A[i][j];for(j=0;j<=M;j++)for(BB[j]=0,i=0;i<N;i++)BB[j]+=B[i][j];for(i=0;i<M+1;i++){a[i][M+1]=BB[i];for(j=0;j<=M;j++)a[i][j]=AA[i+j];}n=M;printf("正规系数矩阵为:\n");for(i=0;i<=n;i++){for(j=0;j<=n+1;j++)printf("%f ",a[i][j]);printf("\n");}xiaoyuan(n,a);huidai(n,a,m);printf("拟合曲线方程为:\ny(x)=%g",m[0]); for(i=1;i<=n;i++){printf(" + %g",m[i]);for(j=0;j<i;j++){printf("*X");}}}p3=polyfit(x,y,3);y3=polyval(p3,x);e3=norm(y-y3);t=0:5:60;pt3=polyval(p3,t);plot(t,pt3);plot(t,pt3);title('3次拟合函数')>>3次拟合函数实验三 数值积分与数值微分【实验内容】选用复合梯形公式,复合Simpson 公式,Romberg 算法高斯算法计算(1) )5343916.1(sin 44102≈-=⎰I dx x I(2) )9460831.0,1)0((sin 10≈==⎰I f dx xxI (3) dx x e I x⎰+=1024 ;(4) dx x x I ⎰++=1021)1ln( 【实验前的预备知识】1、 深刻认识数值积分法的意义;2、 明确数值积分精度与步长的关系;3、 根据定积分的计算方法,可以考虑二重积分的计算问题。
实验三 函数逼近与曲线拟合实验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)归纳总结数值实验结果,试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。
实验3.2:(最小二乘拟合的经验公式和模型)1.(已知经验公式):某类疾病发病率为y ‰和年龄段x (每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如bxae y =的经验关系,观测得(1)用最小二乘法确定模型bxae y =中的参数a 和b (提示函数:lsqcurvefit ,lsqnonlin )。
(2)利用MATLAB 画出离散数据及拟合函数bxae y =图形。
(3)利用MATLAB 画出离散点处的误差图,并计算相应的均方误差。
2.(最小二乘拟合模型未知) 某年美国轿车价格的调查资料如表,其中i x 表示轿车的使用年数,i y 表示相应的平均价格,实验要求:试分析用什么形式的曲线来拟合表中的数据,并预测实验3.3(研究最佳平方逼近多项式的收敛性质)实验内容和要求:取函数xe xf =)(,在[-1,1]上以勒让德多项式为基函数,对于10,,1,0 =n 构造最佳平方逼近多项式)(x p n ,令)()()(x p x f x n n -=ε,将x x n ~)(ε的曲线画在一个图上。
数值分析实验三:函数逼近与曲线拟合1曲线逼近方法的比较1.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;实验要求:(1) 将拟合的结果与拉格朗日插值及样条插值的结果比较。
(2) 归纳总结数值实验结果,试定性地说明函数逼近各种方法的适用范围,及实际应用中选择方法应注意的问题。
1.2算法设计对于曲线拟合,这里主要使用了多项式拟合,使用Matlab的polyfit函数,可以根据需要选用不同的拟合次数。
然后将拟合的结果和插值法进行比较即可。
本实验的算法比较简单,此处不再详述,可以参见给出的Matlab脚本文件。
1.3实验结果1.3.1多项式拟合1.3.1.1多项式拟合函数polyfit和拟合次数N的关系1 / 13首先使用polyfit函数对f(x)进行拟合。
为了便于和实验2.1相比较,这里采取相同的参数,即将拟合区间[-1,1]等分为10段,使用每一段区间端点作为拟合的数据点。
分别画出拟合多项式的次数N=2、3、4、6、8、10时,f(x)和多项式函数的图像,如图1所示。
Matlab 脚本文件为Experiment3_1_1.m。
Figure 1 多项式拟合与拟合次数N的关系可以看出,拟合次数N=2和3时,拟合效果很差。
增大拟合次数,N=4、6、8时,拟合效果有明显提高,但是N太大时,在区间两端附近会出现和高次拉格朗日插值函数类似的龙格现象。
数值分析函数逼近与曲线拟合第三章函数逼近和曲线拟合 1 函数的逼近和基本概念1.1问题的提出多数计算机的硬件系统只提供加、减、乘、除四种算术运算指令,因此为了计算大多数有分析表达式的函数的值,必须产生可用四则运算进行计算的近似式,一般为多项式和有理分式函数.实际上,我们已经接触到两种逼近多项式,一种是泰乐多项式,一种是插值多项式.泰乐多项式是一种局部方法,误差分布不均匀,满足一定精度要求的泰乐多项式次数太高,不宜在计算机上直接使用.例如,设()f x 是[1,1]-上的光滑函数,它的Taylor 级数0()kk k f x a x ∞==∑,()(0)!k k f a k =在[1,1]-上收敛。
当此级数收敛比较快时,11()()()n n n n e x f x s x a x ++=-≈。
这个误差分布是不均匀的。
当0x =时,(0)0n e =,而x 离开零点增加时,()n e x 单调增加,在1x =±误差最大。
为了使[1,1]-的所有x 满足()()nf x s x ε-<,必须选取足够大的n ,这显然是不经济的。
插值函数出现的龙格现象表明,非节点处函数和它的插值多项式相差太大。
更重要的是,实际中通过观测得到的节点数据往往有各种误差,此时如果要求逼近函数过全部节点,相当于保留全部数据误差,这是不适宜的。
如图1所示,给出五个点上的实验测量数据,理论上的结果应该满足线性关系,即图1中的实线。
由于实验数据的误差太大,不能用过任意两点的直线逼近函数。
如果用过5个点的4次多项式逼近线性函数,显然误差会很大。
1.2范数和逼近一、线性空间及赋范线性空间要深入研究客观事物,不得不研究事物间的内在联系,给集合的元素之间赋予某种“确定关系”也正是这样的道理.数学上常把在各种集合中引入某些不同的确定关系称为赋予集合以某种空间结构,并将这样的集合称为空间。
最常用的给集合赋予一种“加法”和“数乘”运算,使其构成线性空间.例如将所有实n 维数对组成的集合,按照“加法”和“数乘”运算构成实数域上的线性空间,记作nR ,称为n 维向量空间.类似地,对次数不超过n 的实系数多项式全体,按通常多项式和多项式加法及数和多项式乘法也构成数域R 上一个线性空间,用n H 表示,称为多项式空间。
数值分析知识点大全总结一、数值计算方法数值计算方法是数值分析的基础,它涵盖了数值逼近、数值积分、插值与拟合、数值微分与数值积分、解线性方程组、求解非线性方程与方程组、解常微分方程等内容。
下面我们将逐一介绍这些方面的知识点。
1. 数值逼近数值逼近是研究如何用简单的函数来近似一个复杂的函数的方法。
常见的数值逼近方法包括多项式逼近、三角函数逼近、曲线拟合等。
其中,最为重要的是多项式逼近,它可以用来近似任意函数,并且具有较好的数学性质。
2. 数值积分数值积分是研究如何用离散的数据来估计连续函数的积分值的方法。
常见的数值积分方法包括梯形公式、辛普森公式、龙贝格公式等。
其中,辛普森公式是一种较为精确的数值积分方法,它可以用来估计任意函数的积分值,并且具有较好的数值稳定性。
3. 插值与拟合插值与拟合是研究如何用离散的数据来构造连续函数的方法。
常见的插值方法包括拉格朗日插值、牛顿插值等。
而拟合方法则是研究如何用简单的函数来拟合复杂的数据,常见的拟合方法包括最小二乘法、最小二乘多项式拟合等。
4. 数值微分与数值积分数值微分与数值积分是研究如何用差分方法来估计导数与积分的值的方法。
常见的数值微分方法包括向前差分、向后差分、中心差分等。
而数值积分方法则可以直接用差分方法来估计积分的值。
5. 解线性方程组解线性方程组是研究如何用迭代法或直接法来求解线性方程组的方法。
常见的迭代法包括雅各比迭代法、高斯-赛德尔迭代法等。
而直接法则是指用消元法来求解线性方程组的方法。
6. 求解非线性方程与方程组求解非线性方程与方程组是研究如何用迭代法来求解非线性方程与方程组的方法。
常见的迭代法包括牛顿法、割线法等。
其中,牛顿法是一种非常高效的求解非线性方程与方程组的方法,它具有收敛速度快的特点。
7. 解常微分方程值积分方法包括龙格-库塔法、变步长欧拉法、变步长龙格-库塔法等。
其中,龙格-库塔法是一种较为精确的数值积分方法,它可以用来求解各种类型的常微分方程。