复数的二次函数

时间:2017-09-11 04:38:42

标签: r complex-numbers quadratic

我在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程序员,我知道这是一个非常简单的代码。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

在行cat("The roots are", x, "and", y,"i\n");中,它会搜索未声明的xy。它也将计算根,即使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