搜索
bottom↓
回复: 27

请帮忙求一条曲线的系数

[复制链接]

出0入0汤圆

发表于 2012-10-23 09:37:59 | 显示全部楼层 |阅读模式
本来要出全部莫元的,但是税后不够了,先出150吧。

其实以前也发过贴求助,回复的兄弟都让我去复习初中代数。现在说明白一点,这不是解二元一次方程。看不懂的来凑凑热闹可以,就不要取笑俺了。

y = ax/(b+x);学名好像叫什么饱和生长曲线,俺也不懂,看起来也就是一条抛物线。求他的系数a,b。

下面提供一组数据:
x        y
100        100
752        750
1002        1000
9933        10000
45780        50000
84620        100000
147450        200000
195400        300000
233600        400000
264500        500000
290400        600000
311600        700000
330500        800000
346300        900000
360400        1000000
440000        2000000
533700        10000000
用网上的软件算得出的最佳值为:
a        -563982.488923279
b        -563800.118506274

现在用上次一位兄弟说的方法能算出a,b,但不是最佳的。有哪位兄弟能教教俺,怎么写出得出a,b最佳值的算法吗?我要把这个算法移植到单片机里。

出0入0汤圆

发表于 2012-10-23 09:39:31 | 显示全部楼层
本帖最后由 xivisi 于 2012-10-23 09:40 编辑

matlab 曲线拟合 可以转换成C代码

出0入0汤圆

发表于 2012-10-23 09:42:15 | 显示全部楼层
头像不错啊

出0入0汤圆

 楼主| 发表于 2012-10-23 09:43:36 | 显示全部楼层
不会用matlab,去装个试试先。

出0入0汤圆

 楼主| 发表于 2012-10-23 09:48:05 | 显示全部楼层
扎希德 发表于 2012-10-23 09:42
头像不错啊

帮我解决了问题,还有更不错的奉上!

出0入0汤圆

 楼主| 发表于 2012-10-23 09:59:13 | 显示全部楼层
老天爷啊,matlab7.0 那么大,等我下载完,安装好,会使用,估计黄花菜都腐烂了.....

出0入0汤圆

 楼主| 发表于 2012-10-23 10:01:16 | 显示全部楼层
二楼大哥,能帮俺拟合一下、转一下不。

出0入0汤圆

 楼主| 发表于 2012-10-23 10:38:11 | 显示全部楼层
网页更新太快了,一会就看不到了。再顶顶!

不会这150元发不出去吧?

出0入0汤圆

发表于 2012-10-23 11:07:35 | 显示全部楼层
这个参数貌似就是最优的参数。你就用这个吧。

出0入0汤圆

 楼主| 发表于 2012-10-23 11:22:41 | 显示全部楼层
tiancaigao7 发表于 2012-10-23 11:07
这个参数貌似就是最优的参数。你就用这个吧。

我不是求的这个参数就行了,我要求这个参数的方法,算法。

谢谢你又来关注啊。

出0入0汤圆

 楼主| 发表于 2012-10-23 11:23:51 | 显示全部楼层
正在装matlab,不知道行不行。

出0入0汤圆

发表于 2012-10-23 12:25:01 | 显示全部楼层
二次拟合,误差太大了吧。以下是我拟合的结果,matlab不是很熟,不知有没有问题:

2次拟合
attach://61497.jpg

Warnings during fitting:
Equation is badly conditioned. Remove repeated data points
         or try centering and scaling.

Linear model Poly2:
       f(x) = p1*x^2 + p2*x + p3
Coefficients (with 95% confidence bounds):
       p1 =  5.812e-005  (3.737e-005, 7.887e-005)
       p2 =      -16.84  (-26.68, -7.001)
       p3 =  4.494e+005  (-5.418e+005, 1.441e+006)

Goodness of fit:
  SSE: 1.439e+013
  R-square: 0.8396
  Adjusted R-square: 0.8166
  RMSE: 1.014e+006

4次拟合
attach://61498.jpg
Warnings during fitting:
Equation is badly conditioned. Remove repeated data points
         or try centering and scaling.

