2

もともと私は尋ねました:方程式をプログラミング命令に変換する方法。@ Wikipediaで見つかったコンテンツから判断すると、カテゴリ:方程式単純なQ&Aには明らかに曖昧すぎます。だから私はそれを削除しました。

私は例によって最もよく学ぶので、この方程式がCの関数としてどのように見えるかを見たいと思います。

画像

(望ましいコースはd、対地速度はVg、対地速度はa、真対気速度はVa、風向はw、風速はVwです。d、a、wは角度です。Vg、Va、Vwは一貫した速度の単位です。\ piは3.14159です...)

上記の式は、E6Bフライトコンピューターから取得した真の対地速度を計算するためのものです。

明確にするために:私はアドバイス、意見、またはレトリックを求めていません。私はあなたに宿題をするように頼んでいません。方程式から関数の実装への変換のプロセスを理解するための助けを求めています。このような取り組みでは、注意すべき点がかなりあることを私は知っています。私自身の知識、能力、理解を使用して、これら2つのシンボルシステム間の対称性を探求したいと思います。

対称性を探求したいという事実のために、プログラム識別子を式での表現とできるだけ密接に関連させておくようにお願いする必要があります。コンテキストでのこの翻訳例(コードコメント)に関連するキーワード、キャッチフレーズ、およびルール参照はプラスです。

監督のために私の質問に欠陥がある場合は、以下のコメントであなたの意見を表明してください。

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 ) );
}

おそらく、式の残りの部分を非常に簡単に追加できます。もちろん、結果を計算する前に、すべての変数を妥当なもので初期化し、最後に何かを行う必要があります。すべてを 1 行にまとめないでください。一時変数を使用して (次のステップで 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. ステップ4=cos(ステップ3)

  5. Step5 = Va * Va

  6. ステップ6=Vw * Vw

  7. Step7 = 2 * Va * Vw

  8. ステップ8=ステップ5+ステップ6-ステップ7

  9. Step9 = Step8 * Step4

  10. ステップ10=Math.sqrt(Step9)

  11. ステップ10に戻る

于 2012-04-30T06:27:06.547 に答える