24小时热门版块排行榜    

CyRhmU.jpeg
查看: 633  |  回复: 2

想飞就飞1985

捐助贵宾 (初入文坛)

[求助] 求解一个含约束的非线性参数拟合问题,方程为幂函数,请各位大神帮忙,多谢!已有1人参与

y=[184,107,49,15366,575,19120,5504]
x=[5.15,8.21,10.39,1.07,2.37,0.94,1.50]
f(x)为指数函数:f(x)=a*x^b
含约束的非线性参数拟合的最优目标为:
min{[y1-f(x1)]^2+[y2-f(x2)]^2+[y3-f(x3)]^2……[yn-f(xn)]^2}
约束条件为:
0.5yi<f(xi)<2yi
本题的目的是想求使目标函数最优的幂函数的参数a和b。

我初学matlab,看过一些含约束的曲线拟合的例子,都是对方差等参数进行约束,也看过一些参数拟合的例子,但是怎么添加约束没有找到,这个问题困扰我近1个月了,请各位帮帮忙,帮我解决一下这个问题,多谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
Matlab做优化比较麻烦,效果也不好掌控,光图结果的话1stOpt更简单好用:
CODE:
Constant y=[184,107,49,15366,575,19120,5504],
         x=[5.15,8.21,10.39,1.07,2.37,0.94,1.50];
MinFunction Sum(x,y)((a*x^b-y)^2);
            For(x,y)(0.5*y<=a*x^b<=2*y);

目标函数值(最小): 117013910.380015
a: 9682.97844587003
b: -2.4691625663481

约束函数:
1: a*5.15^b-(0.5*184) = 77.21591269
2: a*5.15^b-(2*184) = -198.7840873
3: a*8.21^b-(0.5*107) = -0.0008269879962
4: a*8.21^b-(2*107) = -160.500827
5: a*10.39^b-(0.5*49) = 5.410240888
6: a*10.39^b-(2*49) = -68.08975911
7: a*1.07^b-(0.5*15366) = 510.2393324
8: a*1.07^b-(2*15366) = -22538.76067
9: a*2.37^b-(0.5*575) = 862.4908301
10: a*2.37^b-(2*575) = -0.009169892725
11: a*0.94^b-(0.5*19120) = 1721.339345
12: a*0.94^b-(2*19120) = -26958.66065
13: a*1.5^b-(0.5*5504) = 806.0415879
14: a*1.5^b-(2*5504) = -7449.958412
2楼2015-09-29 10:26:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

想飞就飞1985

捐助贵宾 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2015-09-29 10:26:32
Matlab做优化比较麻烦,效果也不好掌控,光图结果的话1stOpt更简单好用:

Constant y=,
         x=;
MinFunction Sum(x,y)((a*x^b-y)^2);
            For(x,y)(0.5*y<=a*x^b<=2*y);


目标函数值( ...

请问你的1stopt是哪个版本?
3楼2015-09-29 13:32:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 想飞就飞1985 的主题更新
信息提示
请填处理意见