24小时热门版块排行榜    

查看: 1486  |  回复: 10

njhx505

木虫 (正式写手)

[交流] 【求助】30金币求一程序 已有4人参与


请各位高手帮个忙,CA,CB是不同时间测得浓度值,求k1,k2

数据给出,希望高手可以帮忙,谢谢

[ Last edited by njhx505 on 2010-6-4 at 19:42 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


robert2020(金币+1):鼓励应助! 2010-06-04 22:30:45
引用回帖:
Originally posted by njhx505 at 2010-06-04 16:22:41:

请各位高手帮个忙,CA,CB是不同时间测得浓度值,求k1,k2

想明确一点
只有两个值?拟合 应该不可以 还是考虑数值积分吧

[ Last edited by lijinfeng042 on 2010-6-4 at 17:19 ]
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
2楼2010-06-04 17:03:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


robert2020(金币+1):鼓励应助! 2010-06-04 22:31:02
上数据

看微分方程式,dCA/dt=-2*dCB/dt

那么只需要知道CA0,CB0 以及 A或B随时间的变化数据就可以估值了

也就是说只需要估值一个微分方程就可以了

[ Last edited by change0618 on 2010-6-4 at 20:12 ]
3楼2010-06-04 17:31:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

zzuwangshilei:积极参与 2010-06-05 10:53:08
数据有的恶劣
4楼2010-06-04 20:28:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

njhx505

木虫 (正式写手)

希望高手们能把MATLAB运行程序给我,谢谢
5楼2010-06-04 20:39:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wudi_82

★ ★
zzuwangshilei(金币+2):辛苦了,多谢应助 2010-06-05 10:52:39
njhx505(金币+3):谢谢 2010-06-06 21:57:51
(2)式*2+(1)式得到   dCA(t)/dt+2*dCB(t)/dt=0;
在任意小区间[t0,t]积分得到:CA(t)+2*CB(t)=const ....(*)式
计算一下你表格中的数据,不满足是常数。至于怎么处理,或者重新采集数据或者像你提到的满足某种最优。
另外:
将(*)式代入到上面其中一个方程比如(1)得到:
dCA/dt=-k1*CA^2-k2*CA+const; 这个方程建议还是数值求解比较方便,比如向前欧拉,向后欧拉方法等等,要想得到高精度的就用Runge-Kutta。
6楼2010-06-05 03:24:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

njhx505

木虫 (正式写手)

不能编写一个程序来求解吗,这只是一小部分数据,要是直接手算计算量太大
7楼2010-06-05 12:50:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


zzuwangshilei(金币+1):多谢积极参与 2010-06-05 15:16:11
njhx505(金币+3): 2010-06-06 21:58:24
你给的CA数据有问题

按照你的微分方程式可以得到一下关系:

CA-CA0=-2*(CB-CB0)

所以我认为你的数据拟合只需要

t=0时的 CA0  CB0
以及一组CA值或者CB值就可以了。

当然CA,CB数据都有的话,可以验证你的数据的准确性

[ Last edited by change0618 on 2010-6-5 at 15:02 ]
8楼2010-06-05 14:58:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

njhx505

木虫 (正式写手)

CA0也是知道的,第一排就是CA0,CB0,希望能够帮忙编写个求解k1.k2的程序
9楼2010-06-05 16:38:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★
kuhailangyu(金币+2):欢迎积极参与 2010-06-05 22:36:53
njhx505(金币+24):谢谢你的程序,真是救了我的急 2010-06-06 21:59:25
引用回帖:
Originally posted by njhx505 at 2010-06-05 16:38:43:
CA0也是知道的,第一排就是CA0,CB0,希望能够帮忙编写个求解k1.k2的程序

给你一个程序,但是数据不是你的,自己修改去吧


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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 njhx505 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 基金啊基金 +3 longfie172 2026-08-20 3/150 2026-08-21 00:04 by wuchongjun
[基金申请] 科研孤儿太难了 +14 我4大白菜 2026-08-20 15/750 2026-08-20 22:33 by 袁向阳007
[基金申请] 言之凿凿,明天官网会通知放榜? +15 医学老男孩 2026-08-20 17/850 2026-08-20 20:35 by CaoLG
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 只有每年这种时候来逛逛小木虫 +21 yaoyewhu2008 2026-08-20 22/1100 2026-08-20 17:03 by yaoyewhu2008
[基金申请] 放榜前的不淡定 40+3 snowwithsea 2026-08-19 12/600 2026-08-20 15:56 by lfy8008
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 今天基金会出结果吗?20260819 +14 kkkl_v 2026-08-19 15/750 2026-08-20 08:21 by sunzitan
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 今天放榜没戏了吧 +4 yuleib84 2026-08-19 5/250 2026-08-19 19:52 by hhs666
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] filecode=后面第一个是大写字母 +10 wangze12014 2026-08-14 12/600 2026-08-19 16:56 by 苦难博士
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
信息提示
请填处理意见