R语言可以找到一阶微分方程的通用解吗?

Ale*_*vov 3 r differential-equations

R语言可以找到一阶微分方程的通用解吗?

例如:

(5x-6)^2 y' = 5(5x-6) y - 2 
Run Code Online (Sandbox Code Playgroud)

PS:
可以很容易地手动解决,即特定的解决方案是:

y = 1/(5(5x-6))
Run Code Online (Sandbox Code Playgroud)

和通用

C*(5x-6)
Run Code Online (Sandbox Code Playgroud)

我需要了解R是否可以做到?

Mau*_*ers 6

我们可以使用R库deSolve获得ODE的数值解。有关?deSolve详细信息,请参见。

这是一个基于您的ODE的精通示例。

  1. 加载R库

    library(deSolve);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 定义微分方程

    # Define the function
    f <- function(x, y, params) list((5 * (5 * x - 6) * y - 2) / (5 * x - 6)^2)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置x要求解的值和初始条件

    # x values for which to solve
    x <- seq(2, 10, length.out = 100);
    
    # Initial value y(x=2) = 1/20
    y0 <- 1/20
    
    Run Code Online (Sandbox Code Playgroud)
  4. 解决ODE

    # Solve ODE
    df <- as.data.frame(ode(y0, x, f, parms = NULL));
    
    Run Code Online (Sandbox Code Playgroud)
  5. 画出理论(代数)解和数值解 deSolve

    # Plot
    library(ggplot2);
    ggplot(df, aes(time, `1`)) +
        stat_function(
            fun = function(x) 1/(5 * (5 * x - 6)),
            aes(colour = "Theoretical"),
            size = 4) +
        geom_line(aes(colour = "deSolve"), size = 2) +
        labs(x = "x", y = "y")
    
    Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • @AlexanderChervov重要的是要了解,(基)R不是CAS(如Mathematica或Maple)。我不知道R的任何符号ODE求解器,但也许有人会纠正我。因此,没有(容易)获得符号解。确实有一些R包,例如“ Ryacas”,在某种程度上提供了符号数学功能。我没有他们的经验,坦率地说,我认为您最好使用Mathematica(或类似工具)。R的丰富优势在其他地方。 (2认同)