Linear model Poly4:
       f(x) = p1*x^4 + p2*x^3 + p3*x^2 + p4*x + p5
Coefficients (with 95% confidence bounds):
       p1 =  9.799e-016  (6.833e-016, 1.277e-015)
       p2 = -7.786e-010  (-1.089e-009, -4.683e-010)
       p3 =   0.0001964  (9.357e-005, 0.0002992)
       p4 =      -13.64  (-25.15, -2.129)
       p5 =  8.412e+004  (-1.842e+005, 3.525e+005)

Goodness of fit:
  SSE: 6.671e+011
  R-square: 0.9926
  Adjusted R-square: 0.9901
  RMSE: 2.358e+005

5次拟合
attach://61499.jpg
Warnings during fitting:
Equation is badly conditioned. Remove repeated data points
         or try centering and scaling.

Linear model Poly5:
       f(x) = p1*x^5 + p2*x^4 + p3*x^3 + p4*x^2 + p5*x + p6
Coefficients (with 95% confidence bounds):
       p1 =  3.499e-021  (2.746e-021, 4.251e-021)
       p2 = -3.566e-015  (-4.548e-015, -2.583e-015)
       p3 =  1.275e-009  (8.221e-010, 1.728e-009)
       p4 =  -0.0001791  (-0.0002665, -9.167e-005)
       p5 =       9.313  (3.117, 15.51)
       p6 = -2.667e+004  (-1.172e+005, 6.384e+004)

Goodness of fit:
  SSE: 6.343e+010
  R-square: 0.9993
  Adjusted R-square: 0.999
  RMSE: 7.593e+004

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-23 12:27:28 | 显示全部楼层
不会发图片,格式变成了这样,无语。

出0入0汤圆

发表于 2012-10-23 12:47:28 | 显示全部楼层
拟合就是要求最后结果的方差最小,即:
F(a,b)=Σ(yn-a xn/(b+xn))^2,找出合适的a,b,使函数值最小。
对a,b求偏导数:
F'a=2Σ(a xn^2/(b+xn)^2-yn xn/(b+xn))
F'b=2aΣ(xnyn/(b+xn)^2-axn^2/(b+xn)^3)
令F'a=F'b=0,求出方程组的a,b即可。

出0入0汤圆

发表于 2012-10-23 14:02:12 | 显示全部楼层
楼上对对对

出0入0汤圆

 楼主| 发表于 2012-10-23 14:11:44 | 显示全部楼层
我验证一下,结果和楼主位给出的值一致就行

出0入0汤圆

发表于 2012-10-23 14:41:13 | 显示全部楼层
其实没那么复杂;
y=ax/(b+x)可以转化成:y=-b(y/x)+a;
将给的数据处理成y和y/x 转化成一次直线回归。求一次回归直线的程序有很多,最小二乘法就是上面那位仁兄提到的。
这个也很好理解。用matlab很好解。

出0入0汤圆

发表于 2012-10-23 14:52:09 | 显示全部楼层
高数书上就有这一章节,不过是作为选修,所以一般都不讲!!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-10-23 19:04:04 | 显示全部楼层
最小二乘法,包括14楼的公式能算出来,但得不到最优参数。

下面是使用网上的软件的计算结果:

模型公式: y = a*x/(b+x)
          y = (-563982.488923279)*x/(-563800.118506274+x)

迭代数: 49
计算用时(时:分:秒:微秒): 00:00:00:688
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
计算结束原因: 达到收敛判断标准
均方差(RMSE): 1557.490876226
残差平方和(SSE): 41238223.1019631
相关系数(R): 0.999999793804417
相关系数之平方(R^2): 0.999999587608876
决定系数(DC): 0.999999540318022
卡方系数(Chi-Square): 23.1836973981281
F统计(F-Statistic): 36373221.7790476

参数        最佳估算
----------        -------------
a                  -563982.488922904
b                  -563800.118506252

====== 结果输出 =====

