导航:首页 > 源码编译 > 样条曲线拟合算法

样条曲线拟合算法

发布时间:2023-03-27 06:15:56

1. 三次样条插值 三次样条拟合

两誉缓乱庆档个拟合曲线分开写. x=[1:16];y1=[2044 2399 2525 2376 2525 2392 2525 2525 2385 2385 2376 2392 2426 2457 2464 2426];xx=1:0.1:16;yy1=interp1(x,y1,xx, 'cubic spline');plot(x,y1,'ro','MarkerFaceColor','r');hold on;plot(xx,yy1,'LineWidth',2);grid on; 另外一哪嫌个照着写就可以了

2. 曲线拟合都有几种方法

曲线拟合一般方法包括:
1、用解析表达式逼近离散数据;
2、最小二乘法。
相关概念:
曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血液知药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。
曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料碰历的标准工作曲线,同时根据需要笑埋搜可将此直线方程还原为曲线方程,实现对资料的曲线拟合。

3. 知道一组数据,如何用matlab进行三次样条函数拟合

如下:
function
fit_tulun
%多项式拟合方式
x=linspace(0,4*pi,6);
y_jingque=sin(x);
%决定稀疏样本点数据
p_poly=polyfit(x,y_jingque,5);
x_poly_fit=linspace(0,4*pi,100);
y_poly_fit=polyval(p_poly,x_poly_fit);
%三次样条拟合方式
sp=csapi(x,y_jingque);
%求三次样条函数的导数.
s_diff=fnder(sp,1);
plot(x_poly_fit,y_poly_fit,'ko',x_poly_fit,y_poly_fit,'b:')
%plot(x_poly_fit,y_poly_fit,'b:')
hold
on
fnplt(sp,'r')
fnplt(s_diff,'c')
x1=linspace(0,4*pi,200);
plot(x1,sin(x1),'m','linewidth',1.8)
legend('多项式拟合样本点','多项式拟合曲线','三次样条拟合曲线','三次样条导数曲线','正弦曲线精确图形').

4. 曲线拟合法的理论与分析

曲线拟合法沉降预测是将地基沉降近似看成按某种特定的曲线规律来变化的过程,对实测沉降数据进行拟合,建立某种与之相适应的曲线模型,采用适当的优化方法,反推出计算公式中所需要的参数,确定回归公式,再运用于后期的沉降预测和最终沉降预测。该类方法参数较少宜确定,在工程中得到了广泛判知缺的应用。目前常用的曲线拟合法有指数曲线配合法(三点法)、星野法、Asaoka法、沉降速率法、双曲线法、指数曲线法、“S”形成长曲线模型等[103][157]

5.2.1.1 指数曲线配合法(三点法)

指数曲线配合法由曾国熙于1959年提出[103]。该方法是从实测的沉降—时间曲线上选择最大恒载时间段内的任意三个时间点t1,t2,t3,其对应的沉降量分别为S1,S2,S3,使Δt=t3-t2=t2-t1,可得地基土层最终沉降量S

温州浅滩软土工程特性及固结沉降规律研究

该方法计算简单,但一般要求观测资料持续时间较长,实测沉降曲线基本处于收敛阶段才可进行。该方法的缺点是选取的沉降点不同,计算结果迥异,使结果的准确性大打折扣。

5.2.1.2 星野法

星野根据现场实测值证明了固结沉降是时间平方根的函数,t时刻地基的总沉降St

温州浅滩软土工程特性及固结沉降规律研究

式中:St为随时间t变化的总沉降量,当t→∞时,可得最终沉降量S;Sct为随时间t变化的固结沉降量;Sd为假定的瞬时沉降量;td为假定的瞬时沉降时的时间;t为经过的时间;A,K为待定参数,由图解法确定。

利用星野法预测路基沉降的关键是调整假定的瞬时沉降点(td,Sd),使得回归分析的点正好落在一条直线上。该方法是一个反复作图的过程,产生的误差相对较大。

5.2.1.3 Asaoka 法

