Домашно №2 за гр.1 и гр.2
Completion requirements
Opened: Thursday, 29 October 2015, 12:00 AM
Due: Thursday, 12 November 2015, 12:00 AM
Това е второто малко домашно за всички студенти, които идват на упражненията на първа и втора група. Срокът за предаване е десетина дни, като отново са позволени повече от един опити. Моля, предавайте задачите в един-единствен файл - името му няма значение. Домашните ще бъдат проверявани с тестове.
Всички функции трябва да се напишат, използвайки едно подходящо извикване на функцията accumulate или някоя от нейните производни. Решения, които не използват accumulate, ще бъдат зачетени, но ще носят по-малко точки.
Можете да използвате наготово всяка една функция, която сме писали на упражнения досега (вкл. от предишни упражнения)
Зад.1. Да се напише функция (squares-product a b), която изчислява произведението на всички точни квадрати в даден целочислен интервал [a;b]. Hint: използвайте вградения предикат (integer? n).
(squares-product 1 10) -> 36 ; = 1*4*9 = 12*22*32
(squares-product 10 20) -> 16 ; = 16 = 42
Зад.2. Да се напише функция (sum-row x n), която изчислява сумата на първите n члена на реда x,x2,x4,x8,x16,...:
(sum-row 2 6) -> 4295033110 ; = 2+22+24+28+216+232
(sum-row 1/10 4) -> 11010001/100000000 ; = 1/10 + 1/100 + 1/10000 + 1/100000000
Зад.3. Да се напише функция (const? f a b), която проверява дали дадена функция е константна в даден целочислен интервал:
(const? (lambda (x) 5) 1 100) -> #t
(const? (lambda (x) (+ x 1)) 1 3) -> #f
(const? fact 0 1) -> #t
(define example-polynomial (lambda (x) (+ (expt x 4) (* -10 (expt x 3)) (* 35 (expt x 2)) (* -50 x) 24))) ; example-polynomial си е полином, т.е. функцията x4-10x3+35x2-50x+24
(const? example-polynomial 1 4) -> #t
Бонус: Да се напише функция (max-fun f a b), която намира максимума на дадена функция в целочисления интервал [a;b]. Hint: в Scheme съществуват -inf.0 и +inf.0 като валидни и "точни" стойности за безкрайностите - използвайте ги при нужда.
(max-fun (lambda (x) (* x 2)) 10 20) -> 40.0
(max-fun example-polynomial -2 5) -> 360.0