如何在 R 中绘制没有解析解的方程?

How to plot an equation with no analytical solution in R?

我一直在尝试在 R 中绘制方程。变量固定在(对于本例)a=0.06b=-0.01i=0t=0.005r=0.0025s=0.015 而我打算改变变量 e。主要方程中的一些函数是,

等式看起来像这样,

理想情况下,随着 e 的增加,我希望在 Qx 之间绘制一个图。

t = 0.0005
A = 0.06
B = -0.01
r = 0.00025
s = 0.015
i=0


M= function(e) e*A - i*B
N= function(e) t/(1+t*e-t*i)
P= function(e) (s/t)*(1+N(e)*(r+t))

我不知道如何进行。我想创建一个 (e, Q, x) 列表,其中 x 是给定 e 的方程的根,然后可能使用插值然后在 R 中绘制 (Q, x)。

有没有更直接的方法来绘制 x 与 Q 的关系图?如果没有,我还能尝试什么?另外,如果使用 Mathematica 或 MATLAB 更容易,我很想知道。

t <- 0.0005
A <- 0.06
B <- -0.01
r <- 0.00025
s <- 0.015
i<-0

Q <- function(e){
  N <-  t/(1+t*e-t*i)
  M <- e*A - i*B
  P <- (s/t)*(1+N*(r+t))
  M/P
}


RHS <- function(x, e){
  N <-  t/(1+t*e-t*i)
  M <- e*A - i*B
  P <- (s/t)*(1+N*(r+t))
  Q <- M/P
  V <- exp(-(r+2*N)/x/r/N)
  exp(-1/(x*N)) +  V* (0.5-Q) + Q*V^2
}

LHS <- function(e){
  1 - Q(e)
}


x <- function(e){
  suppressWarnings(sapply(e, \(u)
         optimise(\(x) (RHS(x,u) - LHS(u))^2, 
                  c(-100000, 100000))$min))
}


# assume 
e <- 0.1
LHS(e)
RHS(x(e), e)


#plot:

e <- seq(0, 1000)
plot(x(e), Q(e), ty='l')