Ć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; }
Rozwiąż ćwiczenie

Ćwiczenie 1Pierwiastek kwadratowy

Napisz funkcję pierwiastek(double x, double eps), której wynikiem jest z dokładnością eps. Pierwszym argumentem x jest liczba dodatnia większa lub równa 1, a drugim – mała liczba dodatnia, np. 0,00001. Sprawdź działanie funkcji dla parametrów 2 i 0.1 oraz 2 i 0.01.

#include <iostream> #include <cmath> using namespace std; double pierwiastek(double x, double eps) { //zdefiniuj funkcję i sprawdź jej działanie
Rozwiąż ćwiczenie

Ćwiczenie 2Dowolny pierwiastek

Napisz funkcję pierwiastek(double x, int n, double eps), której wynikiem jest z dokładnością eps. Pierwszym argumentem x jest liczba dodatnia większa lub równa 1, drugim – stopień pierwiastka, a trzecim – mała liczba dodatnia, np. 0,00001. Sprawdź działanie funkcji dla parametrów 2, 2 i 0.1 oraz 2, 3 i 0.01.

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; double pierwiastek(double x, int n, double eps) { //zdefiniuj funkcję i sprawdź jej działanie
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; } double miejsce_zerowe(double eps) { //zdefiniuj funkcję i sprawdź jej działanie
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.

#include <iostream> #include <cmath> using namespace std; double f(double x) { return -1.0/4 * x * x + 2* x + 2; } double miejsce_zerowe(double eps) { //zdefiniuj funkcję i sprawdź jej działanie
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 1Metoda Newtona-Raphsona

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; double newton_raphson(double a, double eps) { //zdefiniuj funkcję i sprawdź jej działanie
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

Ćwiczenie dodatkowe 1

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

  • Wynikiem funkcji porownaj(1, 2, 3, 4) jest 2.
  • Wynikiem funkcji porownaj(100, 100, 5, 5) jest 0.
#include <iostream> using namespace std; int porownaj(int l1, int m1, int l2, int m2) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji porownaj(2, 4, 6, 12) jest 0.
return porownaj(2, 4, 6, 12)==0;
0
porownaj(2, 4, 6, 12)
Wynikiem funkcji porownaj(4, 4, 99, 100) jest 1.
return porownaj(4, 4, 99, 100)==1;
1
porownaj(4, 4, 99, 100)
Wynikiem funkcji porownaj(1, 4, 4, 12) jest 2.
return porownaj(1, 4, 4, 12)==2;
2
porownaj(1, 4, 4, 12)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

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

#include <iostream> #include <cmath> using namespace std; double pierwiastek_ile(double x, double eps) { //zdefiniuj ciąg dalszy funkcji i sprawdź jej działanie
Wynikiem funkcji pierwiastek_ile(2.0, 0.2) jest 4.
return pierwiastek_ile(2.0, 0.2)==4;
4
pierwiastek_ile(2.0, 0.2)
Wynikiem funkcji pierwiastek_ile(2.0, 0.02) jest 7.
return pierwiastek_ile(2.0, 0.02)==7;
7
pierwiastek_ile(2.0, 0.02)
Wynikiem funkcji pierwiastek_ile(2.0, 0.002) jest 10.
return pierwiastek_ile(2.0, 0.002)==10;
10
pierwiastek_ile(2.0, 0.002)
Rozwiąż ćwiczenie