focusun 发表于 2009-10-22 19:43:44

Ramberg-Osgood方程拟合

有人做过Ramberg-Osgood方程的拟合么,就是y=a*x+b*x^c,拟合参数为a,b,c。用自定义函数,结果matlab不迭代,就是初始值。求助!!!

messenger 发表于 2009-10-22 20:31:44

Ramberg-Osgood方程,刚看到这个标题吓了我一跳。其实y=a*x+b*x^c,是一个很简单的拟合方程,虽然你的专业上给这个方程起了一个很吓人的名字,呵呵~

你最好把要拟合的数据以及Matlab代码都贴出来,我想这里有很多人愿意来尝试这种拟合。

另外,新手要看看版规和FAQ,学学如何提问。

focusun 发表于 2009-10-23 11:53:52

2# messenger 我用的是MATLAB中curve fitting tool(cftool)模块 ,因为此模块函数库里没有我要的这个函数,虽然Ramberg-Osgood方程也不是什么复杂的函数。我就用用户自定义的方式定义了我这个函数,在数据很少,数值也很小时,是可以拟合出来的。但我实际要拟合的数据数值比较大(x的值是100数量级的,y值是0.01数量级的),数据点也比较多(200个),导入进去就拟合不了。选择的初始参数值是多少,得出的结果就是多少,根本没有进行迭代计算。各位大侠,谁知道问题出在什么地方?

messenger 发表于 2009-10-23 15:13:58

本帖最后由 messenger 于 2009-10-24 12:38 编辑

这种情况通常是模型有问题。你不把数据贴出来,只能这么判断了。如果不涉及保密,最好把数据贴出来,200个数据也不算多。

focusun 发表于 2009-10-28 18:56:44

其中一组数据如下:
x                              y
0                      0
37.7890906        0.000175931
74.38538728        0.000366868
108.8558973        0.00055757
142.6667533        0.000744558
174.8810123        0.000943091
208.3563431        0.001133009
241.4891702        0.001335109
273.3114221        0.001525953
304.0660451        0.001717278
332.0697163        0.001903252
359.1640998        0.002117574
382.6548977        0.002316248
404.105389        0.002519728
422.2619018        0.002722381
436.6087109        0.002920211
450.4316362        0.003119965
462.0503544        0.00330417
473.9512115        0.003515272
482.8133348        0.003717399
492.7087016        0.003914908
499.6164541        0.004118264
506.2508301        0.004321074
512.0344965        0.004528859
519.1664938        0.004728822
523.5046804        0.004912224
529.8590701        0.005136074
533.4554847        0.005326681
538.1045042        0.005530317
542.5564531        0.005728146
545.8833281        0.005945714
549.584755        0.006140215
554.9940594        0.006337382
556.8313884        0.006536158
559.3307772        0.006736946
562.3152891        0.006935342
565.697969        0.007136068
568.04524         0.007350478
570.9406061        0.007536471
573.5706746        0.007737902
576.6220839        0.007940742
577.8319476        0.008145755
579.4354586        0.008351918
583.1497382        0.008546752
584.5534941        0.008759075
585.9387118        0.008958055
588.55903                      0.009169735
588.5759221        0.009352465
590.5510978        0.009556889
591.9034936        0.00976303
无法拟合的原因,可能也包括x,y数据数量级相差太多
ramberg-osgood方程是:y=x/a+(x/b)^c
跟上次贴出来的实质是一个方程。

focusun 发表于 2009-10-28 18:59:31

如果用cftool既定模块直接拟合不行的话,用编程也行,哪位大侠指教一下?万分焦急,谢谢!

messenger 发表于 2009-10-29 10:50:29

让你贴数据,你好几天不来,一来就这么着急,真受不了这样的。

你这个问题可能是拟合数据本身的数量级问题,下面这几个值可以满足要求

a=1.706035144329946e+005    b=9.905011109063989e+002    c=9.905785096811478e+000

focusun 发表于 2009-10-29 16:34:04

谢谢messenger!我贴出来的数据只是我要处理的数据中的一组,我要处理的数据还有好几十组。所以我想知道,你的这个回归是怎么做出来的?可不可以把你的程序贴出来?我比较菜,不好意思。另外,我可以直接和您联系么?联系方式?拜谢!

shamohu 发表于 2009-10-29 16:52:00

可以试下1stOpt,不用猜初值,拟合效果很好,使用也简单。

focusun 发表于 2009-10-30 12:47:47

我想问一下1stopt中取正函数怎么编?即:<x>=x,当x>=0,:<x>=0,当x<0

shamohu 发表于 2009-10-30 14:04:01

if(x<0,0,x)
页: [1]
查看完整版本: Ramberg-Osgood方程拟合