| 查看: 1069 | 回复: 10 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
njhx505木虫 (正式写手)
|
[交流]
【求助】30金币求一程序已有4人参与
|
||
» 本主题相关价值贴推荐,对您同样有帮助:
30金币求助:最长路径问题,要求遍历每个节点,总路径最长
已经有7人回复
求高人指点用matlab求解非线性方程组,解决了追加100金币;
已经有11人回复
【求助】50金币求大家帮忙改一段程序
已经有13人回复
【求助】VS2005数值计算程序调试【急求!!!!加金币】
已经有9人回复
【求助】100金币求助高人一个程序解方程
已经有15人回复
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
★ ★
kuhailangyu(金币+2):欢迎积极参与 2010-06-05 22:36:53
njhx505(金币+24):谢谢你的程序,真是救了我的急 2010-06-06 21:59:25
kuhailangyu(金币+2):欢迎积极参与 2010-06-05 22:36:53
njhx505(金币+24):谢谢你的程序,真是救了我的急 2010-06-06 21:59:25
|
给你一个程序,但是数据不是你的,自己修改去吧 function Kinetics % 动力学ODE方程模型的参数估计 clear all clc ExpData = ... [ 0 0.1883 0.0100 0.2047 0.0200 0.2181 0.0300 0.2291 0.0400 0.2382 0.0500 0.2459 0.0600 0.2523 0.0700 0.2576 0.0800 0.2622 0.0900 0.2660 0.1000 0.2692 0.1100 0.2719 0.1200 0.2742 0.1300 0.2761 0.1400 0.2777 0.1500 0.2790 0.1600 0.2801 0.1700 0.2811 0.1800 0.2819 0.1900 0.2825 0.2000 0.2830 ]; t = ExpData(:,1); % ExpData第一列为时间 CB = ExpData(:,2); % ExpData第二列为组分B的浓度 CB0 = CB(1); % t=0时,组分B初始浓度 CA0 = 0.8; % t=0时,组分A初始浓度 CA = CA0-2*(ExpData(:,2)-CB0); % 由微分方程式导出来的CA与CB关系式 k0 = [20 50]; % 估值参数的猜想值 lb = [0 0]; % 设定的估值参数上限 ub = [+inf +inf]; % 设定的估值参数下限 [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc,k0,lb,ub,[],t,[CA0,CB0],[CA,CB]); ci = nlparci(k,residual,jacobian); % 计算置信区间 fprintf('\n\n估计参数值为:\n') fprintf('\tk1 = %.6f\t置信区间:[%.6f %.6f]\n',k(1),ci(1,: )) fprintf('\tk2 = %.6f\t置信区间:[%.6f %.6f]\n',k(2),ci(2,: )) tt = linspace(t(1),t(end),101); [tt C] = ode45(@KineticEqs,tt,[CA0,CB0],[],k); % 由估值k计算时间序列tt下的A,B浓度 figure(1) plot(t,CA,'o',tt,C(:,1),'r-') xlabel('t'); ylabel('C_A') figure(2) plot(t,CB,'o',tt,C(:,2),'r-') xlabel('t'); ylabel('C_B') % ------------------------------------------------------------------ function f = ObjFunc(k,tspan,x0,yexp) [t,y] = ode45(@KineticEqs,tspan,x0,[],k); f = y(: ) - yexp(: ); % ------------------------------------------------------------------ function dxdt = KineticEqs(t,x,k) dxdt =[-k(1)*x(1)^2+2*k(2)*x(2); 0.5*k(1)*x(1)^2-k(2)*x(2)]; [ Last edited by change0618 on 2010-6-5 at 18:23 ] |
10楼2010-06-05 18:15:24
lijinfeng042
木虫 (小有名气)
Matlab
- 仿真EPI: 2
- 应助: 1 (幼儿园)
- 金币: 2156.1
- 散金: 115
- 帖子: 291
- 在线: 31.5小时
- 虫号: 1019062
- 注册: 2010-05-15
- 性别: GG
- 专业: 通信理论与系统

2楼2010-06-04 17:03:55
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
3楼2010-06-04 17:31:59
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
4楼2010-06-04 20:28:04















回复此楼
数据有的恶劣