| 查看: 701 | 回复: 0 | ||
[求助]
fminsearch 分段隐函数参数拟合的问题
|
|
1. 需要估计参数的函数为分段函数,且为隐函数。 2. 已知实验数据v=[0 0.3 0.4 0.5 0.6 0.7 1],s=s=[0 0.01238 0.0385 0.0366 0.0188 0.009 0.0012], 拟合函数里面的四个参量p(1),p(2),p(3),p(4). 3.我自己写的程序 m文件为:function E=myfun(p,Z) v=[0.3 0.4 0.5 0.6 0.7 1]; s=[0.01238 0.0385 0.0366 0.0188 0.009 0.0012]; if (v(:,1)<1-1/(1+p(2))^3) Z=2*(p(1)./0.0012).*v(:,1).*(1+(s./(1-(1/(1+p(2))^3))).^p(3)-(v./(1-(1/(1+p(2))^3))).^p(4))./(3-v)-s./0.0012; else if (v(:,1)>=1-1/(1+p(2))^3) Z=(1-(1+p(2))^3.*(1-s)).*(1-v./0.0012)./(v./0.0012+0.0865.*(1-v./0.0012))+(1+p(2))^3.*(1-s).*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012))./((2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012)+0.0865*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012)))+(1-(1+p(2))^3.*(1-s)).*(1-(v./0.0012))./((v./0.0012)+0.0865.*(1-v./0.0012))+(1+p(2))^3.*(1-s).*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012))./((2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012)+0.0865*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012)))+(1-(1+p(2))^3.*(1-s)).*(1-(v./0.0012))./((v./0.0012)+0.827.*(1-v./0.0012))+(1+p(2))^3.*(1-s).*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012))./((2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012)+0.827*(1-(2+(1/(1+p(2)))^3)./(2-2*(1/(1+p(2)))^3)*(0.0012./p(1)).*(v./0.0012))); end end E=sum((Z).^2); 运行程序: p0=[0.14 0.31 2.1 0.0002]; opt=optimset('TolFun',1e-10,'TolX',1e-10); [p,fval,exitflag,output]=fminsearch(@myfun,p0,opt) 4.存在的问题: (1)隐函数的目标函数我直接设定为此隐函数可以吗? (2)计算结果一直不对,我分析是m文件调用数据时只调用了x,v的第一组数据,m文件哪里有问题? |
» 猜你喜欢
Materials Today Chemistry审稿周期
已经有4人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有3人回复
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复












回复此楼