如何判断变量是否是复数c ++

时间:2017-04-24 19:15:25

标签: c++ complex-numbers

如何判断代码(t1和t2)中二次方程的输出是实数还是复数?该程序的目标是获取两个对象的坐标和速度,以查看它们是否发生碰撞。如果t1或t2的值很复杂,那么它们就不会发生冲突,这就是为什么我需要帮助弄清楚如何判断t1和t2是否复杂的原因。

#include <iostream>
#include <string>
#include <cmath>

using std::cout;
using std::cin;
using std::string;

int main() {
  string id;
  double x = -34.94;
  double y = -69.13;
  double vx = 0.468;
  double vy = -0.900;
  double x2 = -43.08;
  double y2 = 92.12;
  double vx2 = -0.811;
  double vy2 = -0.958;

  double r1 = x2-x;
  double r2 = y2-y;
  double v1 = vx2-vx;
  double v2 = vy2-vy;

  double b = (2*r1*v1) + (2*r2*v2);

  double a = (v1*v1) + (v2*v2);
  double c = ((r1*r1) + (r2*r2))-100;

  double s = pow(b,2)-(4*a*c);

 double t1 = ((b*-1) + sqrt(s)) / (2*a);
 double t2 = ((b*-1) - sqrt(s)) / (2*a);
}

1 个答案:

答案 0 :(得分:3)

对于二次方程式,您只需计算它的判别式。如果它小于0,则根很复杂。

double s = pow(b,2)-(4*a*c);
if(s < 0) {
 // roots will be complex. no collision 
}