Zadanie 1. Podróż pociągiem

Pani Bitowa jedzie pociągiem z Chełma do Zamościa.

Jeśli założymy, że trasa z jednego miasta do drugiego leży na linii prostej będącej osią OX, to bieg torów na mapie można opisać funkcją f ( x ) = x 3 + sin ( ( x + 2 ) 2 ).

Przyjmij, że funkcja jest ciągła w przedziale 1 ,   1 .

Zadanie 1.1

Pani Bitowa chce się dowiedzieć, jaka jest odległość między Chełmem a Zamościem na mapie w linii prostej. Wiadomo, że dla podanych założeń Chełm jest w punkcie x = 0.23, natomiast Zamość znajduje w przedziale 0 , 1 2 .

RdHzFLdrkekeQ
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!

Załóż, że funkcja na końcach przedziału przyjmuje różne znaki oraz że w podanym przedziale jest określona i ciągła.

Napisz program, który obliczy odległość od Chełma do Zamościa na mapie w linii prostej według podanych powyżej założeń, z przybliżeniem równym: ε   =   0.01

Długość odcinka ograniczonego punktami A oraz B można obliczyć ze wzoru: ( x B x A ) 2 + ( y B y A ) 2 .

Do oceny oddajesz:

  • plik odleglosc.txt zawierający odpowiedź (odległość między Chełmem a Zamościem w linii prostej; wynik podany z przybliżeniem równym: ε   =   0.01),

  • plik(i) z komputerową realizacją zadania.

Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python.

Rozwiązanie

Rozwiązanie przedstawimy w postaci pseudokodu, ponieważ na egzaminie maturalnym można korzystać z samodzielnie wybranego języka programowania: C++, Java lub Python.

Zauważmy, że skoro zarówno Chełm, jak i Zamość leżą na osi OX, to są miejscami zerowymi funkcji opisującej tory. W związku z tym wzór na odległość między obydwoma miastami upraszcza się do następującej postaci:

( x B x A ) 2 + ( y B y A ) 2   =   ( x B x A ) 2 + ( 0 0 ) 2 =   ( x B x A ) 2   =   | x B x A |

Wystarczy zatem znaleźć położenie drugiego miejsca zerowego, czyli Zamościa, i obliczyć wartość bezwzględną (inaczej moduł) z różnicy obu miejsc zerowych.

W celu znalezienia położenia Zamościa skorzystamy z metody bisekcji. Przystąpmy do zapisania programu:

Linia 1. początek ← 0. Linia 2. koniec ← 0 kropka 5. Linia 3. E ← 0 kropka 01. Linia 4. x ← minus 0 kropka 23. Linia 5. wypisz moduł otwórz nawias okrągły bisekcja otwórz nawias okrągły początek przecinek koniec przecinek E przecinek 0 zamknij nawias okrągły minus f otwórz nawias okrągły x zamknij nawias okrągły zamknij nawias okrągły.
  1. W głównej części kodu zapisujemy dane potrzebne do obliczenia drugiego miejsca zerowego funkcji oraz długości odcinka ograniczonego przez miejsca zerowe podanej funkcji. [linie kodu od 1 do 4]

  2. Następnie wypisujemy wynik, czyli długość odcinka między dwoma punktami. Oba punkty są miejscami zerowymi, zatem wypisujemy wartość bezwzględną ich różnicy jako odległość na osi OX. [linia kodu 5]

Linia 1. funkcja bisekcja otwórz nawias okrągły x1 przecinek x2 przecinek E przecinek szukana podkreślnik wartosc zamknij nawias okrągły. Linia 2. dopóki moduł otwórz nawias okrągły x1 minus x2 zamknij nawias okrągły zamknij nawias ostrokątny E przecinek wykonuj dwukropek. Linia 3. środek ← otwórz nawias okrągły x1 plus x2 zamknij nawias okrągły prawy ukośnik 2. Linia 4. jeżeli moduł otwórz nawias okrągły f otwórz nawias okrągły środek zamknij nawias okrągły minus szukana podkreślnik wartosc zamknij nawias okrągły otwórz nawias ostrokątny znak równości E dwukropek. Linia 5. przerwij pętlę. Linia 6. w przeciwnym wypadku jeżeli f otwórz nawias okrągły x1 zamknij nawias okrągły asterysk f otwórz nawias okrągły środek zamknij nawias okrągły otwórz nawias ostrokątny 0 dwukropek. Linia 7. x1 ← środek. Linia 8. w przeciwnym wypadku dwukropek. Linia 9. x2 ← środek. Linia 10. zwróć otwórz nawias okrągły x1 plus x2 zamknij nawias okrągły prawy ukośnik 2.
  1. Definiujemy funkcję, która dla podanych ograniczeń przedziału, dokładności oraz szukanej wartości funkcji zwróci wartość argumentu (w tym przypadku miejsca zerowego).   [linia kodu 1]

  2. Wykonujemy algorytm bisekcji:

  • Algorytm wykonujemy, dopóki odległość między wartościami funkcji dla punktów skrajnych przedziału jest większa niż dokładność. [linia kodu 2]

  • Ustalamy środek przedziału. Jeżeli jego wartość różni się od 0 o mniej niż epsilon, to znaczy, że znaleźliśmy miejsce zerowe z zadaną dokładnością i możemy przerwać pętlę. W przeciwnym wypadku, w zależności od iloczynu wartości funkcji w środku i na brzegach, aktualizujemy jeden z brzegów przedziału, zawężając go. [linie kodu od 3 do 9]

  1. Na koniec zwracamy przybliżoną wartość znalezionego miejsca zerowego.     [linia kodu 10]

Linia 1. funkcja f otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróć x asterysk x asterysk x plus sin otwórz nawias okrągły otwórz nawias okrągły x plus 2 zamknij nawias okrągły asterysk otwórz nawias okrągły x plus 2 zamknij nawias okrągły zamknij nawias okrągły.
  1. Definiujemy funkcję, która dla wartości x zwraca wartość funkcji podanej w zadaniu.

Linia 1. funkcja moduł otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. jeżeli x zamknij nawias ostrokątny znak równości 0 dwukropek. Linia 3. zwróć x. Linia 4. w przeciwnym razie dwukropek. Linia 5. zwróć minus x.
  1. Definiujemy funkcję, która zwróci wartość bezwzględną podanej zmiennej.    [linia kodu 1]

  2. Jeżeli wartość zmiennej jest większa lub równa 0, zwracamy pierwotną wartość zmiennej. [linie kodu 2, 3]

  3. Jeżeli jednak wartość zmiennej jest mniejsza od 0, zwracamy wartość przeciwną do wartości zmiennej. [linie kodu od 4 do 5]

Odpowiedź do zadania

Linia 1. 0 kropka 71.

Uwaga: Ze względu na niedokładność odpowiedź może się różnić o 0.01.

Zadanie 1.2

W celu odwiedzenia rezerwatu przyrody położonego między Chełmem a Zamościem, pani Bitowa postanowiła zmienić trasę przejazdu. Rezerwat znajduje się w przedziale 1 , 2 oraz przyjmuje wartość funkcji równą 1. Załóżmy, że w danym przedziale nie istnieje inny punkt o wartości równej 1.

Napisz program obliczający obwód trójkąta. Wierzchołki tego trójkąta znajdują się na wykresie w punktach zawierających: Chełm, Zamość oraz rezerwat przyrody według podanych w zadaniu założeń, z przybliżeniem równym ε   =   0 . 01.

Odpowiedź podaj w zaokrągleniu do dwóch miejsc po przecinku.

Ważne!

Załóż, że funkcja na końcach przedziału przyjmuje różne znaki oraz że w podanym przedziale jest określona i ciągła.

Do przygotowania rozwiązania w pseudokodzie użyj następujących funkcji:

moduł(x) – która dla wartości x zwraca jej wartość bezwzględną

oraz:

zaokrąglij(x) – która zaokrągla wartość x do dwóch miejsc po przecinku.

Do oceny oddajesz:

  • plik obwod.txt zawierający odpowiedź (obwód trójkąta, którego wierzchołki na wykresie odpowiadają punktom oznaczającym: Chełm, Zamość oraz rezerwat przyrody; wynik podany z przybliżeniem równym ε   =   0 . 01),

  • plik(i) z komputerową realizacją zadania.

Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python. Odpowiedź do zadania znajdziesz pod omówieniem pseudokodu.

Rozwiązanie

Rozwiązanie przedstawimy w postaci pseudokodu, ponieważ na egzaminie maturalnym można korzystać z samodzielnie wybranego języka programowania: C++, Java lub Python.

Linia 1. poczatekZ ← 0. Linia 2. koniecZ ← 0 kropka 5. Linia 3. początekR ← 1. Linia 4. koniecR ← 2. Linia 5. E ← 0 kropka 01. Linia 6. x1 ← minus 0 kropka 23. Linia 7. x2 ← bisekcja otwórz nawias okrągły początekZ przecinek koniecZ przecinek E przecinek 0 zamknij nawias okrągły. Linia 8. x3 ← bisekcja otwórz nawias okrągły początekR przecinek koniecR przecinek E przecinek 1 zamknij nawias okrągły. Linia 9. wypisz obwód otwórz nawias okrągły x1 przecinek x2 przecinek x3 zamknij nawias okrągły.
  1. W głównej części kodu korzystamy z położenia Chełma (x1), przybliżenia ( ε ) oraz punktów początekZ, koniecZ, poczatekR oraz koniecR, oznaczających zakresy przedziałówprzedziałprzedziałów, w których znajdują się Zamość oraz rezerwat. [linie kodu od 1 do 6]

  2. Następnie za pomocą metody bisekcji obliczamy położenie Zamościa oraz rezerwatu na osi OX. [linie kodu 7 do 8]

  3. Mając wszystkie trzy punkty i znając ich wartości funkcji (0 dla Chełma i Zamościa oraz 1 dla rezerwatu), wyliczamy obwód trójkąta za pomocą funkcji obwód().

Linia 1. funkcja bisekcja otwórz nawias okrągły x1 przecinek x2 przecinek E przecinek szukana podkreślnik wartosc zamknij nawias okrągły. Linia 2. dopóki moduł otwórz nawias okrągły x1 minus x2 zamknij nawias okrągły zamknij nawias ostrokątny E przecinek wykonuj dwukropek. Linia 3. środek ← otwórz nawias okrągły x1 plus x2 zamknij nawias okrągły prawy ukośnik 2. Linia 4. jeżeli moduł otwórz nawias okrągły f otwórz nawias okrągły środek zamknij nawias okrągły minus szukana podkreślnik wartosc zamknij nawias okrągły otwórz nawias ostrokątny znak równości E dwukropek. Linia 5. przerwij pętlę. Linia 6. w przeciwnym wypadku jeżeli f otwórz nawias okrągły x1 zamknij nawias okrągły asterysk f otwórz nawias okrągły środek zamknij nawias okrągły otwórz nawias ostrokątny 0 dwukropek. Linia 7. x1 ← środek. Linia 8. w przeciwnym wypadku dwukropek. Linia 9. x2 ← środek. Linia 10. zwróć otwórz nawias okrągły x1 plus x2 zamknij nawias okrągły prawy ukośnik 2.
  • Funkcja analogiczna do funkcji bisekcja() opisanej w zadaniu 1.1.

Linia 1. funkcja obwód otwórz nawias okrągły x przecinek y przecinek z zamknij nawias okrągły. Linia 2. xy ← moduł otwórz nawias okrągły x minus y zamknij nawias okrągły. Linia 3. xz ← moduł otwórz nawias okrągły f otwórz nawias okrągły otwórz nawias okrągły x minus z zamknij nawias okrągły asterysk otwórz nawias okrągły x minus z zamknij nawias okrągły plus 1 zamknij nawias okrągły zamknij nawias okrągły. Linia 4. yz ← moduł otwórz nawias okrągły f otwórz nawias okrągły otwórz nawias okrągły y minus z zamknij nawias okrągły asterysk otwórz nawias okrągły y minus z zamknij nawias okrągły plus 1 zamknij nawias okrągły zamknij nawias okrągły. Linia 5. zwróć zaokrąglij otwórz nawias okrągły xy plus xz plus yz zamknij nawias okrągły.
  1. Definiujemy funkcję, która dla podanych punktów zwróci obwód trójkąta, którego wierzchołki znajdują się w tych punktach. [linia kodu 1]

  2. Obliczenie długości odcinka xy będzie przebiegało tak, jak w zadaniu 1.1 – czyli dzięki temu, że oba punkty są pierwiastkami funkcji, możemy pominąć wartości y we wzorze na odległość. [linia kodu 2]

  3. Przy obliczaniu długości xz oraz yz należy skorzystać z pełnego wzoru na odległości punktów. [linie kodu 3, 4]

  4. Na koniec zwracamy zaokrąglony odpowiednio obwód trójkąta. [linia kodu 5]

Linia 1. funkcja f otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. zwróć x asterysk x asterysk x plus sin otwórz nawias okrągły otwórz nawias okrągły x plus 2 zamknij nawias okrągły asterysk otwórz nawias okrągły x plus 2 zamknij nawias okrągły.
  • Funkcja analogiczna do funkcji f() opisanej w zadaniu 1.1.

Linia 1. funkcja moduł otwórz nawias okrągły x zamknij nawias okrągły. Linia 2. jeżeli x zamknij nawias ostrokątny znak równości 0 dwukropek. Linia 3. zwróć x. Linia 4. w przeciwnym razie dwukropek. Linia 5. wypisz minus x.
  • Funkcja analogiczna do funkcji moduł() opisanej w zadaniu 1.1.

Odpowiedź do zadania

Linia 1. 3 kropka 68.

Uwaga: Ze względu na niedokładność odpowiedź może się różnić o 0.03.

Słownik

funkcja ciągła
funkcja ciągła

funkcja, której wykres da się narysować bez odrywania długopisu od papieru

przedział
przedział

zbiór elementów zbioru zawartych między dwoma ustalonymi elementami tego zbioru, nazywanymi początkiem i końcem przedziału; pewien obszar na wykresie funkcji, znajdujący się między dwoma punktami; obszar ten oznacza spójny podzbiór liczb rzeczywistych