lxm1025006 发表于 2009-1-6 16:58

一个复杂多项式的曲线拟合问题

我想由100组数据拟合多项式:
自己编了个最小二乘法的程序算不出来,用MATLAB自带的工具箱算出来的结果跟正确结果差别太大,有人能帮想个办法吗。
正确结果是:
数据见附件

sigma665 发表于 2009-1-6 18:10

回复 楼主 lxm1025006 的帖子

用曲线拟合工具箱,结果应该不会差很多

dingd 发表于 2009-1-6 20:14

下面是由1stOpt拟合的结果:

y = 77.687597*x^(-0.796015)+38.3605*x^(-0.38197)-75.6381*x^(-0.58899)

ChaChing 发表于 2009-1-6 21:25

我使用cftool试下, 随意挑个power拟合, 其误差才约为3%, 以工程眼光还好吧!
但与dingd结果比较, 误差就较大了些, 但个人认为那应该是拟合函数选定不同造成!
如何选定一样, 个人很少使用此工具箱, 不熟! 但个人认为也没必要吧!
拟合不就是不知道原函数型态吗!? 不懂!

load data; x=aa(:,1); y=aa(:,2); y1 = 36.47*x.^(-0.8857)+4.064;
y2 = 77.687597*x.^(-0.796015)+38.3605*x.^(-0.38197)-75.6381*x.^(-0.58899);
plot(x,); RelErr1=(y1-y)./y; RelErr2=(y2-y)./y; max()

lxm1025006 发表于 2009-1-7 20:44

我怎么得不到式子y2 = 77.687597*x.^(-0.796015)+38.3605*x.^(-0.38197)-75.6381*x.^(-0.58899)啊,指数拟合里没有这个函数关系啊
我自己改造了一个函数
利用最小二乘法+牛顿迭代拟合,结果不收敛啊.
程序见附件,希望大家帮我找找错误!


[ 本帖最后由 ChaChing 于 2009-7-12 11:44 编辑 ]

ChaChing 发表于 2009-1-7 20:51

回复 5楼 lxm1025006 的帖子

那是3F的结果!

lxm1025006 发表于 2009-1-7 22:11

回复 7楼 ChaChing 的帖子

6F的那个程序,你能帮我看下吗,不知道哪里有问题啊,迷茫,谢谢!

ChaChing 发表于 2009-1-7 22:34

回复 8楼 lxm1025006 的帖子

你的程序有点长, 且相关注解我这边会变乱码!
肯定得花长时间看! 不好意思! 真得有点懒的看!
而且这方面个人亦不是很熟!

[ 本帖最后由 ChaChing 于 2009-1-7 22:36 编辑 ]
页: [1]
查看完整版本: 一个复杂多项式的曲线拟合问题