24小时热门版块排行榜    

查看: 952  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

uklaoli

新虫 (初入文坛)

[求助] Matlab 动力学方程拟合的很差,郁闷,大侠们帮助一下。先谢了

我把程序和拟合的结果放在文件了。新手求助
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 求助.pdf
  • 2013-06-13 20:20:42, 143.12 K

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

uklaoli

新虫 (初入文坛)

4楼2013-06-14 18:52:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

uklaoli

新虫 (初入文坛)

程序是这样的
function myparafit
clear all
clc
warning off
close all
k0 = [0.0000000005  0.0000000005  0.0000000005];         % initial value
lb = [0 0 0 0];                   % ????
ub = [1 1 1 1];    % ????
x0 = [100 0  0  0 25];
yexp=[0   100   0   0      0
      20  74.1  5   3.1    17.8
      40  41.4  5   12.3   41.3
      60  7.2   7.5 20.9   64.4
      90  2.9   15  20.4   62];
%
[k,fval,flag] = fmincon(@ObjFunc7Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp);
k_fm= k;
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp);      
ci = nlparci(k,residual,jacobian);
k_ls = k;

k0 = k_fm;
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp);      
ci = nlparci(k,residual,jacobian);
k_fmls = k;


tspan=[0 20 40 60 90];

[t x] = ode45(@KineticEqs,tspan,x0,[],k_fmls);
figure;
plot(t,x(:,1),'*-',t,yexp(:,2),'o-');
figure;
plot(t,x(:,2:4),'*-');
hold on
plot(t,yexp(:,3:5),'o:');
figure
hold on
k_fmls;
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f = ObjFunc7Fmincon(k,x0,yexp)
tspan=[0 20 40 60 90];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,2:5) = x(:,1:4);
f =sum((y(:,2)-yexp(:,1)).^2)+sum((y(:,3)-yexp(:,2)).^2)+sum((y(:,4)-yexp(:,3)).^2)+sum((y(:,5)-yexp(:,4)).^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f = ObjFunc7LNL(k,x0,yexp)
tspan=[0 20 40 60 90];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,2) = x(:,1);
y(:,3) = x(:,2);
y(:,4) = x(:,3);
y(:,5) = x(:,4);
f1 = y(:,2) - yexp(:,2);
f2 = y(:,3) - yexp(:,3);
f3 = y(:,4) - yexp(:,4);
f4 = y(:,5) - yexp(:,5);
f = [f1; f2; f3; f4];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dxdt = KineticEqs(t,x,k)
% global Alpha k_d
W=25;
m0=100;
k_d=0.01;
P=x(1);
G=x(2);
L=x(3);
W=x(4);
Alpha=x(5);
dxdt1=-(k(1)+k(2)+k(3))*P.*Alpha;
dxdt2=k(1)*P.*Alpha;
dxdt3=k(2)*P.*Alpha;
dxdt4=k(3)*P.*Alpha;
dxdt5=-k_d*exp(-k_d*x(3)*(100/25));
dxdt=[dxdt1;dxdt2;dxdt3;dxdt4;dxdt5];
2楼2013-06-13 23:17:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

uklaoli

新虫 (初入文坛)

请各位高人看一下了,谢谢
3楼2013-06-14 16:11:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
5楼2013-06-14 19:28:10
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页
信息提示
请填处理意见