24小时热门版块排行榜    

查看: 1318  |  回复: 4

ankcean96

金虫 (小有名气)

[求助] 用matlab求动力学参数 如何估计y的初始值

在大神指点下 带着满满的诚意 重新发贴:victory::victory::victory:
matlab 求解动力学常微分方程组  6个参数,初值和有物理学意义的区间如下:  
k0 = [0.5575  0.0072  1  0.5136  0.01 0.2251];         % 参数初值
lb = [0.0001 0.0001 0.0001 0.1 0.01 0.1];                   % 参数下限
ub = [50 1 1 1 1 1];    % 参数上限
常微分方程有五个,初始值如下: 
x0 = [1.4*10^8 2.043*10^4 1.8001*10^3 1212 0];    %y初值
按照下面写好的程序(y2初始值为2.043*10^4,y3初始值为1.8001*10^3),结果拟合的很好,但是实际上,y2和y3初始值是未知的。我只知道y2范围[1.8*10^4 ,1.4*10^7],y3范围[1.8*10^3,1.8*10^5],那么程序要怎么修改呢?

------------------------------------------
format long
clear all
clc
lb = [0.0001 0.0001 0.0001 0.1 0.01 0.1];                   % 参数下限
ub = [50 1 1 1 1 1];    % 参数上限
k0 = [0.5575  0.0072  1  0.5136  0.01 0.2251];         % 参数初值

x0 = [1.4*10^8 2.043*10^4 1.8001*10^3 1212 0];    %y初值
ExpData=[
31 3756.7 3217.9
59 2386.2 1060.9
90 7775.6 3470.9
120 24860.9 9981.9
151 35434.7 23046.0
181 34310 30359.4
212 26126.3 25344.2
243 11909.6 13215.4
273 10165.4 12080.2
304 8761.2 12249.1
334 7959.1 15276.8
365 6087.9 12667.9
];
t0=ExpData(:,1);   
yexp =10* ExpData(:,2);  % yexp: CDC数据