Asaoka法也称浅岗法,是Asaoka[158]提出的一种从一定时间所得的沉降观测资料来预计最终沉降量和沉降速率的方法。根据沉降和应变的关系,t时刻地基的总沉降量St可以近似地由级数形式的高阶微分方程表示:

温州浅滩软土工程特性及固结沉降规律研究

式中:a1,a2,…,an,b为取决于固结系数和土层边界条件的常数。

实测沉降—时间曲线可以分离成:tj=j·Δt,j=1,2,3…,且Δt为常数,Sj为时间tj时的沉降量,式(5.3)可以用n阶递推关系表示为

温州浅滩软土工程特性及固结沉降规律研究

由于高阶微分迅速减小,第一阶近似就能满足工程精度的要求。式(5.4)可简化为

温州浅滩软土工程特性及固结沉降规律研究

根据实测沉降资料作图可以确定待定参数β0,β1和最终沉降量S0/(1-β1)。Asaoka法属于图解法,Δt的取值对最终沉降量的推算结果有直接影响。此外,由于上述计算只考虑了沉降的一阶导数,故得到的最终沉降量不包括次固结沉降。

5.2.1.4 双曲线法

双曲线法认为沉降量与时间按双曲线的形式递减,其基本方程为

温州浅滩软土工程特性及固结沉降规律研究

式中:St为t时刻的沉降量;S0为预压期中任意时刻t0对应的沉降量(一般选择路堤填筑结束后的第一个观测点的时间和沉降数据);a,b为待定系数,可通过建立线性回归方程利用最小二乘法求解。

将得到的a,b,S0,t0代入式(5.6),即可求得任意时刻t地基的沉降量St,且掘辩当t→∞时,最终沉降量为

5.2.1.5 指数曲线法

假定地基荷载稳定后,沉降按指数曲线规律变化,其基本方程式为

温州浅滩软土工程特性及固结沉降规律研究

令tm=t+Δt/2,将式(5.7)对t求导后,写成增量的形式为

温州浅滩软土工程特性及固结沉降规律研究

对式(5.8)两边取自然对数,并令

,可得:

温州浅滩软土工程特性及固结沉降规律研究

在实测沉降曲线上确定拐点值(t0,S0)和(

,yi)点,对这些点进行线性拟合,并利用最小二乘法求出参数A,B,进而求出a,b,且当t→∞时,最终沉降量为S=S0+a。

5.2.1.6 S 形成长曲线模型

如果时间序列的发展具有一定的“成长”过程,即经历一个出现、发展、成熟或衰亡的过程,对于具有这种演变趋势的预测目标,则可以运用成长曲线模型进行预测[196]。这种模型是依据一定的演变理论为前提推导出来的,所以往往能够比前述简单的时间序列模型提供更精确的预测。在软土地基沉降预测方面,大量现场实测沉降—时间曲线分析表明,全过程的地基沉降量与时间的猛察关系曲线呈S形,而且在荷载逐步增加的过程中,沉降观测点逐步发生沉降的过程可以分为以下4个阶段[157],如表5.1所示。

表5.1 地基沉降随时间发展的阶段特征

常用的S形成长曲线模型及其表达式如表5.2所示。

鉴于S形成长曲线的特征和沉降随时间的变化规律十分相似,可以利用S形成长曲线模型对软土地基沉降进行预测分析。本书选取典型的Pearl模型(Logistic模型)为例,讨论Pearl曲线在沉降预测中的建模、求解过程。

表5.2 常用的S形成长曲线模型

注:S(t)为随时间变化的函数;t为时间;a,b,L,r为参数。

(1)等时距Pearl曲线模型

Pearl曲线模型要求建模数据必须是等时距的,等时距Pearl曲线模型的表达式为

温州浅滩软土工程特性及固结沉降规律研究

式中:S(t)为t时刻沉降量的预估值;t为等时距时间序列的时间序号;a,b,L为模型的参数,均大于0,其中a为无量纲数,b的单位为时间的倒数,L的单位同沉降量的单位。

Pearl曲线模型参数的求解采用三段估计法,设地基沉降的等时距时间序列为{S(t)|t=1,2,…,n},即{S(1),S(2),S(3),…,S(n)},将时间序列分为3段,每段有r=n/3 项。

