24小时热门版块排行榜    

查看: 1629  |  回复: 5

快乐的小尼玛

新虫 (初入文坛)

[求助] 求助常微分方程组的参数优化问题,有没有师兄可以用1stopt帮忙试试? 已有1人参与

师兄师姐们好!

  我最近遇到一个常微分方程组的参数优化问题。方程如下:
dT <- -beta*T*V-h*F*T+rho*R
dI <- beta*T*V -delta*I-k*I*F
dR <- h*F*T-rho*R
dV <- p*I-c*V
dF <- q*I-d*F
其中:
delta = 2*exp(de*(t-7))
beta,p,c,k,h,rho,q,d,de是待优化参数
初值:
T = 2e7
I = 0
R = 0
V = 3
F = 1
需要拟合F和V的实验值:
t        V        F
1        3.5        1.63
2        4.5        2.67
3        5.5        5.35
4        6.5        1.09
5        4.5        1.32
6        1.5        0
7        1.5        0
8        0        0
我尝试用r的minpack.lm包求解,但是试了两万多组初始值,始终达不到好的效果。
目前拟合最好的一组参数如下:
beta =1.7e-07
p = 40
c = 17
k = 0.85
h = 0.2
rho = 1e-07
q = 3e-06
d = 0.74501237318802
de = 1
图在附件:

