24小时热门版块排行榜    

查看: 1925  |  回复: 4

dingyy1987

金虫 (小有名气)

[求助] 哪位大神有istopt,我网上下了一个不能运行sharedmodel,求帮我运行一下 已有2人参与

Title "123";
Parameter c1,c2,c3,c4,c5;
Variable x,z,f;
SharedModel;
Function
        z=(x^c2/c3/c4)^(1/c4);
        f=c1*(x^c2/c3/c4)^(1/c4)*exp(-1/c4)+c5*(1-exp(-1/c4));
data;
14857.77758        0.0414        8.94345E6
18553.17237        0.05291        8.99335E6
20174.23991        0.06071        8.98066E6
24127.20834        0.07239        8.98738E6
24273.43798        0.07442        9.01031E6
26951.77543        0.08156        9.05148E6
20564.9827        0.07419        8.59135E6
19910.72847        0.07655        8.38573E6
18344.07188        0.07431        8.19985E6
16706.67637        0.07078        8.1676E6
16478.50121        0.0693        8.33608E6
22360.23753        0.08006        8.7983E6
21293.07227        0.07569        8.8397E6
20308.9913        0.07284        8.78015E6
23946.8144        0.08034        8.8947E6
20146.16809        0.07223        8.61393E6
17522.67615        0.06795        8.41823E6
17196.59303        0.06577        8.45751E6
17575.12863        0.06553        8.43412E6
15275.12691        0.0583        8.35688E6
18133.81317        0.06291        8.55274E6
18676.61758        0.06373        8.62984E6
16488.34249        0.05812        8.47193E6
16964.95475        0.06073        8.4801E6
17575.16675        0.06188        8.50543E6
17177.05496        0.05957        8.52406E6
15914.92064        0.05696        8.523E6
14213.56581        0.05257        8.42825E6
15066.24199        0.05465        8.42138E6
15927.43786        0.05661        8.44597E6
13486.53921        0.0505        8.27752E6
13013.96774        0.04854        8.32841E6
13728.11816        0.05051        8.39552E6
14144.65298        0.05275        8.41224E6
14954.59782        0.05585        8.40791E6
13582.45324        0.05299        8.31854E6
12648.72128        0.0508        8.27208E6
11698.11831        0.04785        8.21884E6
11582.30157        0.04853        8.22806E6
10380.45227        0.04524        8.15268E6
11064.31308        0.04744        8.19212E6
11121.39599        0.04783        8.15213E6
11078.61898        0.04852        8.08062E6
9802.8059        0.0446        8.00574E6
7929.85965        0.04011        7.80904E6
9503.21012        0.047        7.85323E6
8308.91314        0.04326        7.79567E6
8082.84269        0.04295        7.78816E6
7749.99714        0.04217        7.72199E6
6839.21332        0.03864        7.56499E6
6910.27878        0.03997        7.51553E6
6940.63115        0.04122        7.44532E6
6401.43753        0.04093        7.32896E6
5752.16969        0.0386        7.21224E6
4958.64579        0.03575        7.08191E6
4917.3898        0.03696        7.00645E6
4279.60599        0.03513        6.83156E6
3229.51003        0.02891        6.70232E6
2500.59496        0.02539        6.50041E6
2086.75039        0.02345        6.29762E6
2273.74314        0.02434        6.3008E6
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
不能运行是版本问题吧。
z和f相差的太大了,很难保证两个拟合的都好。
2楼2016-10-25 14:39:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
dingyy1987: 金币+50, ★★★★★最佳答案, 很有帮助,而且也很热心 2016-10-25 20:48:03
用matlab给你编了个程序
主程序:
CODE:
%共享参数拟合
%原理:非线性最小二乘拟合
clear,clc
format long
data=[
14857.77758  0.0414  8.94345E6
18553.17237  0.05291  8.99335E6
20174.23991  0.06071  8.98066E6
24127.20834  0.07239  8.98738E6
24273.43798  0.07442  9.01031E6
26951.77543  0.08156  9.05148E6
20564.9827  0.07419  8.59135E6
19910.72847  0.07655  8.38573E6
18344.07188  0.07431  8.19985E6
16706.67637  0.07078  8.1676E6
16478.50121  0.0693  8.33608E6
22360.23753  0.08006  8.7983E6
21293.07227  0.07569  8.8397E6
20308.9913  0.07284  8.78015E6
23946.8144  0.08034  8.8947E6
20146.16809  0.07223  8.61393E6
17522.67615  0.06795  8.41823E6
17196.59303  0.06577  8.45751E6
17575.12863  0.06553  8.43412E6
15275.12691  0.0583  8.35688E6
18133.81317  0.06291  8.55274E6
18676.61758  0.06373  8.62984E6
16488.34249  0.05812  8.47193E6
16964.95475  0.06073  8.4801E6
17575.16675  0.06188  8.50543E6
17177.05496  0.05957  8.52406E6
15914.92064  0.05696  8.523E6
14213.56581  0.05257  8.42825E6
15066.24199  0.05465  8.42138E6
15927.43786  0.05661  8.44597E6
13486.53921  0.0505  8.27752E6
13013.96774  0.04854  8.32841E6
13728.11816  0.05051  8.39552E6
14144.65298  0.05275  8.41224E6
14954.59782  0.05585  8.40791E6
13582.45324  0.05299  8.31854E6
12648.72128  0.0508  8.27208E6
11698.11831  0.04785  8.21884E6
11582.30157  0.04853  8.22806E6
10380.45227  0.04524  8.15268E6
11064.31308  0.04744  8.19212E6
11121.39599  0.04783  8.15213E6
11078.61898  0.04852  8.08062E6
9802.8059  0.0446  8.00574E6
7929.85965  0.04011  7.80904E6
9503.21012  0.047  7.85323E6
8308.91314  0.04326  7.79567E6
8082.84269  0.04295  7.78816E6
7749.99714  0.04217  7.72199E6
6839.21332  0.03864  7.56499E6
6910.27878  0.03997  7.51553E6
6940.63115  0.04122  7.44532E6
6401.43753  0.04093  7.32896E6
5752.16969  0.0386  7.21224E6
4958.64579  0.03575  7.08191E6
4917.3898  0.03696  7.00645E6
4279.60599  0.03513  6.83156E6
3229.51003  0.02891  6.70232E6
2500.59496  0.02539  6.50041E6
2086.75039  0.02345  6.29762E6
2273.74314  0.02434  6.3008E6];
x=data(:,1);
ze=data(:,2);
fe=data(:,3);
fun=@(c)myfun(x,c,ze,fe);
c0=[7.55629E8,0.18679,46.54595,0.35525,6.06252E6]';%初值
options = optimset('Display','on','MaxFunEvals',1000,'MaxIter',1000);
c=lsqnonlin(fun,c0,[],[],options)
zc=(x.^c(2)/c(3)/c(4)).^(1/c(4));
fc=c(1)*(x.^c(2)/c(3)/c(4)).^(1/c(4)).*exp(-1/c(4))+c(5)*(1-exp(-1/c(4)));

