24小时热门版块排行榜    

CyRhmU.jpeg
查看: 23353  |  回复: 73

dshuanger

木虫 (小有名气)

[求助] matlab非线性拟合模型参数,大神你在哪!

本人非计算模拟专业,小白一枚,但最近需要模拟参数,不知如何运用matlab求参数,顾求助各位大神。     
        模型表达式:
      y=a/E1 +a/E2[1-exp(-x/t)]+a*x/E3            
      其中:x=[2,5,10,15,30,60,120,200,300,550,700];
                 y=[8.66667,10,10.66667,12.66667,13.33333,15,15.33333, 16.66667,17.33333,18.33333,20];
                 a=2
       未知参数:E1,E2,t,E3     
不知道能否通过matlab拟合参数
请各位大神能鼎力相助,最好能给出代码或者计算方法,谢谢大家!

[ Last edited by dshuanger on 2013-11-5 at 11:06 ]
回复此楼

» 收录本帖的淘帖专辑推荐

matlab典型案例及小技巧 宝贵经验 Polyflow反应模拟 分子动力学
程序 第一性原理杂 研究僧 生物试验统计分析
动力学拟合 技术贴 考博 科学计算tool疑难问题
软件

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
dingd: 金币+1, 谢谢交流。 2013-11-05 16:37:32
小木虫: 金币+2, 帖子真精彩 2015-03-19 14:14:03
(1) matlab代码及结果
CODE:
function fit_nonl
clear all;clc
format long

data=[    8.6667    2.0000
   10.0000    5.0000
   10.6667   10.0000
   12.6667   15.0000
   13.3333   30.0000
   15.0000   60.0000
   15.3333  120.0000
   16.6667  200.0000
   17.3333  300.0000
   18.3333  550.0000
   20.0000  700.0000
];
xspan=data(:,2);    %x的数据,在此输入
texp=data(:,1);    %t的数据,在此输入

k0=[0.1 0.1 1 100];
lb=-[1 1 1 1]*1e9;
ub=[1 1 1 1]*1e9;


%-------------------------------------------------------------------------

% 使用函数lsqnonlin()进行参数估计

options=optimset('maxfunevals',1000);
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@objfunc,k0,lb,ub,options,xspan,texp);

ci = nlparci(k,residual,jacobian);
%residual;
fprintf('\n\n拟合结果:\n')
fprintf('\n\t参数 e1 = %.16f',k(1))
fprintf('\n\t参数 e2 = %.16f',k(2))
fprintf('\n\t参数 e3 = %.16f',k(3))
fprintf('\n\t参数 t = %.16f',k(4))
y=kineticseqs(xspan,k);
r2=1-sum((texp-y).^2)./sum((texp-mean(y)).^2);
fprintf('\n\tr^2 = %.16f',r2);
figure
plot(xspan,kineticseqs(xspan,k),'b',xspan,texp,'or'),legend('计算值','实验值','location','best')


%-------------------------------------------------------------------------

function f = objfunc(k,xspan,texp)
f=kineticseqs(xspan,k)-texp;

%------------------------------------------------------------------------
function xt = kineticseqs(x,k)
a=2;
e1=k(1);e2=k(2);e3=k(3);t=k(4);
xt=a/e1 +(a/e2)*(1-exp(-x/t))+a*x/e3;

结果见附图1。
matlab非线性拟合模型参数,大神你在哪!
附图1.png



(2) origin软件拟合的详细操作步骤参见:
http://muchong.com/bbs/viewthread.php?tid=6135969&authorid=1122189


(3) spss软件拟合的详细操作步骤参见:
http://muchong.com/bbs/viewthread.php?tid=6166592&authorid=1122189

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
7楼2013-11-05 14:09:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jerkwin

专家顾问 (正式写手)

不劳matlab, origin, 1stopt足矣
matlab非线性拟合模型参数,大神你在哪!-1
2013-11-04_212307.png

2楼2013-11-05 11:23:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主


dingd: 金币+1, 谢谢分享。 2013-11-05 16:37:58
y=2/e1 +2/e2/(1-exp(-x/t))+a*x/3;    // a=2
x=[2,5,10,15,30,60,120,200,300,550,700];
y=[8.66667,10,10.66667,12.66667,13.33333,15,15.33333, 16.66667,17.33333,18.33333,20];

相关系数(R): 1
相关系数之平方(R^2): 1
决定系数(DC): 0.999999999996653
卡方系数(Chi-Square): 1.64243431014082E-11

参数          最佳估算
----------        --------------
e1  =1.2090897803241
e2  =3.11591327892529
t   =0.00209072546506921

====== 输出结果 =====
No.         Observed y        Calculated y
1        8.66667            8.66666365993411
2        10        9.99999365993411
3        10.66667        10.6666636599341
4        12.66667        12.6666636599341
5        13.33333        13.3333236599341
6        15        14.9999936599341
7        15.33333        15.3333236599341
8        16.66667        16.6666636599341
9        17.33333        17.3333236599341
10        18.33333        18.3333236599341
11        20        19.9999936599341
3楼2013-11-05 11:54:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
dshuanger: 金币+100, ★★★很有帮助, 非常感谢,呵呵,虽然有些看不懂,但感觉比较相符 2013-11-05 20:21:50
结果不唯一。另外一组结果:
e1 = 54.5440439848079
e2 = 241.457452201238
t  = 0.104301409896579
e3 = 2.35332457537677E17


====== 输出结果 =====

No.         Observed y        Calculated y
1        8.6667        8.66670000000005
2        10        9.9999999999611
3        10.6667        10.6666999999611
4        12.6667        12.6666999999611
5        13.3333        13.3332999999611
6        15        14.9999999999611
7        15.3333        15.3332999999611
8        16.6667        16.6666999999611
9        17.3333        17.3332999999611
10        18.3333        18.3332999999611
11        20        19.9999999999611
9楼2013-11-05 14:42:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

梦落在草地上

新虫 (小有名气)

引用回帖:
16楼: Originally posted by 月只蓝 at 2015-01-21 09:01:30
用1stopt软件做比较方便,该软件参见:http://muchong.com/bbs/viewthread.php?tid=4586018&fpage=1&target=blank

求解该问题的代码:
Parameters b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
Variable X1,X2,X3,Y ...

你好,当我复制粘贴上您的代码后是这样的,然后什么步骤能得到计算结果、参数等等呢?
matlab非线性拟合模型参数,大神你在哪!-2
1.jpg

18楼2015-01-21 09:54:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

你的 “+a/E2[1-exp(-x/t)]” 再明确一下为好。
4楼2013-11-05 11:56:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dshuanger

木虫 (小有名气)

引用回帖:
4楼: Originally posted by feixiaolin at 2013-11-05 11:56:53
你的 “+a/E2” 再明确一下为好。

对不起呀,应该是: y=a/E1 +(a/E2)*[1-exp(-x/t)]+a*x/E3
5楼2013-11-05 12:32:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dshuanger

木虫 (小有名气)

引用回帖:
2楼: Originally posted by jerkwin at 2013-11-05 11:23:25
不劳matlab, origin, 1stopt足矣

2013-11-04_212307.png

origin没有这个函数,怎么编辑,我不太清楚,能否具体告知下怎么做,谢谢,这是我的邮箱:dshuanger@163.com
6楼2013-11-05 12:35:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
5楼: Originally posted by dshuanger at 2013-11-05 12:32:47
对不起呀,应该是: y=a/E1 +(a/E2)*+a*x/E3...

相关系数(R): 1
相关系数之平方(R^2): 1
决定系数(DC): 0.999999999999998
卡方系数(Chi-Square): 9.32871296249143E-15
F统计(F-Statistic): 4.05323966463345E16

参数               最佳估算
--------       ----------
e1 = 0.213676814293175
e2 = 1.17653912578659
t  = 0.0544357535772782
e3 = 6.85009948116865E17


====== 输出结果 =====

No.         Observed y        Calculated y
1        8.6667        8.66670015109874
2        10        10.0000001510987
3        10.6667        10.6667001510987
4        12.6667        12.6667001510987
5        13.3333        13.3333001510987
6        15        15.0000001510987
7        15.3333        15.3333001510987
8        16.6667        16.6667001510987
9        17.3333        17.3333001510987
10        18.3333        18.3333001510987
11        20        20.0000001510987
8楼2013-11-05 14:33:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

阿德

金虫 (正式写手)

引用回帖:
7楼: Originally posted by 月只蓝 at 2013-11-05 14:09:49
(1) MATLAB代码及结果

function fit_nonl
clear all;clc
format long

data=;
xspan=data(:,2);    %x的数据,在此输入
Texp=data(:,1);    %T的数据,在此输入

k0=;
lb=-*1e9;
ub=*1e9;


%--- ...

您好,请问下你这里lb和ub是设的一个值?然后k0=[0.1 0.1 1 100]是四个参数的初始值么?
10楼2014-01-14 14:36:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dshuanger 的主题更新
信息提示
请填处理意见