四阶龙格库塔法 matlab ode45,求助:如何用四阶龙格库塔法ode45求取常微分方程的参数...

我是化工类的学生,做实验就会得到一些关于不同反应时间数据(xi, yi),但是无论是在客观上还是主观上都会产生误差ε=|y实验值-y真实值|。此时实验值即为做完实验后通过仪器分析得到的值;真实值即为通过数学模型得到的值。

现在我先给出我的数学模型:

dA/dt=-k1*A

dB/dt=-k1*A-k2*B

dC/dt=k2*B-k3*C

dD/dt=k1*A+k2*B+k3*C

实验数据如下:

t=[0 7 32 57 82 107 187 307 467 607];

x=[0.9919 0.0043 0.0029 0.0008;

0.9748 0.0105 0.0108 0.0039;

0.8088 0.1032 0.0143 0.0737;

0.2481 0.1258 0.0941 0.5103;

0.0771 0.1264 0.1310 0.6655;

0.0307 0.0931 0.1395 0.7367;

0.0000 0.0714 0.1155 0.8131;

0.0000 0.0599 0.0986 0.8415;

0.0000 0.0588 0.0914 0.8498;

0.0000 0.0506 0.0715 0.8798];

现在我们要求出模型里面的三个k值。

我通过查文献知道这里们要用到四阶龙格库塔法进行ode45函数法拟合,即求取同时满足[localimg=334,68]1[/localimg]时的k值。

由于我是matlab初学者,很多东西不懂!我自己写了一段代码:

function my

%依据实验数据散点进行求取动力学方程组的速率常数k1、k2、k3

clear all

clc

global k1 k2 k3

t=[0 7 32 57 82 107 187 307 467 607];

x=[0.9919 0.0043 0.0029 0.0008;

0.9748 0.0105 0.0108 0.0039;

0.8088 0.1032 0.0143 0.0737;

0.2481 0.1258 0.0941 0.5103;

0.0771 0.1264 0.1310 0.6655;

0.0307 0.0931 0.1395 0.7367;

0.0000 0.0714 0.1155 0.8131;

0.0000 0.0599 0.0986 0.8415;

0.0000 0.0588 0.0914 0.8498;

0.0000 0.0506 0.0715 0.8798];

plot(t,x(:,1),'r+',t,x(:,2),'C*',t,x(:,3),'md',t,x(:,4),'kh');

[T,X] = ode45(@myfun,[0 607],x(1,:))

%---------动力学微分方程组函数---------

function dxdt=myfun(t,x)

global k1 k2 k3

xtg = y(1);

xdg = y(2);

xmg = y(3);

xme = y(4);

dxtgdt = -k1*xtg;

dxdgdt = k1*xtg-k2*xdg;

dxmgdt = k2*xdg-k3*xmg;

dxmedt = k1*xtg+k2*xdg+k3xme;

dxdt = [dxtgdt;dxdgdt;dxmgdt;dxmedt];

就不知道怎么写写去了,哪位高手给指点一下迷津 在此谢过了!

马上要提交论文了,这个还没弄出来,唉!小弟在此谢过了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值