R语言能找到一阶微分方程的通解吗?
Can R language find a generic solution of the first order differential equation?
R语言能找到一阶微分方程的泛解吗?
例如:
(5x-6)^2 y' = 5(5x-6) y - 2
PS:
那可以很容易地手工解决,即具体解决方案是:
y = 1/(5(5x-6))
和通用
C*(5x-6)
我想了解一下R能不能做到?
我们可以使用 R 库 deSolve
来获得 ODE 的数值解。有关详细信息,请参阅 ?deSolve
。
这是一个基于您的 ODE 的演练示例。
加载 R 库
library(deSolve);
定义微分方程
# Define the function
f <- function(x, y, params) list((5 * (5 * x - 6) * y - 2) / (5 * x - 6)^2)
设置 x
要求解的值和初始条件
# x values for which to solve
x <- seq(2, 10, length.out = 100);
# Initial value y(x=2) = 1/20
y0 <- 1/20
求解 ODE
# Solve ODE
df <- as.data.frame(ode(y0, x, f, parms = NULL));
根据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")
R语言能找到一阶微分方程的泛解吗?
例如:
(5x-6)^2 y' = 5(5x-6) y - 2
PS:
那可以很容易地手工解决,即具体解决方案是:
y = 1/(5(5x-6))
和通用
C*(5x-6)
我想了解一下R能不能做到?
我们可以使用 R 库 deSolve
来获得 ODE 的数值解。有关详细信息,请参阅 ?deSolve
。
这是一个基于您的 ODE 的演练示例。
加载 R 库
library(deSolve);
定义微分方程
# Define the function f <- function(x, y, params) list((5 * (5 * x - 6) * y - 2) / (5 * x - 6)^2)
设置
x
要求解的值和初始条件# x values for which to solve x <- seq(2, 10, length.out = 100); # Initial value y(x=2) = 1/20 y0 <- 1/20
求解 ODE
# Solve ODE df <- as.data.frame(ode(y0, x, f, parms = NULL));
根据
绘制理论(代数)解和数值解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")