24小时热门版块排行榜    

查看: 1100  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

847396025

金虫 (小有名气)

[求助] MATLAB非线性拟合 已有1人参与

数据是每一个x对应一个y
x=10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
y=417.308 390.957 359.313 347.39 315.77 309.942 290.582 275.24 251.62 200.9 180.76 134.65 149.45 108.823 138.25 103.431 93.75 104.87 83.871 108.475
拟合要用的方程 y=(700+x)*(2*x/(700+x))*(n1*h1*k1*L/(1+k1*L)+n2*k2*h2*L/(1+k2*L)),其中L很复杂,用下面的方程单独表示出来:
L=2*(-1*Y)^0.5*cos((θ)/3)-(B)/3/(A);
θ=arccos((-1*(x))/(((-1*(y))^3)^0.5));
A=k1*k2;
B=k1+k2+k1*k2*(2*x/(700+x)*(n1+n2)-7000/(700+x));
C=1+2*x/(700+x)*(n1*k1+n2*k2)-7000/(700+x)*(k1+k2);
D=-1*7000/(700+X);
Y=C/3/(A)-((B)/3/(A))^2;
X=((B)/3/(A))^3-(B)*(C)/6/((A)^2)+(D)/2/(A);注意这里的X,Y是大写的
自变量、因变量是小写的x,y
n1、n2、K1、K2、H1、H2是需要拟合的参数。
请大牛帮我把matlab的程序写出来,本人是初学者,仅仅看了matlab的教程而已,求指教。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

简简单单比什么都好
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-03-01 15:54:29
这不是普通的非线性代数方程拟合问题,从给出的方程可以看到,y是L的函数,L是θ的函数,而θ又是y的函数,最终的结果就是,你拟合的方程不是显式,而是隐式的,而且方程关系很复杂。
此外,D=-1*7000/(700+X);X=( ...

这问题实际是 参数个数(6)维 的非线性优化,所以,在参数的较为准确的初值无法知道的情况下,用普通迭代方法lsqcurvefit, lsqnonlin之类都不太可能给出好结果。

从实际使用看,1stOpt的differential evolution的确是不错的选项。

用matlab也可以,但是要很擅长随机优化才行。自带的ParticalSwarmOptimization函数优化能力很菜。Mathematica内置了Differential Evolution,但是某些情况下(很可能大多数情况下)不及1stOpt
ส็็็็็็็็็็็็็็็็็็็็
6楼2016-03-01 20:47:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

月只蓝

主管区长 (职业作家)

这不是普通的非线性代数方程拟合问题,从给出的方程可以看到,y是L的函数,L是θ的函数,而θ又是y的函数,最终的结果就是,你拟合的方程不是显式,而是隐式的,而且方程关系很复杂。
此外,D=-1*7000/(700+X);X=((B)/3/(A))^3-(B)*(C)/6/((A)^2)+(D)/2/(A),其中的D和X都是过渡参数,这两个方程表明,D或X也是隐式的。

你求助下dingd吧,看看高级版本的1stOpt能做不。这问题如果简单,估计早有人应助了。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2016-03-01 15:54:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

淘宝搜费老师

捐助贵宾 (小有名气)


【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
847396025: 金币+30, 有帮助 2016-03-01 21:32:10
你的问题可参照下面的帖子进行,用lsqnonlin函数。
http://muchong.com/html/201407/7603645.html
3楼2016-03-01 16:22:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

NicoleLas

木虫 (正式写手)

表述得太奇怪了.
   x, y都是vector, 那似乎theta也是个vector, L也是?都是vector?命名太容易出错了,大小写有时候特别容易混淆,换个名字,自己理清思路,哪些是vector, 哪些是scalar........
Be water, my friend.
4楼2016-03-01 18:51:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见