【发布时间】:2014-03-12 11:09:59
【问题描述】:
我是 clojure 的新手,我正在尝试制作一个用复数进行数学运算的小程序。我尝试了多个版本的乘法函数,它们都给出了相同的错误。对于其他一些功能,使用 let 修复它但不是在这里。 im-make 只返回一个包含实数和虚数的向量。
(defn im-mult
([i j]
(let [a (first i)
b (second i)
x (first j)
y (second j)]
(im-make (- (* (a) (b)) (* (x) (y)))
(+ (* (a) (b)) (* (x) (y)))))))
给定两个具有实数和虚数的向量 => (im-mult x y)
ClassCastException java.lang.Long 无法转换为 clojure.lang.IFn ComplexMath.core/im-mult (NO_SOURCE_FILE:7)
我只想说,哇!没想到clojure在这里有这么多的支持,感谢您的建议,错误当然是括号和不正确的乘法。
【问题讨论】:
-
对于虚数
z1 = (a + bi)、z2 = (c + di),它们的乘积是z1 * z2 = (ac-bd)+(ad+bc)i。所以,如果 (im-mult z1 z2) = z1 * z2,那么(defn im-mult [[a b] [c d]] [(- (* a c) (* b d)), (+ (* a d) (* b c))]). -
是的,这段代码起初计算不正确,从 java 移植得不好,我没有太注意什么乘以什么。谢谢!
标签: clojure