2013-03-23 2 views
1

Я очень новичок в lisp, и я работаю над базовым синтаксисом. Я пытаюсь преобразовать:
r1 = (-b + sqrt (b^2 - 4 * a * c))/(2 * a)
в формате Lisp. Единственная проблема, я думаю, что у меня есть то, что я не могу получить lisp, чтобы распознать -b как отрицательное значение моего символа b. Это то, что я так далеко от LISP строки:Предоставление символа отрицательного значения в lisp

[17]> (setq a 1L0) 
1.0L0 
[18]> (setq b -1L0) 
-1.0L0 
[19]> (setq c -1L0) 
-1.0L0 
[20]> (setq r1 (+ (/ (sqrt (- (power b 2) (* (* 4 a) c))) (* 2 a)) -b)) 

*** - EVAL: variable -B has no value 
The following restarts are available: 
USE-VALUE  :R1  You may input a value to be used instead of -B. 
STORE-VALUE :R2  You may input a new value for -B. 
ABORT   :R3  Abort main loop 

ответ

6

использование

(- b) 

отрицать б. Это эквивалентно

(- 0 b) 
+0

Хорошо спасибо, потому что сначала я установил другой символ -b равным 1L0, просто чтобы свести на нет b. Это сработало, но ответ, который я получил, был не таким, как ответ, который я получил, когда я подключил все к моему калькулятору TI. Также получая тот же ответ, что я использовал (- b), как когда я устанавливал -b, чтобы отрицать b. Правильно ли мой синтаксис для установки r1? – DLR

+2

Попробуйте (/ (- (sqrt (- (expt b 2) (* 4 a c))) b) (* 2 a)) – uselpa

+0

Это сработало! Благодаря! Хотя мне нужно было сделать b отрицательным в вашем методе, но большое вам спасибо! – DLR

Смежные вопросы