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

请注意,三行代码的布局比仅使用一行代码更容易理解公式。使用编辑器的自动缩进来帮助布局。

于 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)))))

您需要注意运算符的优先级。进行转换的一种方法是使用中缀表示法中的所有隐式括号(因此a * b + c转到((a * b) + c)),然后重新排列以使运算符位于前面。

于 2011-02-20T07:06:26.717 回答