No        实测值y        计算值y
1        100        100.0500923
2        750        753.2479334
3        1000        1004.1086409
4        10000        10114.4080869
5        50000        49841.9220036
6        100000        99595.5307191
7        200000        199733.8641095
8        300000        299137.1956729
9        400000        398989.2856743
10        500000        498407.3145865
11        600000        599050.6356692
12        700000        696815.4677692
13        800000        798954.6416970
14        900000        897963.3540217
15        1000000        999307.6233216
16        2000000        2004459.2696698
17        10000000        9999876.0561568

迭代了49次(坦白一下,不弄这个,我连迭代什么意思都不知道,上网查了下才稍微了解了点)

使用了 麦夸特法(Levenberg-Marquardt) + 通用全局优化法的优化算法。(这个目前还不懂)。

酷睿双核电脑运算了0.688秒。

感觉以我的水平是求不出最优参数了。

不行就只得放弃了。

出0入0汤圆

 楼主| 发表于 2012-10-23 19:15:20 来自手机 | 显示全部楼层
不过,兄弟们放心,150元肯定会送出。
楼上一些回复有的我还不好评估谁的最优,等我搞得更透彻,有个准确的判断后再结贴。

出0入0汤圆

 楼主| 发表于 2012-10-24 17:44:16 | 显示全部楼层
本帖最后由 bitter_rain 于 2012-10-24 17:46 编辑


自己算了一下,不是最优参数,不过好像也差的不多。

No        实测值y        计算值y
1        500000        499805.5
2        600000        600624.9
3        700000        698526.7
4        800000        800773.2
5        900000        899850.8
6        1000000        100123.0
7        2000000        200477.9
8        10000000 9863311.1


同样的数据用软件(1stopt )计算出来的:

Parameter a,b;
Variable x, y;
Function y=a*x/(b+x);
Data;
264500        500000
290400        600000
311600        700000
330500        800000
346300        900000
360400        1000000
440000        2000000
533700        10000000

迭代数: 61
计算用时(时:分:秒:微秒): 00:00:00:438
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
计算结束原因: 达到收敛判断标准
均方差(RMSE): 2210.81214270179
残差平方和(SSE): 39101522.6425413
相关系数(R): 0.999999777633505
相关系数之平方(R^2): 0.99999955526706
决定系数(DC): 0.999999468142173
卡方系数(Chi-Square): 19.4913956665671
F统计(F-Statistic): 13491236.6424953

参数        最佳估算
----------        -------------
a                  -563903.124639531
b                  -563795.853492795

====== 结果输出 =====

No        实测值y        计算值y
1        500000        498344.2795032
2        600000        598975.6805131
3        700000        696729.1936174
4        800000        798856.8159405
5        900000        897854.5978079
6        1000000        999187.9511314
7        2000000        2004246.2476809
8        10000000        9999885.7879929

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-10-24 17:49:06 | 显示全部楼层
方法和14楼的差不多,可能稍有差别,还没按14楼的计算。

出0入0汤圆

发表于 2012-10-25 21:03:17 | 显示全部楼层
放EXCEL里面,画出XY曲线,选拟合公式,就可得到了。

每那么复杂吧,先分析下你数据来源的精度,数据来源不准的话,拟合再准也没用,徒然增加单片机的计算量。

出0入0汤圆

发表于 2012-12-2 21:15:31 | 显示全部楼层
bitter_rain 发表于 2012-10-24 17:44
自己算了一下,不是最优参数,不过好像也差的不多。

No        实测值y        计算值y

兄弟是不是在做运动控制这一块?可以一起交流一下,

出0入0汤圆

发表于 2012-12-3 17:02:11 | 显示全部楼层
excel   貌似有数据拟合的功能

出0入0汤圆

发表于 2012-12-20 10:49:45 | 显示全部楼层
23楼正解

出0入0汤圆

发表于 2012-12-25 20:04:08 | 显示全部楼层
楼主弄出来没有?

这个提示可能对你有用:Gauss-Newton-Levenberg-Marquardt method (GNLM), hessian 矩阵

祝好运。

出215入169汤圆

发表于 2012-12-26 00:03:33 | 显示全部楼层
EKF算法就可以了,以x和y为观测量,预测状态变量a和b的值
一开始启动的时候,用几个x和y,求平均值,再求解a和b
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 10:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表