如果自变量时间t的时间间隔相等、时间长短相等、前后连续,符合等间隔时间序列,将时间t从1 开始编号,即取t=1,2,3,…,n。时间序列分为3 段,第1 段为t=1,2,3,…,r;第2 段为t=r+1,r+2,r+3,…,2r;第3 段为t=2r+1,2r+2,2r+3,…,3r。

设S1,S2,S3分别为这3个时间段内对应的各项S(t)值的倒数之和,即

温州浅滩软土工程特性及固结沉降规律研究

将等时距Pearl曲线模型的表达式改写为倒数形式为

温州浅滩软土工程特性及固结沉降规律研究

利用级数求和公式,可求得式(5.11)为

温州浅滩软土工程特性及固结沉降规律研究

由式(5.13)可以解出Pearl曲线模型各参数a,b,L的计算通式。将求得的参数代入式(5.10)中,即可对地基的沉降量S(t)(t= 1,2,3,…,n)进行等时距预测。

(2)非等时距时间序列的等时距变换

由于Pearl曲线模型要求建模数据必须是等时距的,如果实测沉降数据是非等时距的时间序列,则需将其变为等时距时间序列,才能运用等时距Pearl曲线模型进行预测。

将非等时距沉降时间序列进行等时距变换一般采用插值法来完成,常用的插值方法有:Lagrange插值法、Aitken 插值法、Neville 插值法、Newton 插值法、Hermite 插值法、分段多项式插值法及样条插值法等[197][198]。如果既要克服高次多项式插值的 Runge现象,又要保证插值函数的连续性和光滑性,最常用的是三次样条插值法(Spline)[198]。本书将采用三次样条插值法(Spline)对非等时距实测沉降—时间序列进行插值处理,以得到等时距的序列。

假设从原始沉降—时间观测曲线上读取的n+1个点为(ti,Si),且Si—ti满足函数关系Si=f(ti),(i=0,1,2,…,n)。如果ti∈ [a,b],且有a=t0<t1<t2<…<tn=b,存在函数F(ti)=Si在每个子区间 ti,ti+1[ ](i=0,1,2,…,n-1)上都是不超过三次的多项式,F(t),F'(t),F″(t)在[a,b] 上连续,那么,函数F(t)就是被插值函数f(t)在插值节点t0,t1,t2,…,tn上的三次样条插值函数。

由于函数F(t)在每个子区间[ti,ti+1] 上都是三次多项式,可设其表达式为

温州浅滩软土工程特性及固结沉降规律研究

F(t)有4n个待定系数,为保证F(t)及其导数F'(t),F″(t)在[ a,b ] 上连续,只需它们在各子区间的分界点处连续即可,因此,待定系数共满足4n-2个条件:

温州浅滩软土工程特性及固结沉降规律研究

为了保证样条插值问题解的唯一性,应另外给出边界条件,常见的边界条件有三种:

a.自然边界条件F″(t0)=0,F″(tn)=0;

b.周期边界条件F'(t0)=F'(tn),F″(t0)=F″(tn);

c.固定边界条件F'(t0)=f'(a),F'(tn)=f'(b)。

根据待定系数满足的上述条件,利用F(t)在节点处的二阶导数值mi=F″(ti)来求解待定系数。利用Lagrange线性插值公式有

温州浅滩软土工程特性及固结沉降规律研究

式中:hi=ti+1-ti,(i=0,1,2,…,n-1)。

对F″(t)积分两次,由F(ti)=Si和F(ti+1)=Si+1确定积分常数,可得三次样条表达式:

温州浅滩软土工程特性及固结沉降规律研究

这里mi为未知数,为了确定mi,对F(t)求导得:

温州浅滩软土工程特性及固结沉降规律研究

由此可得:

温州浅滩软土工程特性及固结沉降规律研究

同理,在子区间[ti-1,ti]可得:

温州浅滩软土工程特性及固结沉降规律研究

因为F'(ti+0)=F'(ti-0),所以有:

温州浅滩软土工程特性及固结沉降规律研究

