曲线拟合的数值计算方法实验
曲线拟合问题的数值试验

曲线拟合问题的数值试验一、算法要求已知数据: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篇]](https://img.taocdn.com/s3/m/ed56c4cd0342a8956bec0975f46527d3240ca6e1.png)
曲线拟合实验报告[优秀范文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的拟合曲线。
- 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然后进行相应的绘制图形便可以求出所要求出的结果。