Przedstawione zadanie zostało opracowane przez Centralną Komisję Egzaminacyjną i weszło w skład zbioru zadań przygotowujących do egzaminu maturalnego w roku 2015.
Wielomianem parzystym nazywamy wielomian stopnia 2n postaci:
tzn. taki, w którym występują tylko parzyste potęgi zmiennej.
Bazując na schemacie Hornera, zdefiniuj funkcję testowa(stopien, lista_wsp, argument), która dla podanego zestawu parametrów oblicza wartość parzystego wielomianu.
Linia 1. def testowa otwórz nawias okrągły stopien przecinek lista podkreślnik wsp przecinek argument zamknij nawias okrągły dwukropek.
Linia 2. kratka tutaj dodaj własny kod.
Linia 3. return None.
Linia 5. kratka niżej podaj przykład wywołania funkcji.
Linia 6. wynik znak równości testowa otwórz nawias okrągły 3 przecinek otwórz nawias kwadratowy 6 przecinek 8 przecinek minus 2 przecinek 23 zamknij nawias kwadratowy przecinek 2 zamknij nawias okrągły.
Linia 7. print otwórz nawias okrągły wynik zamknij nawias okrągły.
Linia 8. print otwórz nawias okrągły wynik znak równości znak równości 527 zamknij nawias okrągły.
Linia 9. kratka.
Linia 10. wynik znak równości testowa otwórz nawias okrągły 3 przecinek otwórz nawias kwadratowy 6 przecinek 8 przecinek minus 2 przecinek 23 zamknij nawias kwadratowy przecinek 5 zamknij nawias okrągły.
Linia 11. print otwórz nawias okrągły wynik zamknij nawias okrągły.
Linia 12. print otwórz nawias okrągły wynik znak równości znak równości 98723 zamknij nawias okrągły.
Wskazówką do rozwiązania zadania jest obserwacja, że:
Oznacza to, że wyznaczenie wartości R(x) można zrealizować bardzo efektywnie za pomocą schematu Hornera (zastosowanego do powyższego wielomianu P(Y)), ale nie dla wyjściowej wartości x, lecz dla x*x. Rozwiązanie uzyskujemy zatem, modyfikując podany schemat Hornera (obliczania wartości P(Y)) poprzez dodanie na początku instrukcji:
x = x * x
Zatem musimy „obudować” funkcję obliczającą schemat Hornera, aby do samych obliczeń użyć już wartości x^2
Linia 1. def testowa otwórz nawias okrągły stopien przecinek lista podkreślnik wsp przecinek argument zamknij nawias okrągły dwukropek.
Linia 3. def horner otwórz nawias okrągły stopien przecinek lista podkreślnik wsp przecinek argument zamknij nawias okrągły dwukropek.
Linia 4. if stopien znak równości znak równości 0 dwukropek.
Linia 5. return lista podkreślnik wsp otwórz nawias kwadratowy stopien zamknij nawias kwadratowy.
Linia 6. else dwukropek.
Linia 7. return argument asterysk horner otwórz nawias okrągły stopien minus 1 przecinek lista podkreślnik wsp przecinek argument zamknij nawias okrągły plus lista podkreślnik wsp otwórz nawias kwadratowy stopien zamknij nawias kwadratowy.
Linia 9. argument znak równości argument asterysk argument.
Linia 10. return horner otwórz nawias okrągły stopien przecinek lista podkreślnik wsp przecinek argument zamknij nawias okrągły.
Linia 13. wynik znak równości testowa otwórz nawias okrągły 3 przecinek otwórz nawias kwadratowy 6 przecinek 8 przecinek minus 2 przecinek 23 zamknij nawias kwadratowy przecinek 2 zamknij nawias okrągły.
Linia 14. print otwórz nawias okrągły wynik zamknij nawias okrągły.
Linia 15. print otwórz nawias okrągły wynik znak równości znak równości 527 zamknij nawias okrągły.
Linia 16. print otwórz nawias okrągły type otwórz nawias okrągły wynik zamknij nawias okrągły is int zamknij nawias okrągły.
Linia 17. wynik znak równości testowa otwórz nawias okrągły 3 przecinek otwórz nawias kwadratowy 6 przecinek 8 przecinek minus 2 przecinek 23 zamknij nawias kwadratowy przecinek 5 zamknij nawias okrągły.
Linia 18. print otwórz nawias okrągły wynik zamknij nawias okrągły.
Linia 19. print otwórz nawias okrągły wynik znak równości znak równości 98723 zamknij nawias okrągły.
Linia 20. print otwórz nawias okrągły type otwórz nawias okrągły wynik zamknij nawias okrągły is int zamknij nawias okrągły.
21
Ćwiczenie 2
Zdefiniuj funkcję suma_poteg(lista_elementow), która obliczy sumę potęg kolejnych elementów listy, gdzie podstawą będzie element, a wykładnikiem indeks tego elemenu w liście.
Elementy listy muszą być typu int lub float. Jeśli którykolwiek z elementów listy będzie innego typu, funkcja powinna zwrócić wartość False.
Linia 1. def suma podkreślnik poteg otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 2. kratka tutaj Twój kod.
Linia 3. return None.
Linia 5. kratka tu przykładowe wywołania.
Linia 6. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 7. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek cudzysłów 3 cudzysłów przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 8. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 kropka 5 przecinek minus 4 przecinek 1 kropka 4 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
R1IR0j6TzDtNL
Przedstaw swoje uzasadnienie do kodu napisanej funkcji.
Linia 1. def suma podkreślnik poteg otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 2. for e in lista dwukropek.
Linia 3. if type otwórz nawias okrągły e zamknij nawias okrągły is not int and type otwórz nawias okrągły e zamknij nawias okrągły is not float dwukropek.
Linia 4. return False.
Linia 6. wynik znak równości 0.
Linia 8. for x przecinek a in enumerate otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 9. wynik plus znak równości a asterysk asterysk x.
Linia 11. return wynik.
Linia 13. kratka przykładowe wykonania.
Linia 14. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 15. kratka 15.
Linia 16. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek cudzysłów minus 3 cudzysłów przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 17. kratka False.
Linia 18. print otwórz nawias okrągły suma podkreślnik poteg otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 kropka 5 przecinek minus 4 przecinek 1 kropka 4 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 19. kratka 16 kropka 244.
31
Ćwiczenie 3
Zdefiniuj funkcję iloczyn_poteg_odwrotny(lista_elementow), która obliczy iloczyn potęg kolejnych elementów listy (w której przede wszystkim należy odwrócić ich kolejność), gdzie podstawą będzie element, a wykładnikiem indeks tego elementu w liście.
Elementy listy muszą być typu int lub float. Jeśli którykolwiek z elementów listy będzie innego typu, funkcja powinna zwrócić wartość False.
Linia 1. def iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 2. kratka tutaj Twój kod.
Linia 3. return None.
Linia 5. kratka tu przykładowe wywołania.
Linia 6. print otwórz nawias okrągły iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 7. print otwórz nawias okrągły iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek cudzysłów 3 cudzysłów przecinek minus 4 przecinek 1 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 8. print otwórz nawias okrągły iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 kropka 5 przecinek minus 4 przecinek 1 kropka 4 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
RGABnOG0Am0Ra
Linia 1. def iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 2. for e in lista dwukropek.
Linia 3. if type otwórz nawias okrągły e zamknij nawias okrągły is not int and type otwórz nawias okrągły e zamknij nawias okrągły is not float dwukropek.
Linia 4. return False.
Linia 6. lista znak równości lista otwórz nawias kwadratowy dwukropek dwukropek minus 1 zamknij nawias kwadratowy kratka odwracamy kolejność.
Linia 7. wynik znak równości 1.
Linia 9. for x przecinek a in enumerate otwórz nawias okrągły lista zamknij nawias okrągły dwukropek.
Linia 10. wynik znak równości wynik asterysk otwórz nawias okrągły a asterysk asterysk x zamknij nawias okrągły.
Linia 12. return wynik.
Linia 14. kratka przykładowe wykonania.
Linia 15. print otwórz nawias okrągły iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 kropka 5 przecinek minus 4 przecinek 1 kropka 4 zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 16. kratka 392 kropka 0.
Linia 17. print otwórz nawias okrągły iloczyn podkreślnik poteg podkreślnik odwrotny otwórz nawias okrągły otwórz nawias kwadratowy minus 2 przecinek minus 3 przecinek minus 4 przecinek cudzysłów A cudzysłów zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły.
Linia 18. kratka False.