式中:μi =hi-1/(hi-1+hi),λi=hi/(hi-1+hi),(i=0,1,2,…,n)。

温州浅滩软土工程特性及固结沉降规律研究

a.对于自然边值条件,可得:

温州浅滩软土工程特性及固结沉降规律研究

令λ0=1,

,μn=1,

,那么,式(5.21)、(5.23)可以写成矩阵的形式:

温州浅滩软土工程特性及固结沉降规律研究

b.对于周期边值条件,可得端点方程:

温州浅滩软土工程特性及固结沉降规律研究

如果令λ0n=0,d0=

,dn=

,则式(5.21)、(5.25)也可写成式(5.24)的矩阵形式。

c.对于固定边值条件,可得:

温州浅滩软土工程特性及固结沉降规律研究

式中:λn=h0/(hn-1+h0),μn= 1-λn,dn= 6 (f[t0,t1]-f[tn-1,tn])/(hn-1+h0)。

式(5.21)、(5.26)可以写成如下矩阵形式:

温州浅滩软土工程特性及固结沉降规律研究

求三次样条插值函数的步骤为

1)计算hi=ti+1-ti(i=0,1,…,n-1),及μi,λi(i=1,2,…,n-1);

2)由式(5.21)结合给定的边界条件得出确定m0,m1,…,mn的方程组,并求解;

3)将mi(i=0,1,…,n)代入式(5.17)即可得到F(t)的分段表达式。

5.2.1.7 曲线拟合方法对比及分析

综合对比分析以上各种不同类型的曲线拟合法对实测沉降—时间曲线的数据要求、计算模型及模型参数求解方法、是否考虑次固结沉降等因素,各种方法的适用条件汇总于表5.3。

表5.3 各种曲线拟合法预测沉降的适用性对比

由表5.3可知,各种曲线拟合方法对实测沉降—时间曲线上数据点的要求不尽相同,而且不同模型中待定参数的求解方法也不同,由此而引起的预测误差也是不一样的。三点法和图解法求参,受人为因素影响较大;而最小二乘法和三段估计法求参,相对较准确和稳定。此外,双曲线法、指数曲线法和 S 形成长曲线可以考虑地基次固结沉降,而三点法、星野法和Asaoka法将次固结沉降忽略。由于本书的研究对象为淤泥土,有蠕变现象,因此,本章将选取考虑次固结沉降的双曲线法、指数曲线法和 Pearl 曲线模型对温州浅滩灵霓海堤软土地基的沉降进行预测分析。

5. 曲线拟合一般有哪些方法

曲线拟合一般方法包括:

1、用解析表达式逼近离散数据的方法

2、最小二乘法

拓展资料:

实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

6. 如何拟合一条曲线

我是测绘专业毕业的,对于你的问题我帮你分析一下,希望能够对你有帮助。

你说你能得到两点的水平距离和高差,就是不精确而已是吧?其亮森族实即使你得到精

确值了计算出来了也不对。因为公路上描述路坡度用的不仅仅是水平距离,有时

候路线在平面上有敬弊转弯,那么就要用到平面位置的曲线长度。所以我建议一个方法:

路边应该有里程标,那个就是春袭平面位置的距离,它包括了曲线和直线。用这个距

离再用你测得的高度差来计算路的坡度。比如AB两点,A点比B点高1米,从A到B

的里程标示距离为100米。那么A到B的这段路坡度就为百分之一的降坡,表示

为:1%,也可是表示为:i=0.01

对于你说的实际10M,你测的可能是8M也可能是11M,这个属于精度问题。只有用

测绘仪器才能测得精度更高的数值。

如果我的回答你哪里不明白可以再问我,很乐意帮助你。

7. 曲线拟合 曲率计算

为了更清楚地说明问题,把回答做了更新,增加了解释部分。

数据点用(x_i,y_i)表示,

拟合曲线方程为:

y=e^(0.002707959454*x^2-0.2852803573*x+2.666852328);(-33<=x<=0)

e为自然对数的底,e=2.718281828459045……。

如果限定x的范围是[-33,0],那么,拟合出来,

最小曲率在x=-33处取得(曲率半径最大),为1.946756485*10^(-13);

