我在R中编写一个函数,需要求解基本的二次方程并给出根。如果适用,我需要打印出虚数。以下是我的代码。任何人都可以就如何改进我的编码给我建议吗?
quad = function(a, b, c){
D = b^2 - 4*a*c
if (D < 0){
cat("The roots are", x, "and", y,"i\n");
z < - complex(real = x, imaginary = y)
return();
}
x = (-b - D^0.5)/(2*a)
y = (-b + D^0.5)/(2*a)
cat("The two roots are", x, "and", y, "\n");
}
请记住,我是一个令人难以置信的新R程序员,我知道这是一个非常简单的代码。任何建议都将不胜感激。
答案 0 :(得分:0)
在行cat("The roots are", x, "and", y,"i\n");
中,它会搜索未声明的x
和y
。它也将计算根,即使D<0
如此更好,如果,否则阻止像:
if (D < 0){
# cat("The roots are", x, "and", y,"i\n");
# z < - complex(real = x, imaginary = y)
cat("imaginary roots")
}
else{
x = (-b - D^0.5)/(2*a)
y = (-b + D^0.5)/(2*a)
cat("The two roots are", x, "and", y, "\n");
}
答案 1 :(得分:0)
您可以使用这个简单的代码。
quadr=function(a,b,c){
D=b^2-4*a*c
m=ifelse(D<0,complex(1,0,sqrt(abs(k))),sqrt(k))
c((-b+m)/(2*a),(-b-m)/(2*a))
}
quadr(1,1,6)
[1] -0.5+2.397916i -0.5-2.397916i
quadr(1,1,-6)
[1] 2 -3