第3章数值分析曲线拟合
- 格式:ppt
- 大小:378.50 KB
- 文档页数:18
---------------------------------------------------------------最新资料推荐------------------------------------------------------ 数值分析论文--曲线拟合的最小二乘法曲线拟合的最小二乘法姓名:徐志超学号:2019730059 专业:材料工程学院:材料科学与工程学院科目:数值分析曲线拟合的最小二乘法一、目的和意义在物理实验中经常要观测两个有函数关系的物理量。
根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题。
这类问题通常有两种情况:一种是两个观测量 x 与 y 之间的函数形式已知,但一些参数未知,需要确定未知参数的最佳估计值;另一种是 x 与 y 之间的函数形式还不知道,需要找出它们之间的经验公式。
后一种情况常假设 x 与 y 之间的关系是一个待定的多项式,多项式系数就是待定的未知参数,从而可采用类似于前一种情况的处理方法。
在两个观测量中,往往总有一个量精度比另一个高得多,为简单起见把精度较高的观测量看作没有误差,并把这个观测量选作x,而把所有的误差只认为是y 的误差。
设 x 和 y 的函数关系由理论公式 y=f(x; c1, c2, cm)1 / 13(0-0-1)给出,其中 c1, c2, cm 是 m 个要通过实验确定的参数。
对于每组观测数据(xi, yi) i=1, 2,, N。
都对应于 xy 平面上一个点。
若不存在测量误差,则这些数据点都准确落在理论曲线上。
只要选取m 组测量值代入式(0-0-1),便得到方程组yi=f (x;c1,c2,cm)(0-0-2)式中 i=1,2,, m.求 m 个方程的联立解即得 m 个参数的数值。
显然Nm 时,参数不能确定。
在 Nm 的情况下,式(0-0-2)成为矛盾方程组,不能直接用解方程的方法求得 m 个参数值,只能用曲线拟合的方法来处理。
数值计算...........3.-.插值和曲线拟合插值法是实用的数值方法,是函数逼近的重要方法。
在生产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。
当要求知道观测点之外的函数值时,需要估计函数值在该点的值。
如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。
用简单函数y=φ(x)在点x处的值来估计未知函数y=f(x)在x点的值。
寻找这样的函数φ(x),办法是很多的。
φ(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;φ(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。
函数类的不同,自然地有不同的逼近效果。
在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。
根据测量数据的类型:1.测量值是准确的,没有误差。
2.测量值与真实值有误差。
这时对应地有两种处理观测数据方法:1.插值或曲线拟合。
2.回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。
MATLAB中提供了众多的数据处理命令。
有插值命令,有拟合命令,有查表命令。
一维插值插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。
当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。
例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。
interp1(x,y,xi,method)x和y为既有数据的向量,其长度必须相同。
xi为要插值的数据点向量。
method插值方法,‘nearest’/‘linear’/‘cubic’/‘spline’之一,分别为最近点插值/线性插值/分段三次Hermite插值/三次样条插值。
例x=[1.0 2.0 3.0 4.0 5.0]; %输入变量数据xy=[11.2 16.5 20.4 26.3 30.5]; %输入变量数据yx1=2.55; %输入待插值点xy11=interp1(x,y,x1,'nearest') %最近点插值方法的插值结果y12=interp1(x,y,x1,'linear') %线性插值方法的插值结果y13=interp1(x,y,x1,'cubic') %三次Hermite插值方法的插值结果y14=interp1(x,y,x1,'spline') %样条插值方法的插值结果y11 =20.4000y12 =18.6450y13 =18.6028y14 =18.4874plot(x,y)或许最简单插值的例子是MATLAB的作图。
第三章实验作业由物理实验得到下列一组数据:x i 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 y i 33.40 79.50 122.65 159.05 189.15 214.15 238.65 252.50 267.55 280.50 296.65 x i 6.5 7 7.5 8y i 301.65 310.40 318.15 325.15用抛物线2cx bx a y ++=做曲线拟合。
1.N-S 图;C语言程序:#include "stdio.h"#include "conio.h"#include "stdlib.h"#include "math.h"#define N 15//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;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");}}}C语言结果:组员:李遨蔚,杨切,肖天,蒋智慧,陈前广,王爽。
数值分析法相关知识在生产和科学实验中,自变量x 与因变量y 间的函数关系()y f x =有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。
当要求知道其它点的函数值时,需要估计函数值在该点的值。
为了完成这样的任务,需要构造一个比较简单的函数()y x ϕ=,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于已知的值,寻找这样的函数()y x ϕ=有很多方法。
根据测量数据的类型有以下两类处理观测数据的方法。
(1)测量值是准确的,没有误差,一般用插值。
(2)测量值与真实值有误差,一般用曲线拟合。
曲线拟合法已知离散点上的数据集1122{(,),(,),,(,)}n n x y x y x y ,即已知在点集12{,,,}n x x x 上的函数值12{,,,}n y y y ,构造一个解析函数(其图形为一曲线)使()f x 在原离散点i x 上尽可能接近给定的i y 值,这一过程称为曲线拟合。
曲线拟合的一般步骤是先根据实验数据,结合相关定律,将要寻求的最恰当的拟合曲线方程形式预测出来,再用其他的数学方法确定经验公式中的参数。
对于事先给定的一组数据,确定经验公式一般可分为三步进行:(1)、确定经验公式的形式:根据系统和测定的数据的特点,并参照已知图形的特点确定经验公式的形式。
(2)、确定经验公式中的待定系数:计算待定系数的方法有许多常用的法有图示法、均值法、差分法、最小二乘法、插值法等。
(3)、检验:求出经验公式后,还要将测定的数据与用经验公式求出的理论数据作比较,验证经验公式的正确性,必要时还要修正经验公式。
关于确定经验公式的形式,可从以下几个方面入手:(1)、利用已知的结论确定经验公式形式,如由已知的胡克定律可以确定在一定条件下,弹性体的应变与应力呈线性关系等。
(2)、从分析实验数据的特点入手,将之与已知形式的函数图形相对照,确定经验公式的形式。
数值分析实验三:函数逼近与曲线拟合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太大时,在区间两端附近会出现和高次拉格朗日插值函数类似的龙格现象。