http___fmi.wikidot.com_fpphomework1_1.xml
http___ibmathstuff.wikidot.com_composite-function.xml
1.1 2.1 2.2 3.1 3.2 4.1 4.2 5.1 5.2 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 20.2 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1
Пак е това време на годината! Точно така, деца! Отново веселият Дядо Асистент ще потропа с червените ботушки по мързеливите ви недописали домашно задници! Днес ще решим малко от задачките за първата домашна работа по функционално програмиране. И, имайки предвид специфичната тема, ще си позволя да направя малко отклонение: Много ясно, че ако просто препишеш решенията тук, няма да минеш. Нали като те пита някой "Абе, тая част какво прави?" и няма да можеш да му отговориш? Освен това самата проверка на "домашното" е под формата на контролно със задачи много подобни, но не същите, като тези тук. Даже са малко по-лесни от тези. Най-добре първо си реши задачите, а после се върни тук, за да сравниш получените отговори Предварителна информация Тези решения използват за дадени следните процедури: - accumulate - map - filter - reduce - all? - any? - prime? - interval (Създава списък с числата от [a,b]) - sum (Сума на елементи на списък) - prod (Произведение на елементи на списък) Ако в момента не си в състояние да си ги напишеш самостоятелно1, най-добре си попрегледай лекциите, включително тези, и след това се върни, че да довършим. А, впрочем, помниш ли как надълго и нашироко обяснявах как хубаво написани общи функции ще ни направят живота лесен по-късно? Е, това по-късно вече е сега. Задача 1 Да се дефинира процедура за работа със списъци accumulate и чрез нея да се напишат функции на Schemе, които: По дадени $x \in R, n \in N$ да изчислява израза: По дадена фунцкия f(x) и естествени числа a и b да намира най-голямата стойност на f в интервала $[a,b]$. По дадена фунцкия f(x) и естествени числа a и b да намира най-малкото $x \in [a,b]$, за което f(x) достига максималната си стойност в $[a,b]$. Задача 2 За даден полином(2) казваме, че се представя от списъка l, ако l се състои от всички неповтарящи се двойки от вида $(a_k, k)$, за които $a_k \ne 0$. Да се напише програма, която: - По даден списък L, който представя полином, и функция f, приемаща и връщаща реални числа, да връща функция g, за която $g(x) = P(f(x))$. - Да се напише процедура, която приема два полинома, P и Q и генерира представяне за полинома $R(x) = P(Q(x))$. Задача 3 Да се напише функция, която по даден списък от цели числа намира: - НОД на всички числа, които са огледални на дадените - Числото, което се получава при конкатенация на тези числа, които са сума на два точни квадрата. - Числото, което в двоична бройна система представлява побивтово или на онези елементи, които след задраскването на всички техни четни цифри стават прости. Задача 4 Да се напише програма, която приема списък от функции и връща тяхната композиция. Тоест, ако приеме (f g h), ще върне функция приемаща един аргумент x и връщаща: f(g(h(x))) Задача 5 Да се напише функция, която по дадени f : N → N и g : N3 → N намира функцията h : N2 → N, за която: Да се напише функция, която по даден списък от функции L = (f0 f1 … fk−1 ), които са от вида fi : N → N намира функция h : N3 → N, за която: където l е остатъкът на find (count) при деление на k.
1.1 2.1 2.2 3.1 3.2 3.3 3.4 4.1 4.2 4.3 5.1 6.1 7.1 8.1 9.1 9.2
Composite Function Functions can have almost any input. This includes other functions. In the function notation notes we saw that a function such as $g(x)=3x^2+1$ could have an input of 2x which can be written in function notation as $g(2x)$. The input of 2x can be viewed as another function. Lets define $h(x)=2x$. We can then write the function g to have the an input of h(x):(1) While the notation might be a little intimidating the statement $g(h(x))$ is equivalent to $g(2x)$. When the argument of one function is another function (i.e. the input of one function is a function) it is referred to as a composite function. The notation for a composite function can be written in two ways, both of which you should be familiar with:(2) I personally don't like the second form as I find it less clear, but it will show up on homework, IB exams and beyond… Examples Looking at the example above, we can write the composite of g and h in terms of x:(3) We can also make a composition of h as a function of g:(4) Note that in general $g(h(x)) \neq h(g(x))$. This is due to order of operations and using non-linear equations.