Zadanie 1. Oś liczbowa

Na osi OX mieszka pewna zmienna o imieniu z3a2, która swobodnie się po niej porusza.

Zadanie 1.1

Zmienna postanowiła odwiedzić swojego przyjaciela, którego dom znajduje się w miejscu zerowym funkcji f ( x ) = 7 x 4 + 0 , 12 x 2 3 , 4 x 0 , 7. Oto założenia:

  • Dom ten mieści się w przedziale 0, 1.

  • Dom jest widoczny z odległości ε.

Na jaką współrzędną x zmienna powinna się udać?

Napisz program, który obliczy współrzędną x miejsca zerowego podanej funkcji tak, aby błąd bezwzględny ε odpowiedzi (odległość, z której widoczny jest dom) wynosił nie więcej niż 0 , 03.

Plik wynik.txt powinien zawierać określoną współrzędną x miejsca zerowego funkcji zawartego w przedziale 0, 1, przy założonym błędzie bezwzględnym ε.

Wynik zapisz w pliku wynik.txt.

Do oceny oddajesz:

  • plik wynik.txt zawierający odpowiedź (współrzędną x miejsca zerowego funkcji zawartego w przedziale 0, 1, przy założonym błędzie bezwzględnym ε)

  • plik(i) z komputerową realizacją zadania (kodem programu)

Ważne!

Przyjmij, że funkcja jest ciągła, określona i na końcach przedziału ma różne znaki.

Rozwiązanie przedstawimy w postaci pseudokodu, ponieważ na egzaminie maturalnym można posługiwać się następującymi językami: C++, Java lub Python.

Praca domowa

Korzystając z przedstawionego za pomocą pseudokodu rozwiązania, napisz program (w języku C++, Java lub Python), który wyznaczy współrzędną x miejsca zerowego podanej funkcji tak, aby błąd bezwzględny odpowiedzi nie przekroczył wartości 0 ,03. Rozwiązanie zadania znajdziesz w osobnym pliku tekstowym pod omówieniem pseudokodu.

Rozwiązanie

  • Wiemy, że dokładność wynosi ε   =   0 , 03.

  • Znamy przedział, w którym powinniśmy szukać: 0, 1.

  • Mamy wszystkie dane potrzebne do rozwiązania zadania.

Linia 1. E ← 0 kropka 03. Linia 2. x0 ← 1. Linia 3. wypisz metodaStycznych otwórz nawias okrągły x0 przecinek E zamknij nawias okrągły do pliku.
  1. Zapisujemy wartość błędu bezwzględnego, w jakim powinno zmieścić się przybliżenie.  [wiersz 1.]

  2. Ustalamy, od jakiej wartości rozpoczniemy przeszukiwanie – może to być dowolna wartość zawierająca się w przedziale. W tym wypadku została wybrana ostatnia możliwa. [wiersz 2.]

  3. Wypisujemy wynik, który zwróci program. [wiersz 3.]

Linia 1. funkcja metodaStycznych otwórz nawias okrągły x0 przecinek E zamknij nawias okrągły. Linia 2. x1 ← x0. Linia 3. wykonuj dwukropek. Linia 4. x0 ← x1. Linia 5. x1 ← x0 minus funkcja otwórz nawias okrągły x0 zamknij nawias okrągły prawy ukośnik pochodna otwórz nawias okrągły x0 zamknij nawias okrągły. Linia 6. jeżeli bezwzględna otwórz nawias okrągły x1 minus x0 zamknij nawias okrągły otwórz nawias ostrokątny E dwukropek. Linia 7. przerwij pętlę. Linia 8. zwróć x1.
  1. Definiujemy funkcję metodaStycznych, która zwróci przybliżoną wartość miejsca zerowego funkcji. [wiersz 1.]

  2. Do kolejnej wartości x przypisujemy poprzednią – jest to konieczne w kontekście następnych obliczeń. [wiersz 2.]

  3. Obliczamy następne możliwe miejsce zerowe – w tym celu zapisujemy kolejne przybliżenie z poprzedniej iteracji pętli – x1 do zmiennej x0, przechowującej poprzednią sprawdzaną wartość.  [wiersze 3. i 4.]

  4. Ustalamy wartość argumentu funkcji dla punktu przecięcia stycznej do funkcji i osi OX. [wiersz 5.]

  5. Sprawdzamy warunek, czy znaleźliśmy się w otoczeniu pierwiastka funkcji. [wiersz 6.]

  6. Gdy przybliżenie będzie odpowiednie, czyli będzie mieściło się w granicy błędu, przerywamy działanie pętli. [wiersz 7.]

  7. Na koniec zwracamy przybliżoną wartość znalezionego miejsca zerowego, co kończy działanie funkcji. [wiersz 8.]

Linia 1. funkcja funkcja otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróc 7 asterysk otwórz nawias okrągły x asterysk x asterysk x asterysk x zamknij nawias okrągły plus 0 kropka 12 asterysk otwórz nawias okrągły x asterysk x zamknij nawias okrągły minus 3 kropka 4 asterysk x minus 0 kropka 7.
Linia 1. funkcja pochodna otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróć 28 asterysk otwórz nawias okrągły x asterysk x asterysk x zamknij nawias okrągły plus 0 kropka 24 asterysk x minus 3 kropka 4.
  1. Definiujemy funkcje funkcja(x)pochodna(x), które zwrócą wartość funkcji oraz pochodnej w wybranym punkcie x.

Linia 1. funkcja bezwzględna otwórz nawias okrągły wartość zamknij nawias okrągły. Linia 2. jeżeli wartość zamknij nawias ostrokątny znak równości 0 dwukropek. Linia 3. zwróć wartość. Linia 4. w przeciwnym razie dwukropek. Linia 5. zwróć wartość asterysk otwórz nawias okrągły minus 1 zamknij nawias okrągły.
  1. Definiujemy funkcję zwracającą wartość bezwzględną z wybranej wartości.   [wiersz 1.]

  2. Wartość bezwzględna zmienia ujemne wartości w dodatnie, natomiast dla nieujemnych wartość pozostaje niezmienna. [wiersze od 2. do 5.]

Przykładowa odpowiedź do zadania:

R12hia5E5ACk8

Przycisk do pobrania pliku TXT zawierający treść zadania.

Plik TXT o rozmiarze 18.00 B w języku polskim

Przy założonych danych wejściowych poprawne wyniki zawarte są w przedziale 0,80897 ; 0,86897.

Zadanie 1.2

Po odwiedzinach przyszła pora na powrót zmiennej z3a2 do domu.

Zmienna znajduje się w punkcie, w którym funkcja f ( x ) = 2 x 7 + 3 4 x 2 + 2 przecina oś OX. Punkt jest nie dalej od środka układu współrzędnych niż 3 jednostki.

Napisz program, który obliczy, do jakiego przedziału zmienna z3a2 powinna się udać – dla przedziału [a, b] nie powinien on być większy niż 1 jednostka, oraz poda przybliżoną pozycję jej domu (współrzędną x).

Ważne!

Przyjmij, że dom zmiennej z3a2 jest widziany z tej samej odległości, co dom jej przyjaciela, czyli ε   =   0 , 03 (jest to wartość błędu bezwzględnego).

Plik wynik2.txt powinien zawierać określoną współrzędną x – przybliżoną pozycję domu zmiennej z3a2.

Wynik zapisz w pliku wynik2.txt.

Do oceny oddajesz:

  • plik wynik2.txt zawierający odpowiedź (współrzędną x – przybliżoną pozycję domu zmiennej z3a2)

  • plik(i) z komputerową realizacją zadania (kodem programu)

Rozwiązanie przedstawimy w postaci pseudokodu, ponieważ na egzaminie maturalnym można posługiwać się następującymi językami: C++, Java lub Python.

Praca domowa

Korzystając z przedstawionego za pomocą pseudokodu rozwiązania, napisz program (w języku C++, Java lub Python), który wyznaczy przybliżoną pozycję domu zmiennej z3a2. Rozwiązanie zadania znajdziesz w osobnym pliku tekstowym pod omówieniem pseudokodu.

Rozwiązanie

Zacznijmy od ustalenia przedziału, w którym ma się znajdować miejsce zerowe funkcji.

Możemy to zrobić np. metodą bisekcji. Polega ona na podziale ustalonego przedziału na dwie części, a następnie sprawdzeniu, w której z powstałych części wartości na jej końcach przyjmują różne znaki (na jednym końcu dodatni, na drugim ujemny) – czyli gdzie znajduje się w niej miejsce zerowe funkcji.

Następnie na powstałym przedziale stosujemy metodę stycznych i zwracamy przybliżenie miejsca zerowego funkcji.

Rozwiązując to zadanie, skorzystamy ze zmodyfikowanego kodu z rozwiązania zadania 1.1.

Linia 1. E ← 0 kropka 03. Linia 2. x0 ← bisekcja otwórz nawias okrągły minus 3 przecinek 3 zamknij nawias okrągły. Linia 3. wypisz otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline zamknij nawias ostrokątny metodaStycznych otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias okrągły x0 przecinek E zamknij nawias okrągły do pliku.

Wartością, od której rozpoczniemy przeszukiwanie, niech będzie ostatnia wartość w ustalonym przez bisekcję przedziale. [wiersz 2.]

Linia 1. funkcja bisekcja otwórz nawias okrągły x przecinek y zamknij nawias okrągły. Linia 2. jeżeli otwórz nawias okrągły y minus x zamknij nawias okrągły zamknij nawias ostrokątny 1 dwukropek. Linia 3. jeżeli otwórz nawias okrągły x asterysk otwórz nawias okrągły otwórz nawias okrągły x plus y zamknij nawias okrągły prawy ukośnik 2 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias ostrokątny 0 dwukropek. Linia 4. bisekcja otwórz nawias okrągły x przecinek otwórz nawias okrągły x plus y zamknij nawias okrągły prawy ukośnik 2 zamknij nawias okrągły. Linia 5. w przeciwnym razie dwukropek. Linia 6. bisekcja otwórz nawias okrągły otwórz nawias okrągły x plus y zamknij nawias okrągły prawy ukośnik 2 przecinek y zamknij nawias okrągły. Linia 7. zwróć y.
  1. Definiujemy funkcję bisekcji, która dla podanego przedziału ustali przedział nie większy niż jedna jednostka, w którym znajduje się szukany pierwiastek. Na koniec funkcja zwróci ostatnią wartość w znalezionym przedziale. [wiersz 1.]

  2. Sprawdzamy warunek, czy nie osiągnęliśmy oczekiwanej wielkości przedziału. [wiersz 2.]

  3. Sprawdzamy, w której części przedziału skrajne wartości przyjmą różne znaki. Jeżeli w pierwszej, wówczas wywołujemy rekurencyjnierekurencjarekurencyjnie funkcję bisekcji dla pierwszej części przedziału. W przeciwnym wypadku dla drugiej części przedziału. [wiersze od 3. do 6.]

Linia 1. funkcja metodaStycznych otwórz nawias okrągły x0 przecinek E zamknij nawias okrągły. Linia 2. x1 ← x0. Linia 3. wykonuj dwukropek. Linia 4. x0 ← x1. Linia 5. x1 ← x0 minus funkcja otwórz nawias okrągły x0 zamknij nawias okrągły prawy ukośnik pochodna otwórz nawias okrągły x0 zamknij nawias okrągły. Linia 6. jeżeli bezwzględna otwórz nawias okrągły x1 minus x0 zamknij nawias okrągły otwórz nawias ostrokątny E dwukropek. Linia 7. przerwij pętlę. Linia 8. zwróć x1.

Funkcję wykorzystującą metodę stycznych zapisujemy analogicznie jak w zadaniu 1.1.

Linia 1. funkcja funkcja otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróc 2 asterysk otwórz nawias okrągły x asterysk x asterysk x asterysk x asterysk x asterysk x asterysk x zamknij nawias okrągły plus otwórz nawias okrągły 3 prawy ukośnik 4 zamknij nawias okrągły asterysk otwórz nawias okrągły x asterysk x zamknij nawias okrągły plus 2.
Linia 1. funkcja pochodna otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróć 14 asterysk otwórz nawias okrągły x asterysk x asterysk x asterysk x asterysk x asterysk x zamknij nawias okrągły plus otwórz nawias okrągły 3 prawy ukośnik 2 zamknij nawias okrągły asterysk x.

Działanie funkcji: funkcja oraz pochodna zostają zachowane, zmieniają się jedynie dane, na których działają przedstawione funkcje.

Przykładowa odpowiedź do zadania:

R1RHQFyTeIhRA

Przycisk do pobrania pliku TXT zawierający odpowiedź do zadania.

Plik TXT o rozmiarze 19.00 B w języku polskim

Przy założonych danych wejściowych poprawne wartości współrzędnej x pozycji domu zmiennej zawarte są w przedziale -1,08074 ; -1,02074.

Słownik

pierwiastek funkcji
pierwiastek funkcji

miejsce zerowe funkcji; punkt, w którym wykres funkcji przecina oś OX

rekurencja
rekurencja

technika programowania, w której funkcja wywołuje samą siebie, aż do napotkania przypadku podstawowego, czyli takiego, którego nie da się rozłożyć na mniejsze problemy