2

最初我问:如何将方程转换为编程指令。从@Wikipedia 找到的内容来看:类别:方程式这对于简单的问答来说显然太模糊了。所以我把它删了。

因为我通过例子学得最好,所以我想看看这个等式在 C 中作为一个函数是什么样子的。

一个图像

(期望航向为 d,地速为 Vg,航向为 a,真实空速为 Va,风向为 w,风速为 Vw。d、a 和 w 是角度。Vg、Va 和 Vw 是一致的速度单位。\ pi 是 3.14159...)

上式用于计算真实地速 取自E6B 飞行计算机

需要明确的是:我不是在寻求建议、意见或修辞。我不是要你做我的功课。我正在寻求帮助以了解从方程式到功能实现的转换过程。请耐心等待,我知道在这样的努力中需要注意很多方面,我只是想用我自己的知识、能力和理解来探索这两个符号系统之间的对称性。

由于我想探索对称性,我应该要求您尽可能保持程序标识符与其在公式中的表示密切相关。在上下文中与此示例翻译相关的关键字、流行语和规则参考(代码注释)是一个加分项。

如果我的问题由于监督而有缺陷,请在下面的评论中表达您的意见。

4

2 回答 2

3

您可以像在图形计算器中一样输入公式。带有 cos 的部分将如下所示:

#include <math.h>

int main(void) {
    double d, w, da;
    double result;

    result = cos( ( M_PI * ( d - w + da ) ) / ( 180 * M_PI / 180 ) );
}

您可能可以很容易地添加公式的其余部分。当然,在计算结果之前,你必须用一些合理的东西来初始化你的所有变量,最后用它做一些事情。不要全部放在一行上,使用临时变量(因此在下一步中,您将先前的结果替换为整个 cos 表达式)并将计算拆分为您可以在特定领域术语中有意义地描述的部分,如果可能的话。

现在关于与数学出版物相比在编程中做哪些不同的事情,其他程序员通常不会成为您所在领域的专家。例如,我根本不知道该公式仅通过查看它的作用。因此,我很高兴重命名变量并添加与公式的实际使用相关的注释(您的问题最初并没有解释变量名称的含义,所以我想出了非常合理的名称)。像这样:

#include <math.h>

int main(void) {
    double density, angledelta;
    double weight; /* Weight of cake with plate included. */
    double deg2rad;
    double result;

    deg2rad = M_PI / 180;

    /* Calculate X coordinate of next cake slice intersection with cake perimeter
       using fair cake splitting with density heuristics. */

    result = cos( ( M_PI * ( density - weight + angledelta ) ) / ( 180 * deg2rad ) );
}
于 2012-04-30T06:13:10.650 回答
2

要天真地将方程转换为 c,您可以根据运算顺序将其分解为多个部分。然后,您可以根据需要对其进行细化。

我将其分解的方式:

该函数将具有以下参数:d、w、deltaA、Va、Vw

  1. 步骤 1 = d - w + ΔA

  2. 步骤 2 = Math.PI* 步骤1

  3. Step3 = Step2 / 180忽略单位(度)

  4. Step4 = cos(Step3)

  5. 步骤 5 = Va * Va

  6. 步骤6 = Vw * Vw

  7. 步骤 7 = 2 * Va * Vw

  8. 步骤 8 = 步骤 5 + 步骤 6 - 步骤 7

  9. 步骤 9 = 步骤 8 * 步骤 4

  10. 步骤 10 =Math.sqrt(Step9)

  11. 返回 Step10

于 2012-04-30T06:27:06.547 回答