24小时热门版块排行榜    

查看: 1616  |  回复: 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

铁杆木虫 (职业作家)

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

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +7 ASdOkHsho7FD 2026-08-28 10/500 2026-08-30 00:41 by ZPa0EcMwuECS
[基金申请] 中青基了要发朋友圈吗? +4 349506619 2026-08-28 4/200 2026-08-29 22:41 by alongwaytogo
[基金申请] 国社科申报系统有变化 +3 kynobel 2026-08-23 3/150 2026-08-29 21:57 by 余韵清
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-29 21:44 by 4qO8zhfjr2AX
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-29 21:33 by 4qO8zhfjr2AX
[论文投稿] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 gy1nBQXYQJqL 2026-08-29 3/150 2026-08-29 18:26 by 4FFAWE8HcgUD
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 ASdOkHsho7FD 2026-08-28 4/200 2026-08-29 14:02 by jCd0dEvKHShX
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 ASdOkHsho7FD 2026-08-28 6/300 2026-08-29 11:40 by jCd0dEvKHShX
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 ASdOkHsho7FD 2026-08-28 6/300 2026-08-29 11:29 by jCd0dEvKHShX
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 9/450 2026-08-29 09:59 by jklily
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 ASdOkHsho7FD 2026-08-28 7/350 2026-08-29 09:26 by G6APbkg8SA6w
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 国合里面能看到了 +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
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
信息提示
请填处理意见