c - 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
解决方案
推荐阅读
- ansible - 如何防止 ansible 访问 /home/ansible/.ansible?
- php - 如何使用php从csv文件中动态获取列值
- javascript - 使用 forEach 循环在一个数字范围内循环,并将任何包含整数 1 的数字替换为“Beep”
- vb.net - VB.NET 数据库事务不去数据库
- sql - 旧作业和新作业列 SQL
- reactjs - react-hook-form 版本 7 验证错误不起作用
- python - 有没有办法使用 Python 在 docx 文件上将图像换行设置为“通过”?
- excel - 基于动态范围创建数据透视表
- node.js - Google Cloud Storage NodeJS 多个读取请求加载太慢
- string - 硬编码字符串变为粗体