0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 2
1

В Лисп реализовать функцию f (n)=5f (n−1)^3+4f (n−2)^2

19.02.2014, 01:48. Показов 1331. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В Лисп реализовать функцию
f (n)=5f (n−1)^3+4f (n−2)^2 ,
f (1)=2,
f (2)=4
Сначала определите функцию так, чтобы порождался рекурсивный
процесс — реализация f1, а затем преобразуйте процедуру к
итерационному процессу — реализация f2. С помощью системной
функции time сравните вычислительную сложность f1 и f2 при n=10
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 01:48
Ответы с готовыми решениями:

Даны действительные числа S, T, A0,.,A12. Получить P(X)= P(1) − P(T) + P^2 (S −T) − P^3(1) Где P(X) = A12X^12 + A11X^11 + . + A0
Пожалуйста посмотрите код, посоветуйте где что исправить, заранее спасибо) Даны действительные...

Построить график функции f (x,y) =(x−1)^3−(y−1)^5. Отформатировать график
ребят помогите пожалуйста решить задания по маткаду, буду очень всем благодарна Построить график...

Найдите пропущенное число в ответе к задаче на диофантово уравнение 2415x − 2392y = −46
Форумчане, доброго времени суток! Прошу Вашей помощи в решении этой задачи. " Найдите...

Найти значение функции y = 3x6 − 6x2 − 7
Найти значение функции y = 3x6 − 6x2 − 7 при данном значении x. плиз!!

4
Taatshi
19.02.2014, 01:59
  #2
Эта тема была перенесена из раздела О форуме и сайтах.

Перенес: Taatshi
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36590 / 20320 / 4218
Регистрация: 12.02.2012
Сообщений: 33,621
Записей в блоге: 13
19.02.2014, 10:07 3
Совершенно аналогичная задача решена чуть ниже.

Добавлено через 19 минут
Вот два рекурсивных решения - "плохое" и "хорошее":

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
;; Плохое (многократное перевычисление):
 
(defun f (n)
  (cond ((= n 1) 2)
        ((= n 2) 4)
        (t (let ((fn-1 (f (- n 1)))
                 (fn-2 (f (- n 2))))
                (+ (* 5 fn-1 fn-1 fn-1) (* 4 fn-2 fn-2))))))
 
;; хорошее
 
(defun ff (n &optional (c 4) (p 2))
  (cond ((= n 1) p)
        ((= n 2) c)
        (t (ff (- n 1) (+ (* 5 c c c) (* 4 p p)) c))))
Вот статистика вызова (HomeLisp):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(f 5)
 
==> 34114102773320869165589504
 
*** Статистика обращений ***
LET ......................  4
+ ........................  4
* ........................  8
- ........................  8
F ........................  9
COND .....................  9
= ........................  16
 
(ff 5)
 
==> 34114102773320869165589504
 
*** Статистика обращений ***
- ........................  3
+ ........................  3
FF .......................  4
COND .....................  4
* ........................  6
= ........................  8
Результат одинаковый, но у "хорошей" функции статистика вызовов благоприятнее.
1
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
19.02.2014, 15:49 4
Лучший ответ Сообщение было отмечено как решение

Решение

Кстати, плохое решение не так уж плохо. В частности, ясность - его достоинство. А сделать эффективным его можно, кэшируя результаты. Вспомогательные функция и макрос из On Lisp:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun memoize (fn)
  (let ((cache (make-hash-table :test #'equal)))
    #'(lambda (&rest args)
        (multiple-value-bind (val win) (gethash args cache)
          (if win
              val
              (setf (gethash args cache) 
                    (apply fn args)))))))
(defmacro _f (op place &rest args)
  (multiple-value-bind (vars forms var set access) 
                       (get-setf-method place)
    `(let* (,@(mapcar #'list vars forms)
            (,(car var) (,op ,access ,@args)))
       ,set)))
Определив функцию f, пишем
Lisp
1
(_f memoize (symbol-function 'foo))
и функция f заменилась на свой кэширущий аналог.
3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36590 / 20320 / 4218
Регистрация: 12.02.2012
Сообщений: 33,621
Записей в блоге: 13
19.02.2014, 16:00 5
Цитата Сообщение от helter Посмотреть сообщение
ясность - его достоинство
- это да...
0
19.02.2014, 16:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2014, 16:00
Помогаю со студенческими работами здесь

Цикл for: вычислить f (x) = x2 + b , где x = −10,−9,...,10
Вычислить f (x) = x2 + b , где x = −10,−9,...,10. Помогите пжл!

Получить f(t, −2⋅s, 1.17) + f(2.2, t, s−t)
Даны действительные числа s,*t.*Получить: f (t ,−2⋅s,1.17)+ f(2.2 ,t ,s−t) ,*где f (a ,b ,...

Вычислить значения y, соответствующие каждому значению x (xn≤x≤xk, dx) по формуле: y=e−xsin(x),∣x∣≤a e−x2cos(x
Вычислить значения y, соответствующие каждому значению x (xn≤x≤xk, dx) по формуле:...

(x − a)(x − b)>=0
Помогите написать программу для решения неравенства (x − a)(x − b)>=0 на ЯП Pascal


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru