График функции y = sin x / cos x - Lisp
Формулировка задачи:
Доброго времени суток.
В mulisp под DOS необходимо нарисовать график функции y = sin x / cos x в Lisp.
Цикл я описал, код работает, но график не рисуется.
Помогите, пожалуйста, исправить код, так-как я абсолютный новичок в LISP.
Код
Спасибо.
Листинг программы
- (load 'common87)
- (video-mode 16)
- (setq x 1)
- (setq y 0)
- (loop
- (if (= (cos 90) 0)
- then
- (progn
- (setq x (+ x 2))
- ))
- (setq y (/ (sin x)(cos x)))
- (set-cursor x y)
- (plot-dot x y color)
- (setq x (+ x 1))
- (when (> x 360) (return x))
- )
Решение задачи: «График функции y = sin x / cos x»
textual
Листинг программы
- (defun grafik (f a b)
- (let* ((w (gensym 'w))
- (ymax (funcall f a))
- (ymin (funcall f b))
- (y 0)
- (xl 0)
- (yl 0)
- (dx (/ (- b a) 200.0)))
- (grwCreate w 300 300 "График" _WHITE)
- (grwSetParm w 3 0 _RED)
- (grwShow w)
- (iter (for x from a to b by dx)
- (setf y (funcall f x))
- (when (> y ymax) (setf ymax y))
- (when (< y ymin) (setf ymin y)))
- (setf ymax (+ ymax (* 0.1 (- ymax ymin))))
- (setf ymin (- ymin (* 0.1 (- ymax ymin))))
- (grwScale w a b ymin ymax)
- (setq xl a yl (funcall f a))
- (iter (for x from (+ dx a) to b by dx)
- (setq y (funcall f x))
- (grwLine w xl yl x y _RED)
- (setq xl x yl y))))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д