导航:首页 > 计算方法 > 计算方法曲线拟合例题

计算方法曲线拟合例题

发布时间:2023-01-24 04:29:47

㈠ 曲线拟合 曲率计算

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

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

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

㈡ 根据下面实验数据求解拟合曲线 P(x)=a+bx+cx^2

数据拟合已完成,如图所示,至于你想知道每一步代码的意义,我想你还是需要深入学习matLab。

代码如下:

>>clear;clc;

>>x=[1,2,3,4,6,7,8]';

>>y=[2,3,6,7,5,3,2]';

>>A=[ones(7,1)xx.^2];

>>G=A'*A;

>>g=A'*y;

>>a=Gg;

>>f=@(x)a(1)+a(2)*x+a(3)*x.^2;

>>fplot(f,[18]);

>>holdon

>>plot(x,y,'o');

你可以自己尝试对比图形,a中存放的为所需拟合的系数a,b,c,

他们分别为

-1.3182

3.4318

-0.3864

谢谢,望采纳!

㈢ excel曲线拟合的方法

Excel 中经常需要使用到曲线拟合这个设置,曲线拟合具体该如何使用呢?下面是由我分享的excel曲线拟合的 方法 ,以供大家阅读和学习。

excel曲线拟合的方法:

曲线拟合步骤1:把实验数据输入excel中,两个变量的最好做成两个竖排。选中所有数据,注意不要把文字也选上了。

曲线拟合步骤2:在菜单栏中点“插入”,然后选择“散点图”下面的下拉菜单。

曲线拟合步骤3:从菜单中选择自己需要的类型,一般选择既有数据点,又有平滑曲线的散点图。就能得到平滑曲线。

曲线拟合步骤4:多项式拟合(线性,指数,幂,对数也类似):

选取数据;

插入,散点图;

选择只有数据点的类型;

就能得到第二张图所示的数据点。

曲线拟合步骤5:点击一个点,会选中所有数据点,然后点右键,在弹出的菜单中选择“添加趋势线”。

曲线拟合步骤6:在这里可以选择需要你和的曲线类型,如线性,指数,幂,对数,多项式。。选择多项式。

再把下面的“显示公式”,“显示R平方”的复选框里打√,就能得到需要的曲线,公式,和相对误差。

曲线拟合步骤7:图形格式设置:

生成图形后还有一些问题,比如没有坐标轴名称,没有刻度等。

打开菜单中的设计,点图标布局中的下拉菜单。

曲线拟合步骤8:会看到有很多布局类型的图标,选择自己需要的。比如,图中选的布局是常见的有标题,坐标轴名称的。

曲线拟合步骤9:坐标轴还需要设置:用鼠标点击坐标轴附近的区域,右键,选择“设置坐标轴格式”。

㈣ 求助曲线拟合方程

首先运行如下代码,观察散点图的趋势
clear
clc
x=[4 5 6 7 8 9 10 11 12,13,14,15,16,17,18,19,20];
y1=([0,2.6,3.2,4.1,5.3,6.7,8.6,11.,14.3,18.4,23.3,30.0,38.2,48.7,62.2,79.5,100])./100;
y2=([0,5.0,7.1,9.0,11.0,13.3,16.5,20.1,24.8,30.1,37.0,45.3,55.1,67.5,82.8,79.5,100])./100;
y3=([0,14.2,35.4,48.1,56.9,69.7,74.3,78.5,82.1,85.3,37.0,88.4,91.0,93.5,95.8,98.2,100])./100;
y4=([0,29.2,47.0,57.3,64.4,70.2,75.0,78.9,82.4,85.3,88.5,90.3,92.6,94.6,96.6,98.5,100])./100;
plot(x,y1,'+')
figure
plot(x,y2,'+')
figure
plot(x,y3,'+')
figure
plot(x,y4,'+')

可以看出前两组数据呈现指数形式后两组呈现对数形式。
输入如下代码:
clc
clear
x=[4 5 6 7 8 9 10 11 12,13,14,15,16,17,18,19,20];
y1=([0,2.6,3.2,4.1,5.3,6.7,8.6,11.,14.3,18.4,23.3,30.0,38.2,48.7,62.2,79.5,100])./100;
y2=([0,5.0,7.1,9.0,11.0,13.3,16.5,20.1,24.8,30.1,37.0,45.3,55.1,67.5,82.8,79.5,100])./100;
y3=([0,14.2,35.4,48.1,56.9,69.7,74.3,78.5,82.1,85.3,37.0,88.4,91.0,93.5,95.8,98.2,100])./100;
y4=([0,29.2,47.0,57.3,64.4,70.2,75.0,78.9,82.4,85.3,88.5,90.3,92.6,94.6,96.6,98.5,100])./100;
plot(x,log(y1),'+')
figure
plot(x,log(y2),'+')
figure
plot(log(x),y3,'+')
figure
plot(log(x),y4,'+')

分成两组进行拟合
y1y2进行对数变换后,0是没有对数变换的,所以去掉第一组数据,输入如下代码:
clc
clear
format long
x=[5 6 7 8 9 10 11 12,13,14,15,16,17,18,19,20];
y1=([2.6,3.2,4.1,5.3,6.7,8.6,11.,14.3,18.4,23.3,30.0,38.2,48.7,62.2,79.5,100])./100;
y2=([5.0,7.1,9.0,11.0,13.3,16.5,20.1,24.8,30.1,37.0,45.3,55.1,67.5,82.8,79.5,100])./100;
xs1=polyfit(x,log(y1),1)
xs2=polyfit(x,log(y2),1)
对于后面的y3y4无需提出0项,输入如下代码:
clc
clear
format long
x=[4 5 6 7 8 9 10 11 12,13,14,15,16,17,18,19,20];
y3=([0,14.2,35.4,48.1,56.9,69.7,74.3,78.5,82.1,85.3,37.0,88.4,91.0,93.5,95.8,98.2,100])./100;
y4=([0,29.2,47.0,57.3,64.4,70.2,75.0,78.9,82.4,85.3,88.5,90.3,92.6,94.6,96.6,98.5,100])./100;
xs3=polyfit(log(x),y3,1)
xs4=polyfit(log(x),y4,1)
得到的系数矩阵如下:
xs1 =

0.24605823124687 -4.90519940477608

xs2 =

0.19720975187994 -3.80687188880285

xs3 =

0.56693594930105 -0.67657470893038

xs4 =

0.54163093681900 -0.55598866144561

故得到拟合方程如下:
log(y1)=0.24605823124687.*x-4.90519940477608
log(y2)=0.19720975187994.*x-3.80687188880285
y3=0.56693594930105.*log(x)-0.67657470893038
y4=0.54163093681900.*log(x)-0.55598866144561
进行适当的代数变换就能得到拟合方程的标准形式,此处不累述。
值得主要的是log此处表示的是自然对数。

计算方法用最小二乘法求形如y=a+blnx的函数来拟合下述

设f(x)=a+bln(x)
假定测量值为(x1,y1),(x2,y2),...(xn,yn)
则残值的平方和为:g(a,b)=(f(x1)-y1)^2+(f(x2)-y2)^2+...+(f(xn)-yn)^2
先将g(a,b)看作a为自变量的函数(二次函数),其中的字母b当做参数,用配平方法求g(a,b)取最小值时对应的a=h(b),再将a=h(b)代入g(a,b),从而可得到一个新函数s(b),再求出与s(b)最小值对应的b,最后由a=h(b)得到a,完成。

㈥ 多项式插值和曲线拟合的计算方法

设日出时间t的函数为:t=ax3+bx2+cx+d(3、2是x的三次方和二次方),

5月1日: x=1, t=4又60分之51
5月16日:x=16,t=4.5
5月31日:x=31,t=4又60分之17
6月30日:x=61,t=4又60分之16
代入上面的函数,求出a、b、c、d的值,得出日出时间和日期的函数。二次求导可以求出t的最大值。
其它的自己做吧。

㈦ 如何根据一组离散点数据拟合出四次多项式曲线函数,并求曲线横坐标为1:200的每一点斜率和曲线曲率

1、根据一组离散点数据拟合出四次多项式曲线函数,可以用regress——线性回归函数来拟合。拟合方法:

x=[。。。];y=[。。。];

X=[ones(1,19) x x.^2 x.^3 x.^4];

a= regress(y,X); %拟合系数

拟合结果:

y=a1+a2*x+a3x^2+a4x^3+a5x^4

a1=0.0043519,a2=1.6277,a3=-0.012987,a4=0.00032848,a5=-6.3049e-06

㈧ 用程序计算一次物理实验中得到的一组数据,分别选取抛物线函数模型和指数函数模型做曲线拟合

抛物线函数模型 y=A+B*x+C*x^2
x=[1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8];
y=[33.40 79.50 122.65 159.05 189.15 214.15 238.65 252.50 267.55 280.50 296.65 301.65 310.40 318.15 325.15];
p=polyfit(x,y,2);
>>p = -6.132255979314794 94.243160956690275 -45.358846153845960
y = -6.132256*x^2 + 94.243161*x - 45.358846
SGM = 6.097259786019860 %标准误差
RR = 0.995867072105479 %相关指数
指数函数模型 y=A*exp(B/x) 【原模型y=A*exp(B*x)有误】
x=[1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8];
y=[33.40 79.50 122.65 159.05 189.15 214.15 238.65 252.50 267.55 280.50 296.65 301.65 310.40 318.15 325.15];
x1=1./x; z=log(y');
m=[ones(15,1),x1'];
c=m\z;
a=exp(c(1)),b=c(2)
a = 451.6721 b = -2.6050
y=451.6721*exp(-2.6050/x)
SGM = 1.562 %标准误差
RR = 0.9997 %相关指数

㈨ 分段拟合曲线(急需赐教!)

问题还真多
这道题首先要进行拟合,然后在求拟合曲线在定义域内的最值
1.你都知道是多项式曲线拟合力,还要怎么具体
2.具体的计算方法(人工)。就是先要确定你要拟合的多项式是几次的。此题中,总共有61个已知值,那么可以拟合最高次数为60。
假定是3次多项式拟合
则列方程
ax^3+bx^2+cx^1+d=y
将你的60个数全带进去。解得abcd就ok了
3.画图可用matlab,操作实例
t=polyfit(x,y,60) '进行最高次数为60的多项式拟合
plot(x,y,'go')'画图
4.最小二乘拟合在matlab里面也是polyfit实现的,需要3对数据。
5.三次样条的含义不是算出三个区间,而是知道已知点的函数值,一次函数值,和二次函数值。最后算出插值函数。
根据你给的4个已知条件,matlab代码是
x=[1,16,31,61];
y=[14.53,14.88,15.21,15.34];
polyfit(x,y,3)

ans =

-0.0000 0.0002 0.0209 14.5088

㈩ 这种曲线应该用哪种曲线拟合公式

老弟,公式打不出来的
一般都是用matlab搞定的,它里面有现成的函数供使用的
典型程序解析:
x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];%input xi data
y=[1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; % input yi data
n=2; % polynomial order
p=polyfit(x, y, n)% polyfit 的输出是一个多项式系数的行向量(拟合二项式的系数)
ezplot('-9.8108*x*x+20.1293*x-0.0317')%对拟合的函数作图
xi=linspace(0,1,100); % x-axis data for plotting
z=polyval(p, xi);% 为了计算在xi数据点的多项式值,调用MATLAB的函数polyval
plot(x,y, 'o' ,x,y,xi,z,':')%在同一个图形里看他们的拟合程度

典型例题:对以下数据分别作二次,三次多项式拟合,并画出图形.
x=1:16;
y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];
源程序:二次多项式拟合
x=1:1:16;
y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];
a=polyfit(x,y,2)
a =
-0.0445 1.0711 4.3252
ezplot('-0.0445*x^2+1.0711*x+4.3252')
三次多项式拟合
x=1:1:16;
y=[4, 6.4, 8, 8.4, 9.28, 9.5, 9.7, 9.86, 10, 10.2, 10.32, 10.42, 10.5, 10.55, 10.58, 10.6];
a=polyfit(x,y,3)
a =
0.0060 -0.1963 2.1346 2.5952
ezplot('0.0060*x^3-0.1963*x^2+2.1346*x+2.5952')

阅读全文

与计算方法曲线拟合例题相关的资料

热点内容
都市天际线水电解决方法 浏览:39
在家里洗衣服的正确方法技巧 浏览:33
增加电容的计算方法 浏览:866
科学家研究病毒检验方法 浏览:733
魅族4智能桌面在哪里设置方法 浏览:830
快速治疗痘印的方法 浏览:88
古代钱的鉴别方法 浏览:151
圈树铁丝围栏网厂家的计算方法 浏览:182
弱声的正确方法和技巧 浏览:723
制作洞洞乐最简单的方法 浏览:894
纸条造型的方法还有哪些 浏览:285
普通玛瑙手串鉴别最简单方法图片 浏览:472
肿瘤绿色治疗技术方法 浏览:948
小熊料理机的使用方法 浏览:456
右手拇指近节不能弯曲锻炼方法 浏览:661
小胖腿部训练方法 浏览:100
子线与11字环的连接方法 浏览:58
小米智能摄像机的连接电视方法 浏览:458
中耳炎怎么方法检查出来的 浏览:259
盆景制作方法怎么打理 浏览:127