首页 > 解决方案 > R语言能找到一阶微分方程的通解吗?

问题描述

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

例如:

(5x-6)^2 y' = 5(5x-6) y - 2 

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

y = 1/(5(5x-6))

和通用的

C*(5x-6)

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

标签: rdifferential-equations

解决方案


我们可以使用 R 库deSolve来获得 ODE 的数值解。详情请参阅?deSolve

这是一个基于您的 ODE 的完整示例。

  1. 加载 R 库

    library(deSolve);
    
  2. 定义微分方程

    # Define the function
    f <- function(x, y, params) list((5 * (5 * x - 6) * y - 2) / (5 * x - 6)^2)
    
  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
    
  4. 求解 ODE

    # Solve ODE
    df <- as.data.frame(ode(y0, x, f, parms = NULL));
    
  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")
    

在此处输入图像描述


推荐阅读