r 中的 a*(x^2) + b*x +c 方程
a*(x^2) + b*x +c equation in r
有人给了我这个等式,我被要求创建一个程序,其中
的解
a*(x^2) + b*x +c = 0
是这样给出的:
1) 如果D > 0,2个解是:
x1 = (-b -sqrt(D))/2a and x2= (-b+ sqrt(D))/2a
2)if D = 0 , 1 'double' 解':
x1 = -b/2a
3)如果 D < 0, 无真解
其中 D 线性判别式 = b^2 - 4*a*
我完全不知道该尝试什么,我唯一做的就是尝试定义 D:
`D <- b^2 - 4*a*c`
但是我得到一个错误
Error: object 'b' not found
.
如有任何帮助,我们将不胜感激。
这会起作用:
# calculate the real root(s) of a quadratic polynomial
# coefficients of which are given as aa, bb and cc
quadratic_roots <- function(aa = 1, bb = 2, cc = 1)
{
# calculate the discriminant
disc <- bb^2 - 4 * aa * cc
if (disc == 0) # if1, single root
{
return(-bb / (2 * aa))
}
else
{
if (disc > 0) # if2, two roots
{
root1 <- (-bb - sqrt(disc)) / (2 * aa)
root2 <- (-bb + sqrt(disc)) / (2 * aa)
return(c(root1, root2))
}
else # no real roots, return NA
{
return(NA)
}
}
}
请注意,r-base 有一个内置的多根,但是它会自动 return 复根,所以不会满足你的目的。
以及为什么我使用 aa、bb 和 cc 而不是 a、b 和 c:
因为"c"恰逢一个非常重要的内置函数。为自定义对象名称使用内置函数名称不是好的做法。
有人给了我这个等式,我被要求创建一个程序,其中
的解a*(x^2) + b*x +c = 0
是这样给出的:
1) 如果D > 0,2个解是:
x1 = (-b -sqrt(D))/2a and x2= (-b+ sqrt(D))/2a
2)if D = 0 , 1 'double' 解':
x1 = -b/2a
3)如果 D < 0, 无真解
其中 D 线性判别式 = b^2 - 4*a*
我完全不知道该尝试什么,我唯一做的就是尝试定义 D:
`D <- b^2 - 4*a*c`
但是我得到一个错误
Error: object 'b' not found
.
如有任何帮助,我们将不胜感激。
这会起作用:
# calculate the real root(s) of a quadratic polynomial
# coefficients of which are given as aa, bb and cc
quadratic_roots <- function(aa = 1, bb = 2, cc = 1)
{
# calculate the discriminant
disc <- bb^2 - 4 * aa * cc
if (disc == 0) # if1, single root
{
return(-bb / (2 * aa))
}
else
{
if (disc > 0) # if2, two roots
{
root1 <- (-bb - sqrt(disc)) / (2 * aa)
root2 <- (-bb + sqrt(disc)) / (2 * aa)
return(c(root1, root2))
}
else # no real roots, return NA
{
return(NA)
}
}
}
请注意,r-base 有一个内置的多根,但是它会自动 return 复根,所以不会满足你的目的。
以及为什么我使用 aa、bb 和 cc 而不是 a、b 和 c:
因为"c"恰逢一个非常重要的内置函数。为自定义对象名称使用内置函数名称不是好的做法。