gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:54:32 31 4
gpt4 key购买 nike

如何判断代码中二次方程的输出(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);
}

最佳答案

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

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

关于c++ - 如何判断变量是否为复数C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43596059/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com