1

極座標の距離式は次のとおりです。http: //math.ucsd.edu/~wgarner/math4c/derivations/distance/distancepolar.htm

私はそれをこのようにしてみました:

(defun distant-formula (r1 r2 t1 t2)
(setq d ( sqrt (*(-(+ (expt r1 2)(expt r2 2))(* 2 r1 r2))
                (cos(- t1 t2))))))

しかし、減算と乗算の間の余分な括弧は式を変更します、しかし私は正しくそれなしでそれを行う方法がよくわかりません、どんな助けもいただければ幸いです。

4

2 に答える 2

4

コード内の変数 D は役に立ちません。未定義の変数に値を代入しないでください。Lisp は計算の値も返します。そのため、そのような割り当ては特に役に立たなくなります。

式は次のように記述できます。

(defun distant-formula (r1 r2 t1 t2)
  (+ (expt r1 2)
     (expt r2 2)
     (* -2 r1 r2 (cos (- t1 t2)))))

3 行にわたるコードのレイアウトは、1 行だけを使用するよりも式を理解しやすくなります。エディターの自動インデントを使用して、レイアウトを支援します。

于 2011-02-20T09:52:02.233 に答える
3

元の式を見る:

sqrt(r1**2 + r2**2 - 2 * r1 * r2 * cos(t1 - t2))

あなたは外側から内側へと働きたい:

(sqrt (+ (* r1 r1) (* r1 r1) (* -2 r1 r2 (cos (- t1 t2)))))

演算子の優先順位に注意する必要があります。変換を行う1つの方法は、中置記法のすべての暗黙の括弧に変換し(したがって、a * b + cに移動します((a * b) + c))、演算子が先頭になるように再配置します。

于 2011-02-20T07:06:26.717 に答える