Может ли язык R найти общее решение дифференциального уравнения первого порядка? - PullRequest
0 голосов
/ 08 мая 2018

Может ли язык R найти общее решение дифференциального уравнения первого порядка?

Например:

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

PS:
Это можно легко решить вручную, то есть конкретное решение:

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

и универсальный

C*(5x-6)

Мне нужно понять, может ли R это сделать?

1 Ответ

0 голосов
/ 08 мая 2018

Мы можем использовать библиотеку R deSolve для получения численных решений ОДУ. Подробнее см. ?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")
    

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...