You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言deSolve包求解微分方程添加sin(t)项时报导数数量不匹配错误

错误原因
  • 变量名拼写错误:你自定义的微分方程函数第一个入参是表示时间的time,但方程中写的是sin(t)。R语言中t是内置的转置函数,你没有声明变量t的情况下直接调用,会导致运算逻辑完全错乱,最终返回的导数长度和初始条件长度不匹配。
  • 向量命名错误:定义参数向量params和初始状态向量initial_state时,在c()内部使用了赋值符<-而非=,导致向量元素没有对应名称,后续with(as.list())调用时无法识别A、X、Y这些变量。
修复方法
  1. 将方程中的sin(t)修改为sin(time),匹配函数入参的时间变量名
  2. 将params和initial_state定义时的<-替换为=,给向量元素正确命名
修正后可运行代码
library(deSolve)

delta_conc <- function(time, current_state, params) {
  with(as.list(c(current_state, params)),{
    dX <- Y
    dY <- X - X^3 - 0.25*Y + A * sin(time)
    return(list(c(dX, dY)))
  })
}

params <- c(
  A = 0.2645
)

initial_state <- c(
  X = 0.9,
  Y = 0.4
)

times <- 1:10
model <- ode(initial_state, times, delta_conc, params)

summary(model)
matplot(model, type="l",lty=1, main="Enzyme model", xlab="Time")

内容的提问来源于stack exchange,提问作者Barnabas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:54:03