首页 > 解决方案 > C中速度问题的简单计算

问题描述

我正在尝试根据总停止距离和 mu 计算速度/速度。它基本上是使用二次公式来获得速度的正根,以便等式起作用。但是我对代码“speed(83.959876093, 0.7)->100”底部的示例测试的回答不匹配,我很难弄清楚可能是什么问题。我用多个变量分解了二次公式的每个部分。

#include <math.h>
#define G 9.81  // this is in m/s so need to convert the final output from m/s to km/h 
double speed(double d, double mu) {
        double conv_num = 60 * 60;  // used to convert from sec to hours 
        double conv_den = 1000; // used to convert from m to km 
        double conv = 1 / conv_den;
        double km_d = conv * d;  // convert input distance in meters to km 
        // use quadratic formula to solve for v given total stopping distance (after conversion, so it's km_hr_d)
        // given ax^2 + bx + c = 0, ((-b + sqrt(b^2 - 4ac)) / (2a) ) 
        // (v^2/(2*mu*g) + v - d = 0) so b = 1, a = 1/(2*mu*g), c = -d
        double b = 1;
        double c = -km_d;
        double constant = 2 * mu * G;
        double a = 1 / constant;
        double sqrt_quad_num = (b *b) - (4 * a * c);
        double quad_num = -b + sqrt(sqrt_quad_num);
        double quad_den = 2 * a;
        double root = quad_num / quad_den;
        root = root * conv_num;
        printf("sqrt_quad_num: %f\n", sqrt_quad_num);
        printf("quad_num: %f\n", quad_num);
        printf("quad_den: %f\n", quad_den);
        printf("inter_root: %f\n", inter_root);
        printf("root is %f\n", root);
        return root;
}

// supposed to get speed(83.9598760937531, 0.7) -> 100.0

My results are: 
sqrt_quad_num: 1.024453
quad_num: 0.012153
quad_den: 0.145624
inter_root: 0.083453
root is 300.430032

标签: calgebra

解决方案


推荐阅读