% 使用函数fmincon()进行参数估计
[k,fval,flag] = fmincon(@MSS,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('\tk4 = %.4f\n',k(4))
fprintf('\tk5 = %.4f\n',k(5))
fprintf('\tk6 = %.4f\n',k(6))
fprintf('  The sum of the squares is: %.1e\n\n',fval)
k_fmincon = k;

%% =======绘图显示结果=======
tspan=[0:365];
[t x] = ode45(@li,tspan,x0,[],k);
yy(:,1) = x(:,4);
tt1=[sum(yy (1:31,:),1)  
sum(yy (32:59,:),1)
sum(yy (60:90,:),1)
sum(yy (91:120,:),1)
sum(yy (121:151,:),1)
sum(yy (152:181,:),1)
sum(yy (182:212,:),1)
sum(yy (213:243,:),1)
sum(yy (244:273,:),1)
sum(yy (274:304,:),1)
sum(yy (305:334,:),1)
sum(yy (335:365,:),1) ]

plot(t0, yexp(:,1),'r.-')
hold on
plot(t0, tt1 (:,1),'bo-')
legend('y0', ' y1')
xlabel('t ')
ylabel('num')

function f = MSS(k,x0,yexp)           % fmincon优化
tspan=[0:365];
[t x] = ode45(@li,tspan,x0,[],k);
yy(:,1) = x(:,4);
tt1=[sum(yy (1:31,:),1)   
sum(yy (32:59,:),1)
sum(yy (60:90,:),1)
sum(yy (91:120,:),1)
sum(yy (121:151,:),1)
sum(yy (152:181,:),1)
sum(yy (182:212,:),1)
sum(yy (213:243,:),1)
sum(yy (244:273,:),1)
sum(yy (274:304,:),1)
sum(yy (305:334,:),1)
sum(yy (335:365,:),1) ];
f = sum((log2(1+ yexp(:,1))-log2(1+ tt1(:,1))).^2);



%微分方程组
function dydt=li(t,y,k)
u=3.9139*10^-5;
dydt=[(u*(y(1)+y(2)+y(3)+y(4)+y(5))-k(1)*(y(3)+y(4))*y(1)/(y(1)+y(2)+y(3)+y(4)+y(5))+k(2)*y(5)-u*y(1))
    (k(1)*(y(3)+y(4))*y(1)/(y(1)+y(2)+y(3)+y(4)+y(5))-k(3)*y(2)-u*y(2))
    (k(3)*(1-k(5))*y(2)-k(4)*y(3)-u*y(3))
    (k(3)*k(5)*y(2)-k(6)*y(4)-u*y(4))
    (k(4)*y(3)+k(6)*y(4)-k(2)*y(5)-u*y(5))];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

matlab初始值需要自己多次去尝试,或者先用一两组数据计算出一个初始值

发自小木虫Android客户端
数值计算
2楼2018-05-11 09:35:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ankcean96

金虫 (小有名气)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2018-05-11 09:35:55
matlab初始值需要自己多次去尝试,或者先用一两组数据计算出一个初始值

谢谢您 我现在初始值是用原文中估计出来的  结果拟合的很好  现在问题是 程序是我自己模仿小木虫上找到的程序写的 我不知道怎么把它改成可以估计y2和y3的形式?
3楼2018-05-11 12:06:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

初始值只能试,或者预先根据数据计算。当然,可以用不依赖初始值的1stOpt计算

发自小木虫Android客户端
数值计算
4楼2018-05-11 15:41:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ankcean96

金虫 (小有名气)

自己顶一下有用吗
5楼2018-05-18 13:56:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ankcean96 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 301求调剂 +5 yy要上岸呀 2026-03-17 5/250 2026-03-17 20:20 by peike
[考研] 材料与化工求调剂 +6 为学666 2026-03-16 6/300 2026-03-17 20:15 by peike
[考研] 326求调剂 +5 上岸的小葡 2026-03-15 6/300 2026-03-17 17:26 by ruiyingmiao
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
[考研] 085601材料工程专硕求调剂 +4 慕寒mio 2026-03-16 4/200 2026-03-17 17:17 by ruiyingmiao
[考研] 332求调剂 +6 Zz版 2026-03-13 6/300 2026-03-17 17:03 by ruiyingmiao
[考研] 一志愿南京大学,080500材料科学与工程,调剂 +4 Jy? 2026-03-16 4/200 2026-03-17 11:02 by gaoqiong
[考研] 283求调剂 +3 听风就是雨; 2026-03-16 3/150 2026-03-17 07:41 by 热情沙漠
[考研] 机械专硕325,寻找调剂院校 +3 y9999 2026-03-15 5/250 2026-03-16 19:58 by y9999
[考研] 环境工程调剂 +6 大可digkids 2026-03-16 6/300 2026-03-16 17:16 by barlinike
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +5 Liwangman 2026-03-15 5/250 2026-03-16 17:10 by 我的船我的海
[考研] 22408总分284求调剂 +3 InAspic 2026-03-13 3/150 2026-03-15 11:10 by zhq0425
[考研] 308 085701 四六级已过求调剂 +7 温乔乔乔乔 2026-03-12 14/700 2026-03-14 10:49 by JourneyLucky
[考研] 337一志愿华南理工0805材料求调剂 +7 mysdl 2026-03-11 9/450 2026-03-13 22:43 by JourneyLucky
[考研] 求材料调剂 085600英一数二总分302 前三科235 精通机器学习 一志愿哈工大 +4 林yaxin 2026-03-12 4/200 2026-03-13 22:04 by 星空星月
[考研] 0703化学一志愿211 总分320求调剂 +5 玛卡巴卡啊哈 2026-03-11 5/250 2026-03-13 21:40 by JourneyLucky
[考研] 工科,求调剂 +3 我887 2026-03-11 3/150 2026-03-13 21:39 by JourneyLucky
[考研] 329求调剂 +3 miaodesi 2026-03-12 4/200 2026-03-13 20:53 by 18595523086
[考研] 求调剂 +3 程雨杭 2026-03-12 3/150 2026-03-13 15:06 by JourneyLucky
[考研] 277求调剂 +4 anchor17 2026-03-12 4/200 2026-03-13 11:15 by 白夜悠长
信息提示
请填处理意见