曲线拟合的数值计算方法实验
曲线拟合问题的数值试验
曲线拟合问题的数值试验一、算法要求已知数据:x=5,y=1.OO29;x=1O,y=1.OO23;x=15,y=1.OOOO;x=2O,y=O.999O; x=25,y=O.9983; x=3O,y=O.9979; x=35,y=O.9978;x=4O,y=O.9981 x=45,y=O.9987 x=5O,y=O.9996;拟合多项式:P(X)=aO+a1x+a2x^2+•…+an x A n分别对n=2,3,4,5,6 进行数值计算,且根据各自偏差平方和分析拟合效果。
二、源代码及注释#include <stdio.h>#include <conio.h>#include <math.h>#include <process.h>#define N 1O//N 个点#define T 2 //T 次拟合#define W 1//权函数#define PRECISION O.OOOO1float pow_n(float a,int n){int i;if(n==O) return(1);float res=a;for(i=1;i<n;i++){ res*=a;// 自己相乘} return(res);// 返回 a 的平方}void mutiple(float a[][N],float b[][T+1],float c[][T+1]) {float res=O;int i,j,k;for(i=O;i<T+1;i++)for(j=O;j<T+1;j++){res=O;for(k=O;k<N;k++){res+=a[i][k]*b[k][j]; c[i][j]=res;// 返回ab 的内积} } } void matrix_trans(float a[][T+1],float b[][N]) { int i,j;for(i=0;i<N;i++){ for(j=0;j<T+1;j++){ b[j][i]=a[i][j];// 交换}}}void init(float x_y[][2],int n){int i;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]);}}void get_A(float matrix_A[][T+1],float x_y[][2],int n) { int i,j; for(i=0;i<N;i++){ for(j=0;j<T+1;j++){matrix_A[i][j]=W*pow_n(x_y[i][0],j);// 获取输入矩阵}}}void print_array(float array[][T+1],int n){int i,j;for(i=0;i<n;i++) {for(j=0;j<T+1;j++){printf("%-g",array[i][j]);}printf("\n");}}void convert(float argu[][T+2],int n){int i,j,k,p,t;float rate,temp;for(i=1;i<n;i++){for(j=i;j<n;j++){ if(argu[i-1][i-1]==0){ for(p=i;p<n;p++){if(argu[p][i-1]!=0)break;}if(p==n){printf(" 方程组无解!\n");} for(t=0;t<n+1;t++){ temp=argu[i-1][t];argu[i-1][t]=argu[p][t]; argu[p][t]=temp;}} rate=argu[j][i-1]/argu[i-1][i-1]; for(k=i-1;k<n+1;k++){ argu[j][k]-=argu[i-1][k]*rate; if(fabs(argu[j][k])==PRECISION) argu[j][k]=0;}}}}void compute(float argu[][T+2],int n,float root[]) {float temp;for(i=n-1;i>=0;i--){ temp=argu[i][n];for(j=n-1;j>i;j--){temp-=argu[i][j]*root[j];}root[i]=temp/argu[i][i];}}void get_y(float trans_A[][N],float x_y[][2],float y[],int n){int i,j;float temp;for(i=0;i<n;i++){temp=0;for(j=0;j<N;j++){temp+=trans_A[i][j]*x_y[j][1];}y[i]=temp;}}void cons_formula(float coef_A[][T+1],float y[],float coef_form[][T+2]) {int i,j;for(i=0;i<T+1;i++){for(j=0;j<T+2;j++){if(j==T+1) coef_form[i][j]=y[i];elsecoef_form[i][j]=coef_A[i][j];}}}void print_root(float a[],int n){int i,j;printf("%d个点的%d次拟合的多项式系数为:\n",N,T);for(i=0;i<n;i++){printf("a[%d]=%g,",i+1,a[i]);}printf("\n");printf(" 拟合曲线方程为:\ny(x)=%g",a[0]);for(i=1;i<n;i++){printf(" + %g",a[i]);for(j=0;j<i;j++){printf("*X");}}printf("\n");}void process(){floatx_y[N][2],matrix_A[N][T+1],trans_A[T+1][N],coef_A[T+1][T+1],coef_formu[T+1][T+2 ], y[T+1],a[T+1];init(x_y,N);get_A(matrix_A,x_y,N);printf(" 矩阵 A 为:\n");print_array(matrix_A,N);matrix_trans(matrix_A,trans_A);mutiple(trans_A,matrix_A,coef_A);printf(" 法矩阵为:\n");print_array(coef_A,T+1);get_y(trans_A,x_y,y,T+1);cons_formula(coef_A,y,coef_formu);convert(coef_formu,T+1);compute(coef_formu,T+1,a);print_root(a,T+1);}void main(){ process();}三、调试:本程序在调试时,因为代码中的T声明是通过宏定义#define T 2,所以欲达到能对n=2,3,4,5,6切换的目的,还需程序员在代码中修改T的值四、计算结果如图:1.004d1.0021.001口099S0.93®0.957五、说明:本题用C++语言编程,用matlab作图,以此来使报告更加形象,直观。
曲线拟合实验报告[优秀范文5篇]
曲线拟合实验报告[优秀范文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 / = ,计算得到系数矩阵,同时就得到了拟合曲线。
曲线拟合的最小二乘法实验
Lab04.曲线拟合的最小二乘法实验【实验目的和要求】1.让学生体验曲线拟合的最小二乘法,加深对曲线拟合的最小二乘法的理解;2.掌握函数ployfit和函数lsqcurvefit功能和使用方法,分别用这两个函数进行多项式拟合和非多项式拟合。
【实验内容】1.在Matlab命令窗口,用help命令查询函数polyfit和函数lsqcurvefit 功能和使用方法。
2.用多项式y=x3-6x2+5x-3,产生一组数据(xi,yi)(i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用randn产生N(0,1)均匀分布随机数),然后对xi和添加了随机干扰的yi用Matlab提供的函数ployfit用3次多项式拟合,将结果与原系数比较。
再作2或4次多项式拟合,分析所得结果。
3.用电压V=10伏的电池给电容器充电,电容器上t时刻的电压为,其中V0是电容器的初始电压,τ是充电常数。
对于下面的一组t,v数据,用Matlab提供的函数lsqcurvefit确定V0和τ。
t(秒) 0.5 1 2 3 4 5 7 9v(伏) 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63 【实验仪器与软件】1.CPU主频在1GHz以上,内存在128Mb以上的PC;2.Matlab 6.0及以上版本。
实验讲评:实验成绩:评阅教师:200 年月日问题及算法分析:1、利用help命令,在MATLAB中查找polyfit和lsqcurvefit函数的用法。
2、在一组数据(xi,yi)(i=1,2,…,n)上,对yi上添加随机干扰,运用多项式拟合函数,对数据进行拟合(分别用2次,3次,4次拟合),分析拟合的效果。
3、根据t和V的关系画散点图,再根据给定的函数运用最小二乘拟合函数,确定其相应参数。
第一题:(1)>> help polyfitPOLYFIT Fit polynomial to data.P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) ofdegree N that fits the data Y best in a least-squares sense. P is arow vector of length N+1 containing the polynomial coefficients indescending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).[P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and astructure S for use with POLYVAL to obtain error estimates forpredictions. S contains fields for the triangular factor (R) from a QRdecomposition of the Vandermonde matrix of X, the degrees of freedom(df), and the norm of the residuals (normr). If the data Y are random,an estimate of the covariance matrix of P is(Rinv*Rinv')*normr^2/df,where Rinv is the inverse of R.[P,S,MU] = POLYFIT(X,Y,N) finds the coefficients of a polynomial inXHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X). Thiscentering and scaling transformation improves the numerical propertiesof both the polynomial and the fitting algorithm.Warning messages result if N is >= length(X), if X has repeated, ornearly repeated, points, or if X might need centering and scaling.Class support for inputs X,Y:float: double, singleSee also poly, polyval, roots.Reference page in Help browserdoc polyfit>>(2)>> help lsqcurvefitLSQCURVEFIT solves non-linear least squares problems.LSQCURVEFIT attempts to solve problems of the form:min sum {(FUN(X,XDATA)-YDATA).^2} where X, XDATA, YDATA and the valuesX returned by FUN can be vectors ormatrices.X=LSQCURVEFIT(FUN,X0,XDATA,YDATA) starts at X0 and finds coefficients Xto best fit the nonlinear functions in FUN to the data YDATA (in theleast-squares sense). FUN accepts inputs X and XDATA and returns avector (or matrix) of function values F, where F is the same size asYDATA, evaluated at X and XDATA. NOTE: FUN should returnFUN(X,XDATA)and not the sum-of-squares sum((FUN(X,XDATA)-YDATA).^2).((FUN(X,XDATA)-YDATA) is squared and summed implicitly in thealgorithm.)X=LSQCURVEFIT(FUN,X0,XDATA,YDATA,LB,UB) defines a set of lower andupper bounds on the design variables, X, so that the solution is in therange LB <= X <= UB. Use empty matrices for LB and UB if no boundsexist. Set LB(i) = -Inf if X(i) is unbounded below; set UB(i) = Inf ifX(i) is unbounded above.X=LSQCURVEFIT(FUN,X0,XDATA,YDATA,LB,UB,OPTIONS) minimizes with thedefault parameters replaced by values in the structure OPTIONS, anargument created with the OPTIMSET function. See OPTIMSET for details.Used options are Display, TolX, TolFun, DerivativeCheck, Diagnostics,FunValCheck, Jacobian, JacobMult, JacobPattern, LineSearchType,LevenbergMarquardt, MaxFunEvals, MaxIter, DiffMinChange andDiffMaxChange, LargeScale, MaxPCGIter, PrecondBandWidth, TolPCG,OutputFcn, and TypicalX. Use the Jacobian option to specify that FUNalso returns a second output argument J that is the Jacobian matrix atthe point X. If FUN returns a vector F of m components when X has length n, then J is an m-by-n matrix where J(i,j) is the partialderivative of F(i) with respect to x(j). (Note that the Jacobian J isthe transpose of the gradient of F.)[X,RESNORM]=LSQCURVEFIT(FUN,X0,XDATA,YDATA,...) returns the valueof thesquared 2-norm of the residual at X: sum {(FUN(X,XDATA)-YDATA).^2}.[X,RESNORM,RESIDUAL]=LSQCURVEFIT(FUN,X0,...) returns the value of residual,FUN(X,XDATA)-YDATA, at the solution X.[X,RESNORM,RESIDUAL,EXITFLAG]=LSQCURVEFIT(FUN,X0,XDATA,YDATA,...) returnsan EXITFLAG that describes the exit condition of LSQCURVEFIT. Possiblevalues of EXITFLAG and the corresponding exit conditions are1 LSQCURVEFIT converged to a solution X.2 Change in X smaller than the specified tolerance.3 Change in the residual smaller than the specified tolerance.4 Magnitude of search direction smaller than the specified tolerance.0 Maximum number of function evaluations or of iterations reached.-1 Algorithm terminated by the output function.-2 Bounds are inconsistent.-4 Line search cannot sufficiently decrease the residual alongthecurrent search direction.[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT]=LSQCURVEFIT(FUN,X0,XDATA,YDATA ,...)returns a structure OUTPUT with the number of iterations taken inOUTPUT.iterations, the number of function evaluations inOUTPUT.funcCount,the algorithm used in OUTPUT.algorithm, the number of CG iterations (ifused) in OUTPUT.cgiterations, the first-order optimality (if used)inOUTPUT.firstorderopt, and the exit message in OUTPUT.message.[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA]=LSQCURVEFIT(FUN,X0,XDAT A,YDATA,...)returns the set of Lagrangian multipliers, LAMBDA, at the solution:LAMBDA.lower for LB and LAMBDA.upper for UB.[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA,JACOBIAN]=LSQCURVEFIT(FU N,X0,XDATA,YDATA,...)returns the Jacobian of FUN at X.ExamplesFUN can be specified using @:xdata = [5;4;6]; % example xdataydata = 3*sin([5;4;6])+6; % example ydatax = lsqcurvefit(@myfun, [2 7], xdata, ydata)where myfun is a MATLAB function such as:function F = myfun(x,xdata)F = x(1)*sin(xdata)+x(2);FUN can also be an anonymous function:x = lsqcurvefit(@(x,xdata) x(1)*sin(xdata)+x(2),[2 7],xdata,ydata)If FUN is parameterized, you can use anonymous functions to capture theproblem-dependent parameters. Suppose you want to solve the curve-fittingproblem given in the function myfun, which is parameterized by its secondargument c. Here myfun is an M-file function such asfunction F = myfun(x,xdata,c)F = x(1)*exp(c*xdata)+x(2);To solve the curve-fitting problem for a specific value of c, first assignthe value to c. Then create a two-argument anonymous function that capturesthat value of c and calls myfun with three arguments. Finally, pass thisanonymous function to LSQCURVEFIT:xdata = [3; 1; 4]; % example xdataydata = 6*exp(-1.5*xdata)+3; % example ydatac = -1.5; % define parameterx = lsqcurvefit(@(x,xdata) myfun(x,xdata,c),[5;1],xdata,ydata) See also optimset, lsqnonlin, fsolve, @, inline.Reference page in Help browserdoc lsqcurvefit>>第二题:1 三次线性拟合clear allx=0:0.5:5;y=x.^3-6*x.^2+5*x-3;y1=y;for i=1:length(y)y1(i)=y1(i)+rand;enda=polyfit(x,y1,3);b=polyval(a,x);plot(x,y,'*',x,b),aa =1.0121 -6.1033 5.1933 -2.4782② 二次线性拟合clear allx=0:0.5:20;y=x.^3-6*x.^2+5*x-3;y1=y;for i=1:length(y)y1(i)=y1(i)+rand;enda=polyfit(x,y1,2);b=polyval(a,x);plot(x,y,'*',x,b),aa =23.9982 -232.0179 367.9756③ 四次线性拟合clear allx=0:0.5:20;y=x.^3-6*x.^2+5*x-3;y1=y;for j=1:length(y)y1(j)=y1(j)+rand;enda=polyfit(x,y1,4);b=polyval(a,x);plot(x,y,'*',x,b),aa =-0.0001 1.0038 -6.0561 5.2890 -2.8249 >>第三题:1 拟合曲线为:f(x)=定义函数:function f=fun(a,x)f=a(1)-(a(1)-a(2))*exp(-a(3)*x);主程序:clear allclcx=[0.5 1 2 3 4 5 7 9];y=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63];a0=[1 1 1];a=lsqcurvefit('fun',a0,x,y);y1=a(1)-(a(1)-a(2))*exp(-a(3)*x);plot(x,y,'r*',x,y1,'b')V1=a(2)tei=1/a(3)Optimization terminated: relative function value changing by less than OPTIONS.TolFun.。
数值计算方法 曲线拟合1 - 曲线拟合1
曲线拟合的程序设计
L={{-1,0.22},{-0.5,0.8},{0,2},{0.75,2.5},{1,3.75}}; k1=ListPlot[L,Prolog->AbsolutePointSize[15]] f=Fit[L,{1,x,x^2,x^3,x^4,x^5},x]
曲 线 拟 合
曲线拟合的程序设计
Clear[X,Y,f,k1,k2] L={{2,1},{3,6},{5,22},{7,46},{8,61}}; f=Fit[L,{1,x^2},x]
曲 k1=ListPlot [L,Prolog->AbsolutePointSize[15]] 线 k2=Plot[f,{x,0,10}] 拟 Show[k1,k2] 合
+ + ++
a1 a2u
u 1 x
a1ea2x ln ln a1 a2 x
情形分析
例 3.1 根据离散数据做出线性拟合并计算均方误差:
xi
-1.00
-0.50
0
0.75
1.00
曲 线
yi
0.2200 0.8000 2.0000 2.5000 3.7500
拟
设拟合直线 p( x) a0 a1 x
化简法方程
5 0.25
0.25 2.8125
a0 a1
9.45 5.005
求解法方程 a0 1.80906, a1 1.61875
求拟合曲线 ( x) 1.80906 1.61875x
拟合的误差
5
R ( p( xi ) yi )2 0.42 i 1
曲线拟合的程序设计
Clear[X,Y,f,k1,k2]
曲线拟合的数值计算方法实验
曲线拟合的数值计算方法实验Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】曲线拟合的数值计算方法实验【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。
曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的分析两变量间的关系。
曲线直线化是曲线拟合的重要手段之一。
对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按原理求出变换后变量的,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为,实现对资料的曲线拟合。
常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。
关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束一、实验目的1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。
2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。
3.掌握实现曲线拟合的编程技巧。
二、实验原理1.曲线拟合曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。
用解析表达式逼近的一种方法。
在或社会活动中,通过实验或观测得到量x 与y 的一组数据对(X i ,Y i )(i=1,2,...m ),其中各X i 是彼此不同的 。
人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x ,c )来反映量x 与y 之间的依赖关系,即在一定意义下“最佳”地逼近或拟合已知数据。
f(x ,c)常称作拟合模型 ,式中c=(c 1,c 2,…c n )是一些待定参数。
当c 在f 中出现时,称为线性模型,否则称为。
有许多衡量拟合优度的标准,最常用的一种做法是选择参数c 使得拟合模型与实际在各点的(或),c)-f (f y e k k k 的平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。
曲线拟合数值方法的介绍与其在试验数据分析中的应用
题目:曲线拟合数值方法简介与其在实验数据分析中的应用学院化工学院专业工业催化年级2014级博姓名赵娜2015年6月9日曲线拟合数值方法的简介与其在实验数据分析中的应用一.简介我的专业研究方向为工业催化,听上去和数学毫不沾边,但在大量的数据处理中,我们必须应用到各种数据处理方法,数据拟合分析就是其中之一。
曲线拟合有多种方法,下面我们来简单介绍一下。
首先介绍下曲线拟合的定义:曲线拟合是用连续曲线近似地刻画或比拟平面上离散点组所表示的坐标之问的函数关系的一种数据处理方法。
即在一定意义下“最佳”地逼近或拟合已知数据。
二.拟合方法简述曲线拟合的方法有很多种,各有各的优势。
再此我将简单介绍最小二乘法、移动最小二乘法、NURBS三次曲线拟合和基于RBF曲线拟合四种曲线拟合方法。
1.最小二乘法最小二乘法是一种早期的曲线拟合方法,主要利用最小化误差的平方和来寻找数据的最佳函数匹配。
该方法求出数据点到拟合函数的距离和最小,且最小二乘法的拟合函数可以是一元二次,也可一元多次,多元多次。
2.移动最小二乘法移动最小二乘法是对最小二乘法进行的改进优化得到的,通过引入紧支概念,选取适合的权函数,算出拟合函数来替代最小二乘法中的拟合函数,以得到更高的拟合精度及更好的拟合光滑度。
3.NURBS三次曲线拟合NURBS作为定义工业产品几何形状的唯一数学方法,是现代图形学的基础,因此NURBS曲线拟合有着重要的实际意义,利用OpenGL 的NURBS曲线拟合函数,即可得到NURBS曲线。
4.基于RBF的曲线拟合径向神经网络是以径向基函数(RBF)作为隐单元的“基”,构成隐含层空间,隐含层对输入矢量进行变换将低维的模式输入数据变换到高维空间内,使得在低维空间内的线性不可分问题在高维空间内线性可分。
这是一种数学分析方法,具有较快的收敛速度、强大的抗噪和修复能力。
三.数据处理中的应用如上图所示,此为催化剂活性的动力学示意图,在实验中记录不同条件下的各个点,最后采用曲线拟合的方法得到动力学曲线,并且使得实验误差最小。
数据拟合与曲线拟合实验报告
数据拟合与曲线拟合实验报告【数据拟合与曲线拟合实验报告】1. 实验介绍数据拟合与曲线拟合是数学和统计学中非常重要的概念和方法。
在科学研究、工程技术和数据分析中,我们经常会遇到需要从一组数据中找到代表性曲线或函数的情况,而数据拟合和曲线拟合正是为了解决这一问题而存在的。
2. 数据拟合的基本原理数据拟合的基本思想是利用已知的一组数据点,通过某种数学模型或函数,找到一个能够较好地描述这组数据的曲线或函数。
常见的数据拟合方法包括最小二乘法、最小二乘多项式拟合、指数拟合等。
在进行数据拟合时,我们需要考虑拟合的精度、稳定性、可行性等因素。
3. 曲线拟合的实验步骤为了更好地理解数据拟合与曲线拟合的原理与方法,我们进行了一组曲线拟合的实验。
实验步骤如下:- 收集一组要进行拟合的数据点;- 选择合适的拟合函数或模型;- 利用最小二乘法或其他拟合方法,计算拟合曲线的参数;- 对拟合结果进行评估和分析;- 重复实验,比较不同的拟合方法和模型。
4. 数据拟合与曲线拟合的实验结果通过实验,我们掌握了数据拟合和曲线拟合的基本原理与方法。
在实验中,我们发现最小二乘法是一种简单而有效的数据拟合方法,能够较好地逼近实际数据点。
我们还尝试了多项式拟合、指数拟合等不同的拟合方法,发现不同的拟合方法对数据拟合的效果有着不同的影响。
5. 经验总结与个人观点通过这次实验,我们对数据拟合和曲线拟合有了更深入的理解。
数据拟合是科学研究和实践工作中不可或缺的一部分,它能够帮助我们从一堆杂乱的数据中提炼出有用的信息和规律。
曲线拟合的精度和稳定性对研究和实践的结果都有着重要的影响,因此在选择拟合方法时需要慎重考虑。
6. 总结在数据拟合与曲线拟合的实验中,我们深入探讨了数据拟合和曲线拟合的基本原理与方法,并通过实验实际操作,加深了对这一概念的理解。
数据拟合与曲线拟合的重要性不言而喻,它们在科学研究、工程技术和信息处理中发挥着重要的作用,对我们的日常学习和工作都具有重要的指导意义。
实验五曲线拟合
而只要 p(xi) yi 总体上 尽可能小
2、求曲线拟合函数的标准
(1)用各点误差绝
m
对值的和表示
R p(x ) y
1
i
i
i1
max (2)用各点误差按 绝对值的最大值表示
R
p(x ) y
i
i
1im
m
(3)用各点误差的 R ( p(x ) y )2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
流 3.19 3.22 3.26 3.25 3.23 3.19 3.20 3.13 3.06 2.98 速
美国人口问题
据美国人口普查局数据: 从1790每隔10年至2000年的总人口(单位:百万)如下示
t = 1790:10:2000; p = [3.9, 5.3 , 7.2 , 9.6 , 12.9 , 17.1 , 23.1 , 31.4 , 38.6 , 50.2 , 62.9 ,
76 , 92 , 105.7 , 122.8 , 131.7 , 150.7 , 179 , 205 , 226.5 , 251.4 , 281.422]; 预测2001,2002年的美国人口数?并与调查数据285.318, 288.369比较,选择拟合较好的模型。
二、问题的解决
1、问题的抽象 在实验中经常给出一组离散点,
试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。
X 1200 1600 2000 2400 2800 3200 3600 4000 Y 1200 1130 1250 1280 1230 1040 900 500 700 1600 1320 1450 1420 1400 1300 700 900 850 2000 1390 1500 1500 1400 900 1100 1060 950 2400 1500 1200 1100 1350 1450 1200 1150 1010 2800 1500 1200 1100 1550 1600 1550 1380 1070 3200 1500 1550 1600 1550 1600 1600 1600 1550 3600 1480 1500 1550 1510 1430 1300 1200 980
数值计算方法 曲线拟合2 - 曲线拟合2
曲 a1=-0.2347;
线
a2=2.9943; d=300;
拟 v=1/Exp[a2]* D0
合 k=-a1
c1=10;
c0=25;
D0=v*c0
p=v*(c0-c1)
T=N[1/k*Log[c0/c1],8]
参考数据
初始剂量:
D0=(mg)
中心室血液容积: V=15.02 (L)
重复注入固定剂量: D=225.3(mg)
大学:
创新的活水
大学:
真理的福地
大学:
文化的酵母
大学:
知识的源泉
大学:
道德的高地
大学:
良心的堡垒
学府:学者的共同体 学术:教师的活动 学业:学生的活动 学人:追求学问的人
雅典神庙门廊石碑上的警世名言:
人对社会的贡献
= k*F(广度、深度、准确度)
古希腊思想家苏格拉底 :我们必须自知”,“我们必须自觉自己的无知”
k2=Plot[y,{x,0,2}]
Show[k1,k2]
程序设计
课后实验课题
已知某模型快速静脉注射下的血药浓度数据 (t=0 注射300mg ) t (h) 0.25 0.5 1 1.5 2 3 4 6 8 g (g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01
认识自己, 方能认识人生。
智慧意味着自知无知 !
我平生只知道一件事: 我为什么是那么无知。
感悟:品质建设最重要
1 做什么?
境界 1
境界 2
2 怎样做?
境界 3
境界 4
境界 5
3 怎样做好 ?
4 怎样做精 ?
数值分析曲线拟合的最小二乘法实验报告
数值分析曲线拟合的最小二乘法实验报告数值分析曲线拟合的最小二乘法实验报告篇一:数值分析设计曲线拟合的最小二乘法曲线拟合的最小二乘法一、目的和意义在科学实验的统计方法研究中,往往要从一组实验数据?xi,yi??i?0,1,2,?,m?中,寻找自变量x与因变量y之间的函数关系y?F?x?。
由于观测数据往往不准确,因此不要求y?F?x?经过所有点?xi,yi?,而只要求在给定点xi上误差而只要求所在所有给定点xi上的误差?i?F(xi)?yi ?i?0,1,2,?,m?按某种标准最小。
若记????0,?1,?2,?,?m?,就是要求向量?的范数如果用最大范数,计算上困难较大,通常采用欧式范数?最小。
2T 作为误差度量的标准。
F?x?的函数类型往往与实验的物理背景以及数据的实际分布有关,它一般含有某些待定参数。
如果F?x?是所有待定参数的线性函数,那么相应的问题称为线性最小二乘问题,否则称为非线性最小二乘问题。
最小二乘法还是实验数据参数估计的重要工具。
这是因为这种方法比其他方法更容易理解,即使在其他方法失效的情况下,用最小二乘法还能提供解答,而且从统计学的观点分析,用该方法求得各项估计具有最优统计特征,因此这一方法也是系统识别的重要基础。
线性最小二乘问题可以借助多元微分学知识通过求解法方程组得到解答。
用最小二乘法求拟合曲线时,首先要确定S?x?的形式。
这不单纯是数学问题,还与所研究问题的运动规律以及所得观测数据?xi,yi?有关;通常要从问题的运动规律以及给定数据描图,确定S?x?的形式,并通过实际计算选出较好的结果。
为了使问题的提法更有一般性,通常把最小二乘法中的? 22 都考虑为加权平方和22 ? ????xi???S?xi??f?xi??? i?0 m 2 这里??xi??0是?a,b?上的加权函数,它表示不同点?xi,f?xi?处的数据比重不同。
?二、计算方法在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y与时间t的拟合曲线。
数值分析大作业曲线拟合的最小二乘法
数值分析上机作业实验报告专业:建筑与土木工程姓名:学号:联系电话:课题四 曲线拟合的最小二乘法一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。
在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量 y 与时间t 的拟合曲线。
二、要求1 、用最小二乘法进行曲线拟合;2 、近似解析表达式为()t ϕ=a 1t+a 2t 2+a 3t 33 、打印出拟合函数()t ϕ,并打印出()tj ϕ与()y tj 的误差,j=1,2...,12:4 、另外选取一个近似表达式,尝试拟合效果的比较;5 、* 绘制出曲线拟合图﹡。
三、目的和意义1 、掌握曲线拟合的最小二乘法;2 、最小二乘法亦可用于解超定线代数方程组;3 、探索拟合函数的选择与拟合精度间的关系。
四、实验结果:1.用最小二乘法做出的曲线拟合为三次多项式a1= -0.0052 ,a2= 0.2634 ,a3= 0.0178。
()tϕ= (-0.0052) t+ (0.2634) t2 + (0.0178) t3三次多项式的误差平方和=0.2583。
图形为:图形上红线表示拟合曲线,*表示实验所给的点。
源代码为: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]; a1=polyfit(x,y,3) %三次多项式拟合%b1= polyval(a1,x)r1= sum((y-b1).^2) %三次多项式误差平方和%plot(x,y,'*') %用*画出x,y图像%hold onplot(x,b1, 'r') %用红色线画出x,b1图像%(说明本程序调用了MATLAB中的函数polyfit、polyval、plot)2.另外选取几个近似表达式:主要选取6次、9次和12次的拟合表达式。
数值计算方法实验报告5—温度分布的曲线拟合
分别利用:线性最小二乘拟合、多项式拟合(最小二乘抛物线拟合 ) 、样条插值 拟合(三次样条拟合) 、三角多项式拟合、贝塞尔曲线拟合这五种方法对这组温 度数据进行拟合,通过拟合的结果比较这五种方法的优缺点。
3.实验原理及分析:
«数值计算方法»实验报告
①线性最小二乘拟合法:
设{( x , y )} 有 N个点,其中横坐标{x } 是确定的。最小二乘拟合曲线为: k k k =1 k k =1 y = Ax + B, 其系数满足如下正规方程:
2.实验内容:
已知某地区一天的温度数据如下: 时间,p.m 1 2 3 4 5 6 7 8 9 10 11 午夜 66 66 65 64 63 63 62 61 60 60 59 58 温度 时间,a.m 1 2 3 4 5 6 7 8 9 10 11 正午 58 58 58 58 57 57 57 58 60 64 67 68 温度
m0 =
包含m0和m N的方程
m 3 m 3 ' (d0 − S' (x0 )) − 1 , mN = (S (xN )− dN−1 )− N−1 h0 2 hN−1 2
2.Natural样条 3.外推样条
m0 = 0, mN = 0 h0 (m2 − m h (m − m ) 1) , mN = mN−1 + N−1 N−1 N−2 h1 hN−2
N
E ( A, B, C ) = ∑ ( Axk2 + Bx k + C − y k ) 2 , 分别对A, B, C求偏导数:
k =1
∂E ( A, B, C ) ∂E ( A, B, C ) ∂E ( A, B, C ) = 0, = 0, =0 A B C 最终得到上述正规方程。
实验三 曲线拟合最小二乘法
实验三曲线拟合最小二乘法一、实验目的(1)掌握最小二乘法,(2)熟练掌握求函数的近似最小二乘拟合多项式(3)掌握数据拟合的思想,清楚数据拟合与插值法的区别及最小二乘法原理在数据拟合中的重要作用及最小二乘法解的求法。
二、实验(或算法)原理最小二乘法(又称最小平方法)是一种数学优化技术。
它通过最小化误差的平方和寻找数据的最佳函数匹配。
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
最小二乘法还可用于曲线拟合。
其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
最小二乘法拟合:对给定数据点{(Xi,Yi)}(i=0,1,…,m),在取定的函数类Φ中,求p(x)∈Φ ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。
从几何意义上讲,就是寻求与给定点 {(XiYi)}(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。
函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。
三、实验步骤(1)根据算法事先写出相应程序。
(2)启动PC机,进入vc集成环境,输入代码。
(3)编译调试。
(4)调试通过,计算出正确结果。
四、代码#include<stdio.h>#include<math.h>#include<conio.h>float cf(int i,float f){float g=1.0;while(i--)g*=f;return g;}void ColPivot(float a[99][99], int n, float b[99][1],float x[99]){float max,m,temp;int k,q=0,i,j,I;for(k=0;k<n && q==0;k++){max=a[k][k];for(i=k+1;i<n;i++)if(fabs(max)<fabs(a[i][k])){max=a[i][k];I=i;}if(max==0)q=1;else{if(I!=k){temp=b[I][0]; b[I][0]=b[k][0];b[k][0]=temp;for(j=k;j<n;j++){temp=a[I][j]; a[I][j]=a[k][j];a[k][j]=temp;}}for(i=k+1;i<n;i++){m=a[i][k]/a[k][k];b[i][0]=b[i][0]-b[k][0]*m;for(j=0;j<n;j++)a[i][j]=a[i][j]-a[k][j]*m;}}}for(i=n-1;i>=0;i--){for(j=n-1;j>=i+1;j--)b[i][0]=b[i][0]-a[i][j]*x[j];x[i]=b[i][0]/a[i][i];}}void main(){float x[99],y[99],z[99],s[99][99],t[99][1]; int n,m,i,j,k;printf("n=");scanf("%d",&n);printf("m=");scanf("%d",&m);printf("y[%]=",n);for(i=0;i<n;i++)scanf("%f",&y[i]);printf("z[%d]=",n);for(i=0;i<n;i++)scanf("%f",&z[i]);for(i=0;i<=m;i++){for(j=0;j<=m;j++){s[i][j]=0.0;for(k=0;k<=n-1;k++)s[i][j]+=cf(i+j,y[k]);}t[i][0]=0.0;for(j=0;j<=n-1;j++)t[i][0]+=z[j]*cf(i,y[j]);}for(i=0;i<=m;i++)s[i][m+1]=t[i][0];for(i=0;i<=m;i++){for(j=0;j<=m+1;j++) printf("%f\t",s[i][j]);printf("\n");}ColPivot(s,m+1,t,x);printf("\n\n");for(i=0;i<=m;i++)printf("\na[%d]=%f",i,x[i]); printf("\n\n");}四、实验结果、实验体会通过实验的验证,可以更深刻地理解曲线拟合最小二乘法在数值计算的重要性,同时了解了其基本原理在计算机数值拟合的应用,更深刻地理解了曲线拟合最小二乘法的计算原理。
两条曲线拟合率自动计算方法
两条曲线拟合率自动计算方法摘要:一、引言1.背景介绍2.研究目的二、曲线拟合方法概述1.曲线拟合的基本概念2.常见曲线拟合方法简介三、两条曲线拟合率自动计算方法1.算法原理2.计算步骤3.算法优缺点分析四、实证分析1.数据来源及处理2.拟合结果展示3.结果分析与讨论五、结论与展望1.研究结论2.研究局限3.未来研究方向正文:一、引言1.背景介绍在科学研究、工程应用等领域,经常需要对实验数据进行曲线拟合,以揭示数据之间的关系。
两条曲线的拟合更是常见,如线性拟合、多项式拟合等。
对于多条曲线拟合,已有成熟的自动计算方法。
然而,针对两条曲线的拟合,尚未有统一的自动计算方法。
2.研究目的本文旨在提出一种针对两条曲线的拟合率自动计算方法,以满足实际应用中的需求。
二、曲线拟合方法概述1.曲线拟合的基本概念曲线拟合是指在给定数据点的基础上,通过一定的数学模型来描述数据之间的关系。
2.常见曲线拟合方法简介常见的曲线拟合方法包括线性拟合、多项式拟合、指数拟合等。
三、两条曲线拟合率自动计算方法1.算法原理本文提出的两条曲线拟合率自动计算方法,基于最小二乘法原理,通过求解误差平方和最小的一组参数,实现对两条曲线的拟合。
2.计算步骤(1)确定拟合函数形式;(2)构建误差平方和目标函数;(3)求解目标函数最小值对应的参数;(4)根据求解得到的参数,绘制拟合曲线。
3.算法优缺点分析优点:计算简便,易于实现自动化;缺点:对初始参数敏感,可能出现局部最优解。
四、实证分析1.数据来源及处理本文以某实验数据为例,共有10个数据点。
首先对数据进行预处理,包括去除异常值、填补缺失值等。
2.拟合结果展示采用本文提出的自动计算方法,对两条曲线进行拟合。
拟合结果如图所示,红色点为实际数据点,蓝色线为拟合曲线。
3.结果分析与讨论由拟合结果可知,本文提出的自动计算方法能够较好地拟合两条曲线。
同时,通过比较拟合曲线与实际数据点的误差,评估拟合效果。
数值分析-曲线拟合
数学与计算科学学院
《数值分析》实验报告
题目:曲线拟合
专业:信息与计算科学
学号:
指导教师:
成绩:
二零一五年四月二十四日《数 Nhomakorabea分析》实验报告(2)
4.4000 0.0000 3.1328 0
0.0000 3.1328 0 2.6259
b =
2.7946 -0.0000 0.3282 0.0000
a =
0.4841 -0.0000 -0.5752 0.0000
quxianyihe
xe =
Columns 1 through 8
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
for i=1:nm
for j=1:i
G(i,j)=sum(xe(i,:).*xe(j,:).*w);
G(j,i)=G(i,j);
end;
b(i)=sum(xe(i,:).*yp.*w);
end;
%拟合曲线步骤三,解方程组,求基函数的系数a(1),a(2),a(3),a(4)
a=b/G;
G
b
a
pause
-1.0000 -0.8000 -0.6000 -0.4000 -0.2000 0 0.2000 0.4000
1.0000 0.6400 0.3600 0.1600 0.0400 0 0.0400 0.1600
-1.0000 -0.5120 -0.2160 -0.0640 -0.0080 0 0.0080 0.0640
数值计算—拟合曲线
实验报告班级:计科1101 姓名:杨玲 学号:201126100130一、实验目的用最小二乘法求多项式拟合曲线。
二、实验方法1.首先用Matlab 绘制出拟合曲线,得到拟合函数。
2.用C++语言计算出系数,就是根据书上的公式,计算出各个值,然后再利用之前的顺序消元法求出各个系数值。
三、实验代码clearclcx=[1,3,4,5,6,7,8,9,10]y=[10,5,4,2,1,1,2,3,4]z=polyfit(x,y,2)plot(x,y,'r-*')hold on;f=poly2sym(z)ezplot(f,[0,10])0123456789102468101214x 4820124582082567/18014398509481984 x 2-...+16017/1190#include <iostream>#include <iomanip>using namespace std;void main(){int x[9]={1,3,4,5,6,7,8,9,10},y[9]={10,5,4,2,1,1,2,3,4}; double sum1=0;for(int p=0;p<9;p++){sum1+=x[p];}double sum2=0;for(int q=0;q<9;q++){sum2+=x[q]*x[q];}double sum3=0;for(int g=0;g<9;g++){sum3+=x[g]*x[g]*x[g];}double sum4=0;for(int w=0;w<9;w++){sum4+=x[w]*x[w]*x[w]*x[w];}double sum5=0;for(int r=0;r<9;r++){sum5+=y[r];}double sum6=0;for(int t=0;t<9;t++){sum6+=x[t]*y[t];}double sum7=0;for(int f=0;f<9;f++){sum7+=x[f]*x[f]*y[f];}//===================================================floata[3][4]={9,sum1,sum2,sum5,sum1,sum2,sum3,sum6,sum2,sum3,sum4,sum7},XX[3];//---------------------------------------for (int k=0;k<2;k++){for (int i=k+1;i<3;i++){float l=a[i][k]/a[k][k];for (int j=k+1;j<4;j++){a[i][j]=a[i][j]-l*a[k][j];}}} //消元for (int m=2;m>=0;m--){float sum=0;for (int j=m+1;j<3;j++){sum+=a[m][j]*XX[j];}XX[m]=(a[m][3]-sum)/a[m][m];} //计算//===========================================for (int h=0;h<3;h++){cout<<"XX["<<h+1<<"]="<<XX[h]<<endl;}cout<<"y="<<XX[2]<<"x^2"<<XX[1]<<"x+"<<XX[0]<<endl;cout<<"最低点位置:("<<(-1)*XX[1]/(2*XX[2])<<","<<(4*XX[0]*XX[2]-XX[1]*XX[1])/(4*XX[2])<<")"<< endl;}四、实验结果及其讨论实验结果有很小的误差,这是计算机本身的保留的小数位引起的五、总结通过本次实验,我开始会使用了Matlab软件,并且产生了浓厚的兴趣!另外,这次实验的代码,可能有点笨拙,不是很技巧,因为是直接计算出各个值在进行计算的,循环的次数很多,效率不是很高。
数学实验—曲线拟合
实验问题
据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数
1949 541.67 1974 908.59
1954 1959 602.66 672.09
1979 1984 975.42 1034.75
1964 1969 704.99 806.71
1989 1994 1106.76 1176.74
(1)在直角坐标系上作出人口数的图象。
(2)建立人口数与年份的函数关系,并估算1999 年的人口数。
y ax b 线性模型
如何确定a,b?
一、曲线拟合
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L,n, xi 互不相同,寻求一个函数(曲线)y f (x),
探测到一组等分点位置的深度数据如下表所示.
25
21个等分点处的深度
分点 0
1
2
3
4
5
6
7
8
9
深度 9.01 8.96 7.96 7.96 8.02 9.05 10.13 11.18 12.26 13.28 (m)
10 11 12 13 14 15 16 17 18 19 20
13.32 12.61 11.29 10.22 9.15 7.95 7.95 8.86 9.81 10.80 10.93
人口(百 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2
万)
年份 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
人口(百 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
数值分析实验之拟合
数值分析实验之拟合拟合是数值分析中的重要内容之一,通过对已知数据进行拟合,可以得到未知数据的近似值,从而进行预测和分析。
本次实验的目的是通过拟合方法,对给定的数据集进行曲线拟合,并分析拟合结果的准确性和适用性。
实验步骤:1.数据收集:从已有的数据集中选择一组适当的数据用于拟合实验。
这些数据可能是实验数据、调查数据或者通过其他方法获得的数据。
为了方便分析,我们选择一个二次曲线的数据集作为示例。
2. 选择拟合模型:根据数据的性质和曲线的特点,选择合适的拟合模型。
在本次实验中,我们选择二次曲线模型进行拟合。
该模型可以表示为y = ax^2 + bx + c,其中a、b、c是待求的参数。
3.参数估计:通过最小二乘法等统计方法,对待求参数进行估计。
最小二乘法是常用的参数估计方法,它通过最小化残差的平方和来确定最佳参数估计值。
在本次实验中,可以利用MATLAB或者其他数值计算软件来实现最小二乘法。
4.拟合结果评估:将估计获得的参数代入拟合模型中,得到拟合曲线,并将其与原始数据进行对比。
在本次实验中,可以通过绘制原始数据和拟合曲线的图像,观察拟合效果的好坏。
5.拟合结果分析:分析拟合结果的准确性和适用性。
可以从图像上观察拟合曲线与原始数据的拟合程度,如果两者重合度较高,则拟合结果较为准确。
此外,还可以比较拟合曲线的误差和残差等指标,来评估拟合结果的质量。
实验结果分析:通过以上步骤,我们得到了二次曲线拟合的结果。
拟合曲线与原始数据的重合度较高,说明拟合效果较好。
此外,通过计算拟合曲线的误差和残差,可以得到更加准确的评估结果。
在本次实验中,我们选择了二次曲线模型进行拟合。
然而,在实际应用中,并不是所有的数据都适合二次曲线模型。
根据实际情况,选择合适的拟合模型非常重要。
如果选择不当,将会导致拟合结果的不准确和误导性。
总结:拟合是数值分析中一项重要的实验内容,通过对已知数据进行拟合,可以获得未知数据的近似值,并进行预测和分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
曲线拟合的数值计算方法实验【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。
曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。
曲线直线化是曲线拟合的重要手段之一。
对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。
常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。
关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束一、实验目的1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。
2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。
3.掌握实现曲线拟合的编程技巧。
二、实验原理1.曲线拟合曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。
用解析表达式逼近离散数据的一种方法。
在科学实验或社会活动中,通过实验或观测得到量x与y的一组数据对(X i,Y i)(i=1,2,...m),其中各X i 是彼此不同的。
人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或拟合已知数据。
f(x,c)常称作拟合模型,式中c=(c1,c2,…c n)是一些待定参数。
当c在f中线性出现时,称为线性模型,否则称为非线性模型。
有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在各点的残差(或离差),c)-f (f y e k k k =的加权平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。
有许多求解拟合曲线的成功方法,对于线性模型一般通过建立和求解方程组来确定参数,从而求得拟合曲线。
至于非线性模型,则要借助求解非线性方程组或用最优化方法求得所需参数才能得到拟合曲线,有时称之为非线性最小二乘拟合。
曲线拟合:贝塞尔曲线与路径转化时的误差。
值越大,误差越大;值越小,越精确。
2.最小二乘法拟合:最小二乘法(又称最小平方法)是一种数学优化技术。
它通过最小化误差的平方和寻找数据的最佳函数匹配。
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
最小二乘法还可用于曲线拟合。
其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
函数曲线为: y=Ax+B其中系数满足下列的正规方程:∑∑∑====⎪⎭⎫⎝⎛+⎪⎭⎫ ⎝⎛Nk kk N k k N k k y x B x A x 1112∑∑===+⎪⎭⎫⎝⎛Nk kN k k y NB A x 113.幂函数拟合:函数曲线为:设(){}Νk k ,k y x 1=有N 个点,其中横坐标是确定的。
最小二乘幂函数拟合曲线的系数A 为:)/()(121∑∑===Nk Mk Nk k Mk x y x A 、4.对数函数拟合:对数函数(lograrithmic function )的标准式形式为 )0(ln a Y >+=X X bb>0时,Y随X增大而增大,先快后慢;b<0时,Y随X增大而减少,先快后慢,见图12.4(c)、(d)。
当以Y和lnX绘制的散点图呈直线趋势时,可考虑采用对数函数描述Y与X之间的非线性关系,式中的b和a分别为斜率和截距。
更一般的对数函数Y=a+bln(X+k)式中k为一常量,往往未知。
(a)lnY=lna+bX(b)lnY=lna-bX(c)Y=a+blnX(d)Y=a-blnX5.线性插值:在代数插值中,为了提高插值多项式对函数的逼近程度一般是增加节点的个数,即提高多项式的次数,但这样做往往不能达到预想的效果。
如下图所示:f(x) = 1 / (1 + x2)如果在区间[-5,5]上取7个等距节点:x k=5*(k/3-1) (k=0,1,2,...,6),由lagrange插值公式可得到f(x)的次L7(x)。
如图所示:L7(x)仅在区间的中部能较好的逼近函数f(x), 在其它部位差异较大,而且越接近端点,逼近效果越差。
可以证明,当节点无限加密时,Ln(x)也只能在很小的范围内收敛,这一现象称为Runge现象。
它表明通过增加节点来提高逼近程度是不适宜的,因而不采用高次多项式插值。
如果我们把以上的点用直线连接起来,显然比L7(x)要更逼近f(x)。
这就是分段线性插值。
而在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。
为了克服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。
设(){}N k k k ,yx 0=有N+1个点,其中b x ...x x x a N =<<<<=210。
如果存在N 个三次多项式x )S k (,系数为3210k ,k ,k ,k ,,S,S,S S 满足如下性质:33,22,1,0,)()()()()(k k k k k k k k x x s x x s x x s s x S x S -+-+-+==1,....,1,0],,[1-=∈+N k x x x k k)('')('')(')(')()()(111111111+++++++++====k k k k k k k k k kk x S x S x S x S x S x S y x S 2,....1,02,....1,02,....1,0,....1,0-=-=-==N k N k N k N k则成函数S(x)为三次样条函数。
7.端点约束:紧压样条:存在唯一的三次样条曲线,其一阶导数的边界条件是:Nd b S d a S ==)(',)('0natural 样条:存在唯一的三次样条曲线,它的自由边界条件是:0)('',0)(''==b S a S外推样条:存在唯一的三次样条曲线,其中通过对点x1和x2进行外推得到()a S '',同时通过对点X(n-1)和X(N-2)进行外推得到()b S ''。
端点曲率调整:存在唯一的三次样条曲线,其中二阶导数的边界条件()a S ''和()b S ''是确定的。
抛物线终结样条:存在唯一的三次样条曲线,其中二阶在区间[X 0,X 1]内0x S ≡''')(,而在[Xn-1,Xn]内0x S ≡''')(。
三、实验内容1.P202 1胡克定律指出F=kx ,其中F 是拉伸弹簧的拉力(单位为盎司),x 为拉伸的长度(单位为英寸)。
根据下列试验数据,求解拉伸常量k 的近似值。
(a )(b )2.P215 1洛杉矶(美国城市)郊区11月8日的温度记录入下表所示,其中共有24个数据点。
(a)根据例5.5中的处理过程(使用fmins 命令),对给定的数据求解最小二乘曲线E Dx C Bx A x f ++=)sin()cos()(。
(b )求。
)(2f E(c )在同一坐标系下画出这些点集和(a)得出的最小二乘曲线。
3.P229 1一个轿车在时间T k 时经过的距离d k ,如下表所示。
使用程序5.3,并根据一阶导数边界条件98)8(',0)0('==S S ,求这些数据的三次紧压样条插值。
4.P238 5美国洛杉矶郊区11月9日的温度(华氏温度)如表5.10所示。
采用24小时制。
(a )求三角多项式)(7x T(b )在同一坐标系下,画出图)(7x T 和24个数据点。
(c )使用本地的温度情况重新求解问题(a)和问题(b)。
5.P246 1编写Matlab 程序,生成并绘制组合贝塞尔曲线。
利用该程序生成和绘制过3个控制点集{(0,0),(1,2),(1,1),(3,0)},{(3,0),(4,-1),(5,-2),(6,1),(7,0)},{(7,0),(4,-3),(2,-1),(0,0)}的贝塞尔曲线。
四、实验结果及分析1.P202 1实验描述:由题意可知,此题需要用最小二乘法进行计算,因为已知函数的5个插点并且知道它们的x,y 的值。
且函数的表达式为F=kx ,所以只需用方程中∑∑===Nk k Nk k y A x 11)(便可计算出k 的数值。
定义一个动态数组[]a ,用来依次存取x 和y 的插值。
其中x,y 的插值通过键盘手动输入并赋予给a 中的元素。
然后通过相应的求和和基本运算便可以得到相应插值下的最小二乘法的函数表达式。
(其中k 保留小数点后4位) 具体函数运行效果如下: (a )请在此输入x 的各插值 0.2 0.4 0.6 0.8 1.0请在此输入y 的各插值 3.6 7.3 10.9 14.5 8.2此函数的最小二乘法曲线表达式为 Y=14.8333*x请按任意键继续。
(b )请在此输入x 的各插值 0.2 0.4 0.6 0.8 1.0请在此输入y 的各插值 5.3 10.6 15.9 21.2 26.4此函数的最小二乘法曲线表达式为 Y=26.4667*x请按任意键继续。
结果分析:易得,最小二乘法多项式计算可以很好的做出较为精确的最小二乘法拟合曲线,并且程序通用性高,只要输入相应的插值便可以计算出结果,结果系数的小数点有效位同时也可以自己确定。
2.P215 1实验描述:给出的最小二乘曲线表达式为:sin()=)cos(()+f+DxExCBxA其中变量有5个,而给出的数据点有24个,在C语言中可以用牛顿-拉夫森算法迭代计算分别得出5个变量的值,但是方法繁琐,且迭代计算量庞大,因此这里采用Matlab进行相关的计算,调用fminsearch函数,求得当5个参量都为1附近时候多项式的最小值,此时便可求出此5个参变量的值.然后继续通过Matlab,将得到的公式以及各点,用plot函数,便可以求得。
实验结果:运行matlab结果如下:>> fminsearch('fiveOne',[1 1 1 1 1])ans =15.7225 1.3717 15.5359 1.2768 60.3579此时的所求值便为函数的待定系数。
所以可得最小二乘曲线的表达式为:15.)cos(7225xf=x.1+(+)276860.3579.1sin()15.53593717然后进行相应的绘制图形便可以求出所要求出的结果。