Algorytm Funkcji Liniowej
Implementacja w C++ i Python
Spis Treści
1. Opis Algorytmu
Funkcja liniowa to jedna z podstawowych funkcji matematycznych opisana równaniem y = ax + b,
gdzie a to współczynnik kierunkowy (nachylenie) a b to wyraz wolny (punkt przecięcia z osią Y).
- Współczynnik kierunkowy a
- Wyraz wolny b
- Wartość zmiennej niezależnej x
Na wyjściu zwraca wartość y obliczoną według wzoru y = ax + b.
Charakterystyka
Funkcja liniowa ma następujące właściwości:
- Liniowość: Wykres funkcji jest linią prostą
- Monotoniczność: Funkcja jest rosnąca (a > 0) lub malejąca (a < 0)
- Punkt przecięcia Y: Funkcja przecina oś Y w punkcie (0, b)
- Złożoność obliczeniowa: O(1) – stała, jedynie jedno mnożenie i dodanie
2. Specyfikacja Zadania
| Element | Opis |
|---|---|
| Cel: | Obliczenie wartości funkcji liniowej dla podanych parametrów |
| Dane wejściowe: |
• Liczba rzeczywista a (współczynnik kierunkowy)• Liczba rzeczywista b (wyraz wolny)• Liczba rzeczywista x (argument funkcji)
|
| Dane wyjściowe: | Liczba rzeczywista y będąca wartością funkcji |
| Ograniczenia: |
• Parametry mogą być dowolnymi liczbami rzeczywistymi • Brak ograniczeń dla zakresu wartości |
| Złożoność: | Czasowa: O(1) | Przestrzenna: O(1) |
3. Lista Kroków (Pseudokod)
Algorytm obliczania funkcji liniowej:
- START – Rozpoczęcie algorytmu
-
WCZYTAJ(a, b, x) – Odczytaj współczynnik kierunkowy
a,
wyraz wolnyboraz argumentx -
OBLICZ(iloraz) – Oblicz iloczyn
a * x -
OBLICZ(y) – Oblicz wynik
y = iloraz + b -
WYŚWIETL(y) – Wyświetl wynik
y - STOP – Zakończenie algorytmu
Opis kroków szczegółowych
Krok 1-2: Pobranie danych wejściowych – wartości współczynników i argumentu funkcji
Krok 3: Mnożenie współczynnika kierunkowego przez argument (operacja mnożenia)
Krok 4: Dodanie wyrazu wolnego do wyniku mnożenia (operacja dodawania)
Krok 5: Wyświetlenie rezultatu na ekranie lub zwrócenie wartości
4. Schemat Blokowy
krokami wykonuje się jeden po drugim w określonej kolejności.
5. Implementacja Kodu
5.1 Implementacja w C++
double obliczFunkcjaLiniowa(double a, double b, double x) {
double y = a * x + b;
return y;
}
using namespace std;
double obliczFunkcjaLiniowa(double a, double b, double x) {
return a * x + b;
}
int main() {
double a, b, x, y;
cout << “Podaj współczynnik kierunkowy a: “;
cin >> a;
cout << “Podaj wyraz wolny b: “;
cin >> b;
cout << “Podaj argument funkcji x: “;
cin >> x;
y = obliczFunkcjaLiniowa(a, b, x);
cout << “Wartość funkcji y = “ << y << endl;
return 0;
}
5.2 Implementacja w Python
“””
Oblicza wartość funkcji liniowej y = ax + b
Parametry:
a (float): współczynnik kierunkowy
b (float): wyraz wolny
x (float): argument funkcji
Zwraca:
float: wartość funkcji y
“””
y = a * x + b
return y
“””Oblicza wartość funkcji liniowej y = ax + b”””
return a * x + b
# Program główny
if __name__ == “__main__”:
try:
a = float(input(“Podaj współczynnik kierunkowy a: “))
b = float(input(“Podaj wyraz wolny b: “))
x = float(input(“Podaj argument funkcji x: “))
y = oblicz_funkcja_liniowa(a, b, x)
print(f”Wartość funkcji y = {y}”)
except ValueError:
print(“Błąd: Podano nieprawidłową wartość liczbową!”)
except Exception as e:
print(f”Błąd: {e}”)
5.3 Przykład z testami
return a * x + b
# Przykłady testowe
przykłady = [
{“a”: 2, “b”: 3, “x”: 5}, # Oczekiwany wynik: 13
{“a”: -1, “b”: 10, “x”: 4}, # Oczekiwany wynik: 6
{“a”: 0.5, “b”: 2, “x”: 4}, # Oczekiwany wynik: 4.0
]
for i, test in enumerate(przykłady, 1):
y = oblicz_funkcja_liniowa(test[“a”], test[“b”], test[“x”])
print(f”Test {i}: a={test[‘a’]}, b={test[‘b’]}, x={test[‘x’]} => y={y}”)
6. Porównanie C++ vs Python
| Kryterium | C++ | Python |
|---|---|---|
| Składnia | Ścisła, wymaga typów danych | Dynamiczna, elastyczna |
| Wydajność | Bardzo szybki (kod kompilowany) | Wolniejszy (interpretowany) |
| Czytelność | Bardziej skomplikowana dla początkujących | Bardzo przejrzysta i intuicyjna |
| Deklaracja zmiennych | Wymagana: double a; |
Nie wymagana: a = 0 |
| Obsługa błędów | Wyjątkami (try-catch) | Try-except |
| Łatwość nauki | Trudniejszy dla początkujących | Idealny dla nauczania programowania |
| Zastosowanie | Systemy osadzone, gry, aplikacje wydajnościowe | Data science, AI, prototypowanie, edukacja |
składnię i łatwe zrozumienie algorytmu. C++ natomiast jest preferowany w aplikacjach wymagających
wysokiej wydajności.
Wskazówki Praktyczne
- Walidacja danych: Zawsze sprawdzaj czy dane wejściowe są prawidłowe
- Typy zmiennych: W C++ stosuj
doubledla przeszkości, w Python automatycznie - Dokumentacja: Dodawaj komentarze i dokumentację string (docstring w Python)
- Testy jednostkowe: Testuj algorytm z różnymi wartościami wejściowymi
- Obsługa wyjątków: Przygotuj program na nieoczekiwane dane wejściowe
- Wydajność: Algorytm ma O(1) – idealnie szybki niezależnie od wejścia