我正在学习口齿不清,我无法理解这个问题
修改返回二次方程根的函数,使其返回根的实部和虚部,如果是 他们很复杂。假设系数是真实的。
;;;gnu clisp 2.49
(defun root(a b c)
(let ((root1 (/ (+ (* -1 b) (sqrt (- (expt b 2) (* 4 a c )))) (* 2 a)))
(root2 (/ (- (* -1 b) (sqrt (- (expt b 2) (* 4 a c )))) (* 2 a))))
(format t "x1=~,2f" root1)
(format t ", x2=~,2f~%" root2)))
(root 1 -3 -4)
(root 1 0 -4)
(root 6 11 -35)
(root 1 -7 0)
(root 5 3 5)
我想以x + yi
答案 0 :(得分:4)
您需要以您喜欢的格式打印complex numbers。 E.g:
(defun number2string (num)
(if (complexp num)
(format nil "~,2f + ~,2fi" (realpart num) (imagpart num))
(format nil "~,2f" num)))
(defun quadratic-roots (a b c)
(let* ((root1 (/ (+ b (sqrt (- (* b b) (* 4 a c )))) (* -2 a)))
(root2 (- (- b) root1)))
(format t "x1=~a, x2=~a" (number2string root1) (number2string root2))
(values root1 root2)))