谁用过口贷网app这个平台呀,感觉怎么样?

09-0609-1307-0709-17
02-2803-0203-0503-08
◇本站云标签matlab曲线拟合_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
matlab曲线拟合
上传于|0|0|文档简介
&&matlab软件关于曲线拟合的教程
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 2976|回复: 8|关注: 0
matlab带约束条件的动力学参数估计
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
本帖最后由 zijikai 于
22:13 编辑
请教各位大牛,最近在做一个模型,然后是想用matlab做动力学的参数估计,是只知道t和x1的关系,估计参数三个k。那么是利用fmincon和lsqnonlin这两个函数计算了一下,但是得到的K值与预期的有些出入,主要是几个方面的问题不太明白:
1.& & 利用fmincon和lsqnonlin这两个函数来计算,不知道是否是得到了全局优化,所以对得到K值很怀疑,请教怎么来看是否是全局优化,如果不是,那要怎么做优化呢??这是最棘手的问题。2.& & 我的模型是有约束条件的,但是在下面的程序里是没有写进去约束条件的,主要是不知道约束条件加在哪里?3.& & 其实真实的实验值x1应该是要再乘以0.000015的,奈何我乘上这个系数后,matlab就无法出结果了,很是为难,是不是要改一下option里的什么参数啊??4.& & 最后一个问题就是关于残差图,是不是说如果数据不是均匀的分布在零点线上下的话,就说明模型不适合啊? 还望各位大牛给看看,到底这个模型的参数估计要怎么进行啊。
那么下面的是模型所涉及的等式及在matlab里的程序。模型:x1←→x2→x3 各底物的量(X1,X2,X3)与时间t的关系如下:
dx1/dt=k-1*x2-k1*x1
dx2/dt=k1*x1-k-1*x2-2*k2*(x2)*x(2)
dx3/dt= k2*(x2)*x(2)
初值:t=0时,x1=1; x2=0;x3=0 。 约束条件:x1+x2+2*x3=1& &; 0&=x1&=1;0&=x2&=1; 0&=x3&=0.5;
求拟合参数k-1,k1,k2。现在的思路是利用非线形最小二乘法,即求取minΣ(x1实验值-x1计算值)^2时的K值。
实验值: t& && && && && && && &&&x1& & 0& && & 1& && && && && & 3& && & 0.4432& & 6& && & 0.3063& & 9& && & 0.2441& & 12& && &0.1964& & 15& && &0.1747& & 18& && &0.1531&&& & 21& && &0.1432 & & 27& && &0.1351& & 33& && &0.1270&&& & 39& && &0.0910& & 45& && &0.0838& & 51& && &0.0739&&& & 60& && &0.0684&&
Matlab里的code:
function KineticsEst5copy2
% 动力学ODE方程模型的参数估计
k0 = [0.5&&0.5&&0.5];& && && &% 参数初值
lb = [0&&0&&0];& && && && && && & % 参数下限
ub = [+inf&&+inf&&+inf];& && &% 参数上限
x0 = [1&&0&&0];& && && && && &&&%原料的起始浓度
yexp = [1&&0.4432&&0.3063&&0.2441&&0.1964&&0.1747&&0.1531&&0.1432&&0.1351&&0.1270&&0.0910&&0.0838&&0.0739&&0.0684]
tspan = [0&&3&&6&&9&&12&&15&&18&&21&&27&&33&&39&&45&&51&&60];
% 使用函数fmincon()进行参数估计
[k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp);
fprintf('\n使用函数fmincon()估计得到的参数值为:\n')
fprintf('\tk1 = %.4f\n',k(1))
fprintf('\tk2 = %.4f\n',k(2))
fprintf('\tk3 = %.4f\n',k(3))
fprintf('&&The sum of the squares is: %.1e\n\n',fval)
k_fmincon =& && && && &&&
% 使用函数lsqnonlin()进行参数估计
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
& & lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);& && &
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.4f ± %.4f\n',k(1),ci(1,2)-k(1))
fprintf('\tk2 = %.4f ± %.4f\n',k(2),ci(2,2)-k(2))
fprintf('\tk3 = %.4f ± %.4f\n',k(3),ci(3,2)-k(3))
fprintf('&&The sum of the squares is: %.1e\n\n',resnorm)
% 以函数fmincon()估计得到的结果为初值,使用函数lsqnonlin()进行参数估计
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
& & lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);& && &
ci = nlparci(k,residual,jacobian);
fprintf('\n\n以fmincon()的结果为初值,使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.4f ± %.4f\n',k(1),ci(1,2)-k(1))
fprintf('\tk2 = %.4f ± %.4f\n',k(2),ci(2,2)-k(2))
fprintf('\tk3 = %.4f ± %.4f\n',k(3),ci(3,2)-k(3))
fprintf('&&The sum of the squares is: %.1e\n\n',resnorm)
% 模型适定性判别& && &&&
Ne = length(tspan);
Np = length(k);
[rho2,F] = rho2_F(k,yexp,resnorm,Ne,Np);& &
fprintf('&&实验点数和自由度分别为Ne = %d和Np = %d\n',Ne,Np)
fprintf('&&决定性指标ρ^2: %.3f\n',rho2)
fprintf('&&F比: %.3f\n\n',F)
% 拟合效果图(实验与拟合的比较)& && && &&&
a = linspace(tspan(1),tspan(end),200);
[a b] = ode45(@KineticEqs,a,x0,[],k);
b1(:,1)=b(:,1);& && && && && && && && &&&
plot(tspan,yexp,'o',a,b1,'bo');& && && &
% 残差关于拟合值的残差图
a = linspace(tspan(1),tspan(end),14);& &
[a c] = ode45(@KineticEqs,a,x0,[],k);
c1(:,1)=c(:,1);
plot(residual,'*')
xlabel('拟合(单位未知)')
ylabel('残差R (单位未知)')
refline(0,0)& && && && && && && && && &
%--------------------------------------------------------------------
function f = ObjFunc4Fmincon(k,x0,yexp)
tspan = [0&&3&&6&&9&&12&&15&&18&&21&&27&&33&&39&&45&&51&&60];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);& &
y(:,1) = x(:,1);
f = sum((y(:,1)-yexp(:,1)).^2);
%--------------------------------------------------------------------
function f = ObjFunc4LNL(k,x0,yexp)
tspan = [0&&3&&6&&9&&12&&15&&18&&21&&27&&33&&39&&45&&51&&60];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);& &
y(:,1) = x(:,1);
f1 = y(:,1) - yexp(:,1);
% ------------------------------------------------------------------
function dxdt = KineticEqs(t,x,k)
dxdt =&&...
[( k(1)*x(2)-k(2)*x(1))
(k(2)*x(1)-k(1)*x(2)-2*k(3)*x(2)*x(2))
(k(3)*x(2)*x(2))
<h1 style="color:# 麦片财富积分
:'( 没人答复的说,自己顶
<h1 style="color:# 麦片财富积分
正好要做参数估计,学习一下~~
论坛优秀回答者
<h1 style="color:#7 麦片财富积分
关注者: 73
1: “(k(2)*x(1)-k(2)*x(2)-2*k(3)*x(2)*x(2))”似乎有误,应该是“(k(2)*x(1)-k(1)*x(2)-2*k(3)*x(2)*x(2))”吧?
2:这种问题Matlab处理的不是很好,试试1stOpt。
如果不加“x1+x2+2*x3=1 ”约束:
InitialODEValue t=0,x1=1,x2=0,x3=0;
Variable t,x1;
ODEFunction
x1'=k1*x2-k2*x1;
x2'=k2*x1-k1*x2-2*k3*x2*x2;
x3'=k3*x2*x2;
D
//0& & & & 1
3& & & & 0.4432
6& & & & 0.3063
9& & & & 0.2441
12& & & & 0.1964
15& & & & 0.1747
18& & & & 0.1531
21& & & & 0.1432
27& & & & 0.1351
33& & & & 0.1270
39& & & & 0.0910
45& & & & 0.0838
51& & & & 0.0739
60& & & & 0.0684
复制代码均方差(RMSE): 0.40273
残差平方和(SSE): 0.391144
相关系数(R): 0.201
相关系数之平方(R^2): 0.121
决定系数(DC): 0.45
F统计(F-Statistic): 773.
参数& && && & & & & & 最佳估算
--------------------& & & & -------------
k1& & & & 0.95
k2& & & & 0.907
k3& & & & 0.8304
如果加约束:
InitialODEValue t=0,x1=1,x2=0,x3=0;
SubjectTo x1[3]+x2[3]+x3[3]=1,x1[60]+x2[60]+x3[60]=1;
Variable t,x1;
ODEFunction
x1'=k1*x2-k2*x1;
x2'=k2*x1-k1*x2-2*k3*x2*x2;
x3'=k3*x2*x2;
D
//0& & & & 1
3& & & & 0.4432
6& & & & 0.3063
9& & & & 0.2441
12& & & & 0.1964
15& & & & 0.1747
18& & & & 0.1531
21& & & & 0.1432
27& & & & 0.1351
33& & & & 0.1270
39& & & & 0.0910
45& & & & 0.0838
51& & & & 0.0739
60& & & & 0.0684
复制代码参数& && && & & & & & 最佳估算
--------------------& & & & -------------
k1& & & & 0.643
k2& & & & 0.841
k3& & & & 5.77E-14
<h1 style="color:# 麦片财富积分
shihe 发表于
1: “(k(2)*x(1)-k(2)*x(2)-2*k(3)*x(2)*x(2))”似乎有误,应该是“(k(2)*x(1)-k(1)*x(2)-2*k(3)*x(2)*x(2 ...
多谢提醒,果然是错了。
1stOpt 不是很能理解,还是偏爱于matlab
<h1 style="color:# 麦片财富积分
shihe 发表于
1: “(k(2)*x(1)-k(2)*x(2)-2*k(3)*x(2)*x(2))”似乎有误,应该是“(k(2)*x(1)-k(1)*x(2)-2*k(3)*x(2)*x(2 ...
那什么,大神
你看我的数据再乘上个系数0.000015对k值有影响么?
论坛优秀回答者
<h1 style="color:#7 麦片财富积分
关注者: 73
当然有影响了。
<h1 style="color:# 麦片财富积分
1: “(k(2)*x(1)-k(2)*x(2)-2*k(3)*x(2)*x(2))”似乎有误,应该是“(k(2)*x(1)-k(1)*x(2)-2*k(3)*x(2)*x(2 ...
请问如何添加约束条件,谢谢!
<h1 style="color:# 麦片财富积分
我想请问一下楼主编写这样的动力学模型参数求解的程序需要学习哪些知识啊,感觉学的蒙蒙的,学完了数值计算方法还是蒙蒙的
站长推荐 /2
Powered by查看: 4068|回复: 8|关注: 0
如何拟合有约束条件下的非线性最小二乘问题?
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
如何拟合有约束非线性最小二乘问题?
ps:主要是求参数,并且参数是有限制条件的!!如拟合函数f(x)=a*exp(x)+blog(x),且a&0,b&0,a+b&1
论坛优秀回答者
<h1 style="color:#7 麦片财富积分
关注者: 73
有数据吗?放上来。
<h1 style="color:# 麦片财富积分
同问啊!谢谢!用这个数据x=[0.1:0.1:0.9,0.95];
y=[0.025, 0.1,0.3,0.1,0.5,0.8493];
<h1 style="color:# 麦片财富积分
本帖最后由 suizh2008 于
11:11 编辑
拟合的函数是 f=(1-(1-x).^a(1)).^a(2)*(1-(1-x).^a(3)).^a(4);约束条件是a(1)和a(3)大于0小于等于1,a(2)和a(4)大于等于0,且a(2)+a(4)大于等于1
<h1 style="color:# 麦片财富积分
suizh2008 发表于
拟合的函数是 f=(1-(1-x).^a(1)).^a(2)*(1-(1-x).^a(3)).^a(4);约束条件是a(1)和a(3)大于0小于等于1,a(2) ...
也在建模吧??你是上海哪个学校的??我是湖北的
<h1 style="color:# 麦片财富积分
拟合的函数是 f=(1-(1-x).^a(1)).^a(2)*(1-(1-x).^a(3)).^a(4);约束条件是a(1)和a(3)大于0小于等于1,a(2) ...
楼主问题解决了吗?我也遇到同样的问题,同问
<h1 style="color:# 麦片财富积分
关注者: 4
拟合的函数是 f=(1-(1-x).^a(1)).^a(2)*(1-(1-x).^a(3)).^a(4);约束条件是a(1)和a(3)大于0小于等于1,a(2) ...
我觉得,可以用求(含约束条件)最值的方法来解,即在给定参数的约束条件下,求所有y(i)-f(x(i))平方和的最小值(其中i=1, 2, ...),
针对Suizh2008提出的拟合问题,我试着算了一下:
a(1),a(2),a(3),a(4)分别取如下值时,y(i)-f(x(i))的平方和(i=1,...,10)取到最小值(平方和最小值=2.)
<h1 style="color:# 麦片财富积分
我觉得,可以用求(含约束条件)最值的方法来解,即在给定参数的约束条件下,求所有y(i)-f(x(i))平方和的 ...
楼主,你是用非线性规划fmincon来做的吗
<h1 style="color:# 麦片财富积分
关注者: 4
楼主,你是用非线性规划fmincon来做的吗
不是,是自编小程序(基于EXCEL内VBA语言)算的。
站长推荐 /2
Powered by

我要回帖

更多关于 口贷网app 的文章

 

随机推荐