最大曲率在x=0处取得(曲率半径最小),为0.01654934877。

根据问题的要求,这里计算出来的是曲率而非曲率半径。

由于所用的拟合曲线不同,得出的结论会稍有差异,不过差别不大,数量级应该会一致。

但是,如果所用的方法不同,并且做出的假设不一样,那么,结果可能会差别较大。

这里基于如下假定和考虑:

1、这些数据都是测量数据而非计算数据,换言之,承认这些数据存在误差。如果是计算数据,那么,可以直接计算曲率,而不用算出那么多组数据出来。从你给出的数据看,y值中各个数据不为0的数字大多只有两位,少数有3位,很多数据后面有很多个零,由此可以推断,实际的有效数字至多只有3位,误差应该在百分之几只有——这也是很普遍的情况,仪器仪表测量出来的数据,不可能那么多数据都有很多个0在后面,而且,目前,除了光电测量仪器测量时间的有效数字会很多——很准确以外(时间是目前能够测量最准确的物理量),绝大多数常用的数字测量仪表都只有三位或三位半(四位数字的测量仪表价格已经很昂贵了——不要误把三位半的数字仪表当成四位),指针式仪表的有效数字不会更多。提问者的最后一个数据“2300000”,如果按照正常的判断有效数字的方法,有七位有效数字,这不太可能——除非是重大科研项目,否则不会用那么准确的测量仪器(那样的话,这些数据都是保密的,提问者不可能带出来)。于是可以推知,要么是测量数据时记录不规范(不知道用科学计数法准确记录有效数字位数),要么是把录入到excell中的数据复制过来(已经看不出有效数字的位数了)。这样的话,后面的数据的绝大误差非常大,2300000的误差至少应该有5000,比起前面几个数据(30多),大了150多倍。如果不加处理,直接拟合的话,把他们的误差都看成一样,是不合适的。所以,这里也不是直接对数据点(x_i,y_i)用最下二乘法做拟合,而是对(x_i,lny_i)用最下二乘法做拟合,(后来想一想,对(x_i,lgy_i)拟合可能会更好一些)。

2、只考虑有数据的范围,即x在-33到0之间的情况,此范围之外没有测量数据,不便计算(即使计算出来也不准)。(拟合出来的结果是曲率随着x的减小不断减小——这里认为从0到-33是在减小而不是最大,那么如果不限定范围,最大值和最小值是不存在的)

3、根据数据的特点,拟合曲线是一条整体的曲线,而不是分段曲线。做出x~lnx的曲线(如附图一所示)可以看出,除了开始几个点(|x|较小时)之外,其余的数据点几乎都在一条直线上。如果是人工做图,基本上都会通过直线拟合该曲线,舍去前面几个数据点。但是,直线拟合的话,在|x|较小时会产生较大的误差,见附图四),在工程上,常常都用二次曲线拟合(结果见附图二)。所以,这里并没有单纯地用对数曲线拟合,而是用e^(a*x^2+b*x+c)的曲线拟合。如果要分段拟合,常常用样条曲线或是NURBS曲线拟合(工程上很少直接用三次曲线拟合,而是用样条曲线拟合,可以理解为在三次曲线分段拟合的基础上做了一点改进),计算量大很多。结果可能会差别大一点。从提问者给出的数据曲线来看,这些数据点连接起来并不光滑(除个别点以外,大致是光滑的),说明误差肯定是存在的。如果分段拟合,曲线严格通过每一个数据点(网友ha_2010_ha的做法),那样,拟合曲线的每一段都只依赖于附近几个数据点,而与其它数据点无关(这是样条曲线的性质),这样,如果局部几个数据都有误差,会导致这附近的曲线都受此误差的影响,导致结果不准确(因为不能充分利用数据)——另一方面,避免了y值很大的点对y值很小的点的影响,这也是一个好处了。如果可以确保所有数据都非常准确,误差很小,且各数据的数量级一致,往往会用样条曲线(三次样条曲线最常用)或是NURBS曲线(一般认为NURBS曲线比普通样条曲线更好一点)(特别是有很多“弯曲”的曲线,不适宜用一个函数整体来拟合),那么只要在AutoCAD上把这些点画出,用“Spline”拟合一下就可以了,曲线都严格通过每一个数据点,但是会发现,拟合出来的曲线有很多个“弯”,不知道这是不是提问者想要的结果(有些时候,特别是化学上,对这种“与众不同”的点很感兴趣)。只是在AutoCAD上拟合时,看不出曲线的表达式,计算曲率时麻烦一些。本人对Matlab不熟悉,不知道那里是否有样条曲线和NURBS曲线能够(感觉上应该有此功能)。

