24小时热门版块排行榜    

CyRhmU.jpeg
查看: 23358  |  回复: 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的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +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的回帖
查看全部 74 个回答

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

荣誉版主 (文坛精英)

优秀版主

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