本人数学功底一般,刚接触这方面话题,有什么说的不清楚的地方请大家指出,我再补充。
平时潜水较多,只有10个金币啦,希望各位师兄师姐帮忙!谢谢!
下面是我的r代码,我有说不清的大家可以看代码(解ode并画图的,不是优化的)。
#Function
my_ode <- function(V_input,F_input,beta = beta,
        de = de,
        p = p,
        c = c,
        k = k,
        h = h,
        rho = rho,
        q = q,
        d = d,
        miu = miu,
        state)
{

        library(deSolve)
        library(minpack.lm)
        library(rlist)

        parameters <- c(beta = beta,
        de = de,
        p = p,
        c = c,
        k = k,
        h = h,
        rho = rho,
        q = q,
        d = d,
        miu=miu)
        Target<-function(t, state, parameters) {
        with(as.list(c(state, parameters)),{
                        delta = 2*exp(de*(t-miu))
                        dT <- -beta*T*V-h*F*T+rho*R
                        dI <- beta*T*V -delta*I-k*I*F
                        dR <- h*F*T-rho*R
                        dV <- p*I-c*V
                        dF <- q*I-d*F
                        list(c(dT, dI, dR, dV, dF))
                })
        }
        times <- seq(0,8,by = 0.01)
        out=ode(y=state,times=times,func=Target,parms=parameters)
        residue = c(log10(out[100,5])-3.5,log10(out[200,5])-4.5,log10(out[300,5])-5.5,log10(out[400,5])-6.5,log10(out[500,5])-4.5,log10(out[600,5])-1.5,log10(out[700,5])-1.5,out[100, 6]-1.64,out[200,6]-2.676,out[300,6]-5.35,out[400,6]-1.09,out[500,6]-1.33)
        residue = sqrt(sum(residue[1:7]^2)/7 + sum(residue[8:12]^2)/5)

        V_curve = log10(out[,5])
        F_curve = out[,6]



        SOUTH<-1; WEST<-2; NORTH<-3; EAST<-4;
         
        GenericFigure <- function(ID, size1, size2, point, line)
        {
          plot(0:8, 0:8, type="n", xlab="X", ylab="Y"
          lines(times,line, col = 2, cex = 2)
          points(point,col=3, pch = 15)
          #text(5,5, ID, col="red", cex=size1)
          box("plot", col="red"
          #mtext(paste("cex",size2,sep="", SOUTH, line=3, adj=1.0, cex=size2, col="blue"
          title(paste("Figure",ID,"(",residue,"",sep=" ")
        }
         
        MultipleFigures <- function()
        {
          GenericFigure("V", 3, 1, V_input, V_curve)
          box("figure", lty="dotted", col="blue"
         
          GenericFigure("F", 3, 1, F_input, F_curve)
          box("figure", lty="dotted", col="blue"
        }
        par(mfrow=c(1,2))
         
        MultipleFigures()
}
#Experimental data

#Initial values
state <- c(T = 2e7,
        I = 0,
        R = 0,
        V = 3,
        F = 1)
#Parameters

leiode<- function(beta,p,c,k,h,rho,q,d,de,miu)
{
        my_ode(V_input,F_input,
        beta = beta,
        de = de,
        p = p,
        c = c,
        k = k,
        h = h,
        rho = rho,
        q = q,
        d = d,
        miu = miu,
        state)
}

#1
V_input = c(3.5,4.5,5.5,6.5,4.5,1.5,1.5,0,0,0)
F_input = c(1.63,2.67,5.35,1.09,1.32)

leiode(1.7e-07, 40, 17, 0.85, 0.2, 1e-07, 3e-06, 0.74501237318802,1,7)

求助常微分方程组的参数优化问题,有没有师兄可以用1stopt帮忙试试?
rplot.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
快乐的小尼玛: 金币+10, ★★★★★最佳答案, 非常感谢! 2016-02-26 22:30:05
1stOpt求这种微分方程拟合问题代码要简单的多,效果也好。
CODE:
ConstStr delta = 2*exp(de*(tt-7));
InitialODEValue tt=0,T = 2e7,I = 0,R = 0,V = 3,F = 1;
Variable tt,V,F;
ODEFunction T' = -beta1*T*V-h*F*T+rho*R;
            I' = beta1*T*V -delta*I-k*I*F;
            R' = h*F*T-rho*R;
            V' = p*I-c*V;
            F' = q*I-d*F;
Data;
tt        V        F
1        3.5        1.63
2        4.5        2.67
3        5.5        5.35
4        6.5        1.09
5        4.5        1.32
6        1.5        0
7        1.5        0
8        0        0

均方差(RMSE):0.85269322610406
残差平方和(SSE):11.6333718055
相关系数(R): 0.877968714324806
相关系数之平方(R^2): 0.770829063333154
修正R平方(Adj. R^2): 0.60992322741393
确定系数(DC): 0.771292669112812
F统计(F-Statistic): -1.4490058555454

参数                  最佳估算
--------------------        -------------
beta1        -6.71463644100751E-8
h        -7.08544427462871
rho        23.3711437688932
de        -0.897079268067582
k        -5.49659440033554
p        0.354150320382865
c        -0.265869901817656
q        0.225238201093483
d        -0.399871335562109
求助常微分方程组的参数优化问题,有没有师兄可以用1stopt帮忙试试?-1
c1.jpg


求助常微分方程组的参数优化问题,有没有师兄可以用1stopt帮忙试试?-2
c2.jpg

2楼2016-02-26 16:12:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

快乐的小尼玛

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2016-02-26 16:12:27
1stOpt求这种微分方程拟合问题代码要简单的多,效果也好。

ConstStr delta = 2*exp(de*(tt-7));
InitialODEValue tt=0,T = 2e7,I = 0,R = 0,V = 3,F = 1;
Variable tt,V,F;
ODEFunction T' = -beta1*T*V-h*F* ...

谢谢师兄!
3楼2016-02-26 22:31:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

快乐的小尼玛

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2016-02-26 16:12:27
1stOpt求这种微分方程拟合问题代码要简单的多,效果也好。

ConstStr delta = 2*exp(de*(tt-7));
InitialODEValue tt=0,T = 2e7,I = 0,R = 0,V = 3,F = 1;
Variable tt,V,F;
ODEFunction T' = -beta1*T*V-h*F* ...

师兄抱歉,我发帖时候遗漏了对v的描述。
v的实际值我写错了,应该是:
tt        V        F
1        1e3.5        1.63
2        1e4.5        2.67
3        1e5.5        5.35
4        1e6.5        1.09
5        1e4.5        1.32
6        1e1.5        0
7        1e1.5        0
8        0        0
其中v的初始值也是不确定的,我随便选了个3.
我画线时候把v取了10的对数。抱歉师兄,麻烦您能帮我再试试吗?
4楼2016-02-26 23:38:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

1e3.5
这是什么数值表示法?是指10^3.5?
5楼2016-03-02 17:15:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

快乐的小尼玛

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by dingd at 2016-03-02 17:15:43
1e3.5
这是什么数值表示法?是指10^3.5?

是的师兄,平时用r比较多,r里面是这么表示的
6楼2016-03-02 22:45:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 学员TjbCZU 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-09-02 00:19 by xiangy672
[基金申请] 为什么国自然不能直接公布 +5 bjdxyxy 2026-08-26 5/250 2026-09-01 17:54 by 小伟大博士
[文学芳草园] 梦想 +5 myrtle 2026-08-26 7/350 2026-09-01 15:18 by myrtle
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 怎么看青基中了没有啊 +6 叶九微 2026-08-26 6/300 2026-08-31 23:54 by yudaoqian88
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
信息提示
请填处理意见