4、基于假定1,拟合曲线不一定会通过每一个数据点,而是通过最小二乘法,使得处理后的各个数据点(x,lny)与拟合曲线的距离之平方和最小。

5、另外一位网友ha_2010_ha给出了另外的拟合方式,是基于数据都很准确的假定下做出的(曲线过每一个拟合点),与此处计算的结果差别较大。这不是方法错误,而是基于不同的假定得出的结论不同而已。

6、如果需要更精确的结果,可以用高次曲线来拟合(x,lgy),从图五和图六可以看出,四次和五次曲线上的点与原来的数据点拟合得非常好。

以下是各种拟合方式下的曲率最值,从中可以看出,曲率的数量级都是一样的。如果要精确一点,可以采用四次或五次曲线的拟合结果。

曲线次数,对数种类,最大曲率,最小曲率

#一次,自然对数:0.02939653517,6.100957152*10^(-13)

#一次,常用对数:0.02939653428,6.100957344*10^(-13)

#二次,自然对数:0.01654934877,1.946756485*10^(-13)

#二次,常用对数:0.01654934725,1.946756287*10^(-13)

#四次,常用对数:0.01805898064,3.911154182*10^(-13)

#五次,常用对数:0.01835618491,3.897350975*10^(-13)

又及:

关于提问者的疑问:

y=f(x)的曲率计算公式为:

k=|y''|/(1+y'^2)^(3/2);

只要把拟合曲线的方程代入上市,计算出最大值和最小值即可。

由于原始数据跨越5个数量级,直接从总的数据图上是很难看出弯曲程度的。很容易错误地认为在x=-25左右弯曲程度最大。其实,只要分别做出局部数据图像,把相邻的几个点单独画出来,就可以看得比较清楚。(比如,把前面8个点描出来,就会发现,那里是弯曲最厉害的,而在x取30多时,弯曲程度很小。)

关于另外一位网友提到的几个问题:

另外一位回答者没有考虑误差的影响,误以为只要通过所有数据点,就是充分利用了数据,没有通过某个数据点就是没有利用数据。其实,通过最小二乘法算出来的拟合曲线参数是和每个数据都相关的。改变任何一个数据都会直接影响到整体结果,但是一个数据对拟合曲线的影响非常小,于是,即便个别数据误差大一点,也不会对整个拟合曲线参数有多大影响。由于各个数据点对拟合曲线总体的影响很小,因而对各数据点附件一段拟合曲线的影响也不大。

另外,对误差大小的判断还有误区,只考虑到了绝对误差,没有考虑相对误差。例如,在x=-31时,y=1090000,拟合曲线的误差如果达到10000,从绝对值看,确也不小;在x=-3处,y=36,误差假设为1,绝对误差也不大。但是,y=1090000时,即便误差达到10000,也不到千分之一,何况测量数据只有3为有效数字,测量误差都超过了100000,把计算误差较小到10000以下没有任何意义。而在y=36,测量误差大致为0.5,相对误差已经达到14%,远比y=1090000时的相对误差误差大很多。(举一个例子:南京长江大桥在江面上的正桥长1577米,从卫星上测量的误差大概5米;有直尺测量一只10厘米左右的铅笔,直尺最小刻度1毫米;那是不是测量直尺更准确呢?这个例子在以前的初中物理教科书上出现过。)(这也是这位网友没有理解为什么要在数量级跨度较大的情况下对数据取对数后再拟合(在y值较大的地方绝对误差会大很多),而不直接拟合(各个数据点的误差一视同仁地处理)——其实,在大学物理实验课程中,老师都会讲到如何处理数据。如果还不清楚,可参阅大学物理实验的指导书,一般在第一册中会提到。)

另外,通过三次样条插值,算出来,开始部分的曲率中,x=-3.46或-2.69时取得最大值5.17,并没有达到10。

提到误差,再多说几句。由于当x的绝对值较小时,测量误差很大,如果局部拟合,会导致局部误差很大。比如,x=-4时,y=37,测量误差大概在0.5左右(大一点可以认为是1),那么,实际值可能在36.5到37.5之间。假如把y=37换成36.5,那么重新计算一下,会发现,这一次,该点附件的最大曲率增大大了30.4%,为6.73,(取最大曲率的点也由-3.46变为-3.54,相差2.3%)即在其它数据点精确的情况下,仅仅考虑x=-4处这一个数据点的误差,就会发现实际的最大曲率值可能与计算值偏差达30%,如果考虑到其它几个点的误差,这个偏差还更大。估计在40~50%左右。在这么大的偏差的情况下,计算出来曲率大的地方,有可能实际曲率会小一些,计算出来曲率小的地方有可能实际曲率会大一些,由于计算偏差那么大,谁还能够确定哪里是曲率最大的地方哪里是曲率最小的地方?

另外,由样条曲线的局部性质,把x在-8到-33的那些数据点都去掉,只留下开始8个数据点,算出的结果是一样。也从另外一个角度看得出目前讨论的这个问题中,分段插值这种方法并没有充分利用到数据。(某些情况下,这也是一个优点,称为“局部稳定性”,可以参阅样条函数的书籍。目前国内有不少高校的计算数学专业都面向研究生开设了该课程,从国外引进了不少相关专着。)

以上如有错误,欢迎批评指正。

8. 曲线拟合的方法

用Matlab进行曲线拟合步骤:
一、 单一变量的曲线逼近
Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。
假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行输入数据:
》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];
》y=[5 10 15 20 25 30 35 40 45 50];
2、启动曲线拟合工具箱 》cftool
3、进入曲线拟合工具箱界面“Curve Fitting tool” (1)点击“Data”按钮,弹出“Data”窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;
(3)点击“Fitting”按钮,弹出“Fitting”窗口;
(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:  Custom Equations:用户自定义的函数类型
 Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)  Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)  Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
 Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
 Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
 Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
 Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
 Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
 Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)  Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;
——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。
在本例中选Custom Equations,点击“New”按钮,选择“General Equations”标签,输入函数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。
(5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果,如下例: general model: f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds): a = 0.009194 (0.009019, 0.00937) b = 1.78e-011 (fixed at bound)
Goodness of fit: SSE: 6.146 R-square: 0.997
Adjusted R-square: 0.997 RMSE: 0.8263
同时,也会在工具箱窗口中显示拟合曲线。
这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在“Fitting”窗口点击“New fit”按钮,按照步骤(4)~(5)进行一次新的拟合。
不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变量只能有一个。对于混合型的曲线,例如 y = a*x + b/x ,工具箱的拟合效果并不好。下一篇文章我介绍帮同学做的一个非线性函数的曲线拟合。

9. CAD样条曲线的绘制方法

1.样条曲线命令只有1个选项: 对象

阅读全文

与样条曲线拟合算法相关的资料

热点内容
操作系统代码编译 浏览:481
程序员东北大学 浏览:426
编译忽略空字符 浏览:117
多店铺阿里云服务器教程 浏览:378
单片机求初值 浏览:420
安卓机如何在电脑备份图片 浏览:925
ca证书加密机价格 浏览:798
天干地支年份算法 浏览:796
程序员打造的视频 浏览:7
java和php通信 浏览:680
为什么黑程序员 浏览:163
程序员男生 浏览:456
戴尔文件夹内文件怎么置顶 浏览:582
云服务器6m网速 浏览:722
vivo手机中国联通服务器地址 浏览:862
工程总控编译失败 浏览:707
燕赵红枫app如何下载 浏览:867
php查杀软件 浏览:878
教育管理学pdf 浏览:547
服务器均衡怎么使用 浏览:626