%相关系数
ye=[ze;fe];
yc=[zc;fc];
R=corrcoef(ye,yc)

%绘图
subplot(2,1,1);
scatter(x,ze,'o');
hold on
scatter(x,zc,'+');
subplot(2,1,2);
scatter(x,fe,'o');
hold on
scatter(x,fc,'+')

函数
CODE:
function y=myfun(x,c,ze,fe)
    zc=(x.^c(2)/c(3)/c(4)).^(1/c(4));
    fc=c(1)*(x.^c(2)/c(3)/c(4)).^(1/c(4)).*exp(-1/c(4))+c(5)*(1-exp(-1/c(4)));
    n=length(zc);
    i=1:n;
    y=(zc-ze).^2+(fc-fe).^2;

结果:
c =
  1.0e+008 *
   7.556291199986442
   0.000000001867029
   0.000000465455226
   0.000000003562897
   0.060625164104285
R=0.999425581659652
见图1
哪位大神有istopt,我网上下了一个不能运行sharedmodel,求帮我运行一下
图1.jpg

3楼2016-10-25 16:17:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingyy1987

金虫 (小有名气)

引用回帖:
3楼: Originally posted by yz457694 at 2016-10-25 16:17:27
用matlab给你编了个程序
主程序:

%共享参数拟合
%原理:非线性最小二乘拟合
clear,clc
format long
data=;
x=data(:,1);
ze=data(:,2);
fe=data(:,3);
fun=@(c)myfun(x,c,ze,fe);
c0=';%初值
options ...

很厉害,请问一下,你初始参数怎么定的?
每次我改初始参数后,拟合效果就很差,就是说本程序严重依赖初始参数的预定。
不知道是误差规定的,还是迭代不够??
4楼2016-10-25 20:00:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

你在这个值附近修改结果变差是因为达到了一些边界条件,比如迭代过程MaxFunEvals,MaxIter等参数超过了预设的值,运行结束的时候命令窗口会提示拟合结束的原因,你可以相应的在options那一行代码里面增强一下迭代参数,结果就还是会收敛在这个值(你的数据z,f之间量级差太大了,所以迭代参数可以调高一些)。这个初值开始也很头大,后来观察发现z中只含有c2,c3,c4,f中全都包含,就想试了试先通过z-x拟合确定c2,c3,c4,然后固定c2,c3,c4,拟合f-x,结果收敛还不错(通过origin实现),然后作为初值用matlab来整体拟合。

发自小木虫Android客户端
5楼2016-10-25 20:31:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dingyy1987 的主题更新
信息提示
请填处理意见