首页 > 解决方案 > 如何求解R中的二次方程?

问题描述

我需要解决这个问题,但我绝对不知道。我知道这是非常基本的东西,但我不明白:ax2 + bx + c = 0

a <- 1

b <- -8

c <- 12

d <- b*b-4*a*c 

谢谢你。

标签: r

解决方案


以下是二次公式的实现,

在此处输入图像描述

这将给出 ax^2 + bx + c = 0 的根。如果根是复数,它将返回复数值。如果两个根相同,它将返回一个值:

quad <- function(a, b, c)
{
  a <- as.complex(a)
  answer <- c((-b + sqrt(b^2 - 4 * a * c)) / (2 * a),
              (-b - sqrt(b^2 - 4 * a * c)) / (2 * a))
  if(all(Im(answer) == 0)) answer <- Re(answer)
  if(answer[1] == answer[2]) return(answer[1])
  answer
}

因此,在您的情况下,我们将:

quad(a = 1, b = -8, c = 12)
#> [1] 6 2

因此,当 x 为 2 或 6 时,我们知道 x^2 -8 *x + 12 = 0。这很容易手动验证。


推荐阅读