基于bvpSolve的R(边值)耦合非线性常微分方程

基于bvpSolve的R(边值)耦合非线性常微分方程,r,numerical-methods,differential-equations,boundary,R,Numerical Methods,Differential Equations,Boundary,我试图解决以下使用R,我需要帮助,因为我不熟悉的软件包。我试图效仿这本书第211页的例子,但我没有运气 这是我的密码 library(bvpSolve) couple_ode <- function(theta, Y, delta){ with(as.list(Y), { ds <- ((sin(2*omega) + sin(delta)/tan(theta)*cos(2*omega) - sin(delta/tan(theta) - sin(delta)*sin(2

我试图解决以下使用R,我需要帮助,因为我不熟悉的软件包。我试图效仿这本书第211页的例子,但我没有运气

这是我的密码

library(bvpSolve)

couple_ode <- function(theta, Y,  delta){

  with(as.list(Y), {

  ds <- ((sin(2*omega) + sin(delta)/tan(theta)*cos(2*omega) - sin(delta/tan(theta) - sin(delta)*sin(2*omega))) * s +  (cos(2*omega)*sin(theta) + sin(2*omega)*cos(theta))) / (cos(2*omega) + sin(delta))

  domega <- 0.5* ((cos(delta)^2 - sin(delta)* (sin(2*omega)/tan(theta)+cos(2*omega)+1)*(sin(delta)+1)) * s + (cos(2*omega)*cos(theta)-sin(2*omega)*sin(theta))*sin(delta)+cos(theta)) / (s*sin(delta)*(cos(2*omega)+sin(delta)))  - 1

  return(list(c(ds, domega)))
  })
}

thetas <- seq(from = 0.001, to = pi/4, by = 0.01)
phi_w <- 35/180*pi
delta <- 43/180*pi
y_ini <- c(s = NA, omega = 0)
y_end <- c(s = NA, omega = 0.5*(phi_w+asin(sin(phi_w)/sin(delta))))

Sol <- bvptwp(x = thetas, func = couple_ode, order = c(1,1), par = delta, yini = y_ini, yend = y_end)
我不确定我得到的错误是一个数字障碍还是我的代码是错误的。我想我应该给出一些猜测值,但不知道如何给出

更新至原帖子:
方程中有一个1/tantheta项,边界值从θ=0开始,因此存在误差是很自然的。但即使将其更改为0.001。我仍然有同样的问题。

请查看本文第3.1节,该节使用了相同的功能,并给出了相同的错误:感谢您的指导。看来我不得不用:用延拓法解一个边值问题。但是我怎样才能得到一个更简单的解,并把它作为延拓法的初始猜测呢?
NaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedNaNs producedError in bvpsolver(1, yini, x, func, yend, parms, order, ynames, xguess,  : 
  The Expected No. Of mesh points Exceeds Storage Specifications.