You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中求解三次方程P³+4P²+6P=2?

在R语言中求解三次方程P³+4P²+6P=2的根

首先将原方程整理为标准多项式形式:
P^3 + 4*P^2 + 6*P - 2 = 0

以下是两种在R中求解的方法:

方法一:使用polyroot()求解所有根(含复根)

polyroot()可以直接求解多项式的所有根,包括实根和复根。步骤如下:

  • 构造多项式系数向量(按最高次到常数项的顺序):三次项系数1,二次项4,一次项6,常数项-2,即c(1, 4, 6, -2)
  • 调用函数计算根并验证
# 定义多项式系数
coeffs <- c(1, 4, 6, -2)
# 求解所有根
roots <- polyroot(coeffs)
roots

# 提取实根(筛选虚部接近0的根)
real_root <- Re(roots[which(abs(Im(roots)) < 1e-10)])
real_root

# 验证实根是否满足原方程
left_val <- real_root^3 + 4*real_root^2 + 6*real_root
cat("实根代入左边的值:", left_val, "\n")
cat("右边的值:", 2, "\n")

方法二:使用uniroot()求解实根

由于原方程对应的函数f(P) = P^3 + 4*P^2 + 6*P - 2的导数3P^2 + 8P + 6判别式为负,导数恒正,函数单调递增,因此仅有一个实根。我们可以通过uniroot()在指定区间内求解:

# 定义目标函数(Left - Right)
f <- function(P) {
  P^3 + 4*P^2 + 6*P - 2
}

# 在区间(0,1)内求解实根(f(0)=-2,f(1)=9,区间内函数值由负变正)
result <- uniroot(f, interval = c(0, 1))
cat("实根为:", result$root, "\n")

# 验证
cat("代入左边的值:", result$root^3 + 4*result$root^2 + 6*result$root, "\n")

内容的提问来源于stack exchange,提问作者Nick Goh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:20:28