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.
#include <iostream> using namespace std; int ile(int zakres) { int licznik = 1; while (zakres > 0) { zakres = zakres / 2; licznik += 1; } return licznik; } int main() { cout << ile(10) << endl; cout << ile(100) << endl; return 0; }
Wynikiem funkcji ile(2) jest 2.
return ile(2)==2;
2
ile(2)
Wynikiem funkcji ile(22) jest 5.
return ile(22)==5;
5
ile(22)
Wynikiem funkcji ile(201) jest 8.
return ile(201)==8;
8
ile(201)
Rozwiąż ćwiczenie

Ćwiczenie 1Pierwiastek kwadratowy

Zdefiniuj funkcję pierwiastek(double x, double 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 funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji pierwiastek(2.0, 0.1) jest 1.4375.
  • Wynikiem funkcji pierwiastek(2.0, 0.01) jest 1.41406.
  • Wynikiem funkcji pierwiastek(2.0, 0.00001) jest 1.41421.
#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję double pierwiastek(double x, double eps) { } int main() { // sprawdź działanie funkcji return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 2Dowolny pierwiastek

Zdefiniuj funkcję pierwiastek(double x, int n, double 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 funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji pierwiastek(2, 2, 0.1) jest 1.4375.
  • Wynikiem funkcji pierwiastek(2, 3, 0.01) jest 1.25781.
  • Wynikiem funkcji pierwiastek(2, 4, 0.001) jest 1.18848.

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

#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję double pierwiastek(double x, int n, double eps) { } int main() { // sprawdź działanie funkcji return 0; }
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.

#include <iostream> #include <cmath> using namespace std; double f(double x) { return 2 * x * x * x - x - 5; } // zdefiniuj funkcję double miejsce_zerowe(double eps) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji miejsce_zerowe(0.001) jest 1.47934
return miejsce_zerowe(0.001)==1,47934;
1,47934
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.

#include <iostream> #include <cmath> using namespace std; double f(double x) { return -1.0/4 * x * x + 2 * x + 2; } // zdefiniuj funkcję double miejsce_zerowe(double eps) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji miejsce_zerowe(0.001) jest 5.46387.
return miejsce_zerowe(0.001)==5,46387;
5,46387
miejsce_zerowe(0.001)
Rozwiąż ćwiczenie

Zadanie 1Porównywanie ilorazów

Napisz funkcję porownaj(int l1, int m1, int l2, int 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.

#include <iostream> using namespace std; // zdefiniuj funkcję int porownaj(int l1, int m1, int l2, int m2) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji porownaj(3, 4, 6, 8) jest 0.
return porownaj(3, 4, 6, 8)==0;
0
porownaj(3, 4, 6, 8)
Wynikiem funkcji porownaj(5, 7, 2, 3) jest 1.
return porownaj(5, 7, 2, 3)==1;
1
porownaj(5, 7, 2, 3)
Wynikiem funkcji porownaj(2, 5, 3, 4) jest 2.
return porownaj(2, 5, 3, 4)==2;
2
porownaj(2, 5, 3, 4)
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 podanych poniżej parametrów.

  • Wynikiem funkcji pierwiastek_ile(3.0, 0.1) jest 1.78125 5.
  • Wynikiem funkcji pierwiastek_ile(3.0, 0.01) jest 1.72852 9.
  • Wynikiem funkcji pierwiastek_ile(3.0, 0.001) jest 1.73218 12.
  • Wynikiem funkcji pierwiastek_ile(3.0, 0.0001) jest 1.73209 15.
#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję void pierwiastek_ile(double x, double eps) { } int main() { // sprawdź działanie funkcji return 0; }
Rozwiąż ćwiczenie

Zadanie 3Metoda 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.

#include <iostream> using namespace std; // zdefiniuj funkcję double newton_raphson(double a, double eps) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji newton_raphson(2, 0.1) jest 1.41667.
return newton_raphson(2, 0.1)==1,41667;
1,41667
newton_raphson(2, 0.1)
Wynikiem funkcji newton_raphson(2, 0.01) jest 1.41667.
return newton_raphson(2, 0.01)==1,41667;
1,41667
newton_raphson(2, 0.01)
Wynikiem funkcji newton_raphson(2, 0.001) jest 1.41422.
return newton_raphson(2, 0.001)==1,41422;
1,41422
newton_raphson(2, 0.001)
Rozwiąż ćwiczenie

Pytania quizoweMetoda połowienia

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