Lekcja usunięta zgodnie z podstawą programową z 2024 r.

Ćwiczenie 0

Przeanalizuj i popraw poniższy kod. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile(10) jest 4.
  • Wynikiem funkcji ile(100) jest 7.
def ile(zakres): licznik = 1 while zakres > 0: zakres = zakres // 2 licznik += 1 return licznik print(ile(10)) print(ile(100))
Wynikiem funkcji ile(2) jest 2
testResult = ile(2)==2
2
ile(2)
Wynikiem funkcji ile(22) jest 5
testResult = ile(22)==5
5
ile(22)
Wynikiem funkcji ile(201) jest 8
testResult = ile(201)==8
8
ile(201)
Rozwiąż ćwiczenie

Ćwiczenie 1Pierwiastek kwadratowy

Zdefiniuj funkcję pierwiastek(x, eps), której parametrami są liczba dodatnia większa od liczby 1 lub jej równa oraz mała liczba dodatnia (np. 0,00001), a wynikiem jest z dokładnością eps. Sprawdź działanie skryptu – wyznacz z dokładnością 0,1, 0,01 oraz 0,00001.

# zdefiniuj funkcję def pierwiastek(x, eps): pass # testy
Wynikiem funkcji pierwiastek(4, 0.1) jest 2.0625
testResult = pierwiastek(4, 0.1)==2.0625
2.0625
pierwiastek(4, 0.1)
Wynikiem funkcji pierwiastek(25, 0.01) jest 4.998779296875
testResult = pierwiastek(25, 0.01)==4.998779296875
4.998779296875
pierwiastek(25, 0.01)
Wynikiem funkcji pierwiastek(33, 0.00001) jest 5.744565725326538
testResult = pierwiastek(33, 0.00001)==5.744565725326538
5.744565725326538
pierwiastek(33, 0.00001)
Rozwiąż ćwiczenie

Ćwiczenie 2Dowolny pierwiastek

Zdefiniuj funkcję pierwiastek(x, n, eps), której parametrami są liczba dodatnia większa od liczby 1 lub jej równa, stopień pierwiastka oraz mała liczba dodatnia (np. 0,00001), a wynikiem jest z dokładnością eps. Sprawdź działanie skryptu – wyznacz pierwiastek liczby 2 stopnia 2, 3 i 4 z dokładnością 0,1, 0,01 oraz 0,001.

Wskazówka: zmodyfikuj algorytm z ćwiczenia 1 – dodaj dodatkowy parametr n i podnieś c do n-tej potęgi.

# zdefiniuj funkcję def pierwiastek(x, n, eps): pass # testy
Wynikiem funkcji pierwiastek(4, 2, 0.1) jest 2.0625
testResult = pierwiastek(4, 2, 0.1)==2.0625
2.0625
pierwiastek(4, 2, 0.1)
Wynikiem funkcji pierwiastek(25, 3, 0.01) jest 2.923583984375
testResult = pierwiastek(25, 3, 0.01)==2.923583984375
2.923583984375
pierwiastek(25, 3, 0.01)
Wynikiem funkcji pierwiastek(1, 4, 0.0001) jest 0.99993896484375
testResult = pierwiastek(1, 4, 0.0001)==0.99993896484375
0.99993896484375
pierwiastek(1, 4, 0.0001)
Rozwiąż ćwiczenie

Ćwiczenie 3Miejsce zerowe funkcji

Napisz program, za pomocą którego znajdziesz miejsce zerowe funkcji określonej wzorem f (x) = 2x3x – 5
w przedziale 〈0, 100〉 z dokładnością 0,001. Wykorzystaj algorytm połowienia.

def f(x): return 2 * x ** 3 - x - 5 # zdefiniuj funkcję def miejsce_zerowe(eps): pass # testy
Wynikiem funkcji miejsce_zerowe(0.001) jest 1.479339599609375.
testResult = miejsce_zerowe(0.001)==1.479339599609375
1.479339599609375
miejsce_zerowe(0.001)
Rozwiąż ćwiczenie

Ćwiczenie 4Funkcja malejąca w przedziale

Napisz program, za pomocą którego znajdziesz miejsce zerowe funkcji określonej wzorem f(x) = – 1/4x2 + x + 2 w przedziale 〈2, 10〉 z dokładnością 0,001. Wykorzystaj algorytm połowienia. Wyznacz też miejsce zerowe przez obliczenie wyróżnika i porównaj oba wyniki. Możesz też poszukać drugiego miejsca zerowego w innym przedziale.

def f(x): return -1/4 * x ** 2 + x + 2 # zdefiniuj funkcję def miejsce_zerowe(eps): pass # testy
Wynikiem funkcji miejsce_zerowe(0.001) jest 5.4638671875.
testResult = miejsce_zerowe(0.001)==5.4638671875
5.4638671875
miejsce_zerowe(0.001)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zmień kod z ćwiczenia 3 tak, aby badał miejsce zerowe podanej funkcji dla dowolnego zakresu <a, b>
z dowolną dokładnością eps. Sprawdź działanie funkcji dla różnych parametrów.

def f(x): return 2 * x ** 3 - x - 5 # zdefiniuj funkcję # testy
Wynikiem funkcji miejsce_zerowe(2, 10, 0.001) jest 2.0009765625
testResult = miejsce_zerowe(2, 10, 0.001)==2.0009765625
2.0009765625
miejsce_zerowe(2, 10, 0.001)
Wynikiem funkcji miejsce_zerowe(-9, -1, 0.1) jest -1.0625
testResult = miejsce_zerowe(-9, -1, 0.1)==-1.0625
-1.0625
miejsce_zerowe(-9, -1, 0.1)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zmień kod z ćwiczenia 4 tak, aby badał miejsce zerowe podanej funkcji dla dowolnego zakresu <a, b>
z dowolną dokładnością eps. Sprawdź działanie funkcji dla różnych parametrów.

def f(x): return -1/4 * x ** 2 + x + 2 # zdefiniuj funkcję # testy
Wynikiem funkcji miejsce_zerowe(2, 10, 0.001) jest 5.4638671875.
testResult = miejsce_zerowe(2, 10, 0.001)==5.4638671875
5.4638671875
miejsce_zerowe(2, 10, 0.001)
Wynikiem funkcji miejsce_zerowe(-5, 5, 0.1) jest 4.921875
testResult = miejsce_zerowe(-5, 5, 0.1)==4.921875
4.921875
miejsce_zerowe(-5, 5, 0.1)
Rozwiąż ćwiczenie

Zadanie 1Porównywanie ilorazów

Napisz funkcję porownaj(l1, m1, l2, m2), której wynikiem dla danych dwóch liczb l1/m1 oraz l2/m2 będzie 0 – gdy liczby są równe, 1 – gdy pierwsza liczba jest większa od drugiej, lub 2 – gdy druga liczba jest większa od pierwszej. Sprawdź działanie funkcji dla różnych parametrów.

# zdefiniuj funkcję def porownaj(l1, m1, l2, m2): pass # testy
Wynikiem funkcji porownaj(2, 4, 6, 12) jest 0.
testResult = porownaj(2, 4, 6, 12)==0
0
porownaj(2, 4, 6, 12)
Wynikiem funkcji porownaj(4, 4, 99, 100) jest 1.
testResult = porownaj(4, 4, 99, 100)==1
1
porownaj(4, 4, 99, 100)
Wynikiem funkcji porownaj(1, 4, 4, 12) jest 2.
testResult = porownaj(1, 4, 4, 12)==2
2
porownaj(1, 4, 4, 12)
Rozwiąż ćwiczenie

Zadanie 2Szukanie pierwiastka

Napisz program, za pomocą którego znajdziesz  z dokładnością eps i wyznaczysz liczbę kroków potrzebnych, aby otrzymać żądane przybliżenie. Sprawdź działanie funkcji dla  oraz dokładności 0,1, 0,01, 0,001 i 0,0001.

# zdefiniuj funkcję def pierwiastek_ile(x, eps): a = 0 b = x ile = 0 pass # testy
Wynikiem funkcji pierwiastek(2, 0.2) jest 1.375, 4
testResult = pierwiastek(2, 0.2)==1.375, 4
1.375, 4
pierwiastek(2, 0.2)
Wynikiem funkcji pierwiastek(2, 0.02) jest 1.421875, 7
testResult = pierwiastek(2, 0.02)==1.421875, 7
1.421875, 7
pierwiastek(2, 0.02)
Wynikiem funkcji pierwiastek(2, 0.002) jest 1.416015625, 10
testResult = pierwiastek(2, 0.002)==1.416015625, 10
1.416015625, 10
pierwiastek(2, 0.002)
Rozwiąż ćwiczenie

Zadanie 4Metoda Newtona-Raphsona

Innym algorytmem obliczania pierwiastka jest metoda Newtona-Raphsona. Znajdź informacje o tej metodzie i jej zastosowaniach, a następnie zaimplementuj ją do obliczania pierwiastka kwadratowego z liczby i sprawdź, czy jest wydajniejsza od metody połowienia. 

Wskazówka

Znajdowanie pierwiastka kwadratowego można sprowadzić do szukania długości boku kwadratu o zadanym polu.

Szukany jest , czyli bok kwadratu o polu a. Jeżeli zacząć od prostokąta o bokach x i a/x, gdzie za x można przyjąć np. 1, to obliczanie kolejnych przybliżeń x pozwoli znaleźć szukany pierwiastek.

Dokładność można zweryfikować przez wyznaczenie różnicy długości boków prostokąta x a/x.

 

# zdefiniuj funkcję def newton_raphson(a, eps): pass # testy
Wynikiem funkcji newton_raphson(2, 0.1) jest 1.4166666666666665.
testResult = newton_raphson(2, 0.1)==1.4166666666666665
1.4166666666666665
newton_raphson(2, 0.1)
Wynikiem funkcji newton_raphson(2, 0.01) jest 1.4166666666666665.
testResult = newton_raphson(2, 0.01)==1.4166666666666665
1.4166666666666665
newton_raphson(2, 0.01)
Wynikiem funkcji newton_raphson(2, 0.001) jest 1.4142156862745097.
testResult = newton_raphson(2, 0.001)==1.4142156862745097
1.4142156862745097
newton_raphson(2, 0.001)
Rozwiąż ćwiczenie

Pytania quizoweMetoda połowienia

Twój wynik to: /3
  • W czym lepsza jest metoda połowienia w porównaniu z wyszukiwaniem liniowym?
  • Do czego nie można zastosować metody połowienia?
  • Jak zachowuje się przedział poszukiwań na każdym etapie metody połowienia?