> 1 <

Автор Сообщение

Bagira

Members


Статус

1 сообщений

Где: Russia
Род занятий:
Возраст:

#5055   2011-11-15 16:53 GMT+3 часа(ов)      
Здравствуйте! Не могу дорешать задачу, помогите пожалуйста!
Вначале задачи я искала значения 4х функций:
Записать определение функции F1 на языке программирования Common Lisp, которая выполняла бы следующие действия:
1. Выводила сообщение, в котором пользователю предлагалось ввести 4 числа xi;
2. Записывала введенные числа в список (x1 x2 x3 x4);
3. Вычисляла значения функций Y1 Y2 Y3 Y4 для каждого xi;
4. Записывала значения этих функций в свойства каждой переменной xi.
Результатом работы этой функции является список (x1 x2 x3 x4) у каждого элемента списка будет соответственно 4 свойства: Y1 Y2 Y3 Y4, со значениями соответственно Y1(xi), Y2(xi), Y3(xi), Y4(xi). Функции Yj выбираются в соответствии с последними номерами студенческого билета (см. приложение).
Это я вроде решила)

Пункт задачи:
Условия вывода свойств (функции F2)
Записать определение функции F2 на языке программирования Common Lisp, которая анализировала бы свойства элементов списка созданного функцией F1 и выводила на экран элемент и его свойства, удовлетворяющие определенному правилу. Выводить элементы, у которых, по меньшей мере, любые три значения функций Y(xk) лежат в интервале [-1; 1].. Формат вывода:
(xi соответствует свойство Yj равное Yj (xi))
Где xi, Yj (xi) – соответственно числовые значения xi и Yj (xi).

Помогите пожалуйста, не соображу как составить цикл, который находил бы минимум три значения функции в этом интервале...


Вот как все начиналось у меня:

(defun y1 (x)
(cond ((<= x 2) (+ (expt (expt 3 x) 1.5)(/ 1 (+ (expt x 2) 1 ))))
((and (< 3 x) (< x 6)) ( expt (- (+ 5 (expt x 2))(- x (expt x -2)))(/ 1 6)))
(t (+ (/(log (* 10 x))(log 10))(* 20 x)))))

(defun y2 (x)
(cond ((< x 5) (+ ( acos (expt x 3))(sinh (expt x -4))))
((and (< 6 x)) (+ (* 0.5 (sin(* 0.5 x))) (* 8 (cos(/ (+ x 1) (+ (expt x 3)(expt x -2)) ))) ))
(t (tan (+ x 1)))))


(defun y3 (x)
(cond ((<= 3 x)(< x 7) (+ (/ 1 (sqrt x)) (/ 1 (expt (+ (* 2 x) 1 ) (/ 1.0 4) )) (/ 1 (expt (+ (expt x 2) 1 ) (/ 1.0 6))) ))
(( and (< x 2))(- (* 2 (log(- 1 x)))(sin (+ (expt x 4)(expt x 3) 2))))
(t (+ -2 x))))


(defun y4 (x)
(cond ((< 0 x 0.5) (/ (sinh (expt x 4))(* (tan 0.5) x)))
((and (<= x 0)) (+ (expt x (- x 1)) (expt x (- 6 x))) )
(t (cos (/ (expt x 5) (+ (expt x 3)(* 2 x)))))))


(defun F1 (r)
(print "введите 4 числа ( х1 х2 х3 х4)")
(setq r (read))
(prog (ri r2 xi1 r3)
(setq r3 (list 'x1 'x2 'x3 'x4))
loop (setq xi (car r))
(setq xi1 (car r3))
(setq r (cdr r))
(setq r3 (cdr r3))
(setf (get xi1 'ys1) (y1 xi))
(setf (get xi1 'ys2) (y2 xi))
(setf (get xi1 'ys3) (y3 xi))
(setf (get xi1 'ys4) (y4 xi))
(setf (get xi1 'xis) xi)
(setq r2 (cons xi1 r2))
(cond ((eq r nil) (return r2))
(t (go loop)))))


(setq r1 nil)


(f1 r1)


(-1 5 6 5.5)


(defun f2 (r) (setq r1 nil)
(do (( xi (car r) (car r)))
((eq r nil) r1)
(setq s1 (get xi 'ys1))
(setq s2 (get xi 'ys2))
(setq s3 (get xi 'ys3))
(setq s4 (get xi 'ys4)) (setq r (cdr r))
(if (or (<= -1 s1 1) (<= -1 s2 1) (<= -1 s3 1) (<= -1 s4 1) ) (setq r1 (cons xi r1))))
(do (( r2 r1 (cdr r2)))
((eq r2 nil) (setq r1'выход )) (setq xi (car r2))
(print (list (get xi 'xis) 'соответствует 'свойство 'y1 (get xi 'ys1)))
(print (list (get xi 'xis) 'соответствует 'свойство 'y2 (get xi 'ys2)))
(print (list (get xi 'xis) 'соответствует 'свойство 'y3 (get xi 'ys3)))
(print (list (get xi 'xis) 'соответствует 'свойство 'y4 (get xi 'ys4)))))
> 1 <


Онлайн :

0 пользователь(ей), 35 гость(ей) :