🇵🇱 Generator wykresów funkcji

WPROWADZENIE

Matematyka bywa abstrakcyjna, ale nic nie pomaga jej zrozumieć tak bardzo, jak dobry wykres. Dzięki połączeniu bibliotek Matplotlib i NumPy, stworzyłeś narzędzie, które w ułamku sekundy zamienia tekstowe równanie w profesjonalną ilustrację. Ten program to idealny przykład na to, jak kod może ułatwić naukę i analizę danych.

Zasada działania

Program to interaktywny generator wykresów funkcji, zaprojektowany z myślą o środowisku Google Colab lub Jupyter Notebook. Użytkownik nie musi edytować skomplikowanego kodu – wystarczy wpisać wzór funkcji $$3x^2 lub sin(x)$$ oraz wybrać zakres osi X za pomocą suwaka. Narzędzie automatycznie interpretuje zapis matematyczny i generuje czytelny, estetyczny wykres z siatką i legendą.

Pomysły na zastosowanie

Ten skrypt to nie tylko ciekawostka programistyczna, ale realna pomoc w wielu dziedzinach:

  • Pomoc w nauce (Edutainment): Szybkie sprawdzanie wyników zadań domowych z analizy matematycznej lub naukę o tym, jak współczynniki $$a$$ w funkcji $$ax^2$$) wpływają na kształt paraboli.
  • Analiza przebiegu zmienności funkcji: Wizualizacja miejsc zerowych, ekstremów oraz asymptot w szerokim zakresie danych.
  • Szybkie prototypowanie: Zamiast używać ciężkich programów typu WolframAlpha czy GeoGebra, możesz błyskawicznie wygenerować wykres bezpośrednio w swoim środowisku programistycznym.
  • Tworzenie materiałów edukacyjnych: Możliwość łatwego wygenerowania grafik do prezentacji lub artykułów naukowych.

KOD W JĘZYKU PYTHON

import matplotlib.pyplot as plt
import numpy as np
import re

#@title Generator Wykresów Funkcji { run: "auto" }
#@markdown Wpisz wzór funkcji poniżej i naciśnij Enter lub przycisk odtwarzania po lewej.

formula_input = "3x^3" #@param {type:"string"}
zakres_x = 33 #@param {type:"slider", min:1, max:100, step:1}

def parse_formula(formula):
    """Konwertuje wzór na format czytelny dla Pythona."""
    formula = formula.replace('^', '**')
    # Wstawia * między cyfrę a x (np. 2x -> 2*x)
    formula = re.sub(r'(\d)([a-zA-Z(])', r'\1*\2', formula)
    return formula

def draw_plot(formula_input, x_range):
    try:
        formula_eval = parse_formula(formula_input)

        # Definicja zakresu x
        x = np.linspace(-x_range, x_range, 400)

        # Dozwolone funkcje matematyczne
        allowed_names = {
            "x": x,
            "sin": np.sin,
            "cos": np.cos,
            "tan": np.tan,
            "sqrt": np.sqrt,
            "exp": np.exp,
            "log": np.log,
            "pi": np.pi,
            "abs": np.abs
        }

        y = eval(formula_eval, {"__builtins__": {}}, allowed_names)

        # Tworzenie wykresu
        plt.figure(figsize=(10, 6))
        plt.plot(x, y, label=f'f(x) = {formula_input}', color='blue', linewidth=2)

        plt.title(f"Wykres funkcji: {formula_input}", fontsize=14)
        plt.xlabel("Oś X")
        plt.ylabel("Oś Y")

        # Osie współrzędnych
        plt.axhline(0, color='black', linewidth=1)
        plt.axvline(0, color='black', linewidth=1)

        plt.grid(True, linestyle='--', alpha=0.6)
        plt.legend()

        # Ustawienie limitów osi Y dla lepszej czytelności (opcjonalne)
        if isinstance(y, np.ndarray):
            y_min, y_max = np.nanmin(y), np.nanmax(y)
            if not np.isinf(y_min) and not np.isinf(y_max):
                plt.ylim(max(y_min - 1, -x_range*2), min(y_max + 1, x_range*2))

        plt.show()

    except Exception as e:
        print(f"BŁĄD: Nie można narysować wykresu. Sprawdź wzór.\nSzczegóły: {e}")

# Uruchomienie rysowania
draw_plot(formula_input, zakres_x)

⬆️⬆️⬆️ Zobacz w Google Colaboratory


JAK DZIAŁA PROGRAM?

Działanie programu można podzielić na cztery kluczowe etapy:

  1. Pobranie i czyszczenie danych (Parsing): Program przyjmuje wzór w formacie „przyjaznym dla człowieka” (np. $$x^2$$). Funkcja parse_formula zamienia go na format zrozumiały dla Pythona, zmieniając symbol potęgowania ^ na ** oraz dodając brakujące znaki mnożenia (np. zamiana 2x na 2*x).
  2. Przygotowanie dziedziny: Za pomocą np.linspace program tworzy gęstą listę 400 punktów na osi X w zakresie wybranym przez użytkownika. Dzięki temu krzywe na wykresie są gładkie.
  3. Bezpieczne obliczenia: Funkcja eval() oblicza wartości Y dla każdego punktu X. Co ważne, program korzysta z białej listy dozwolonych funkcji (jak sin, cos, log), co zwiększa bezpieczeństwo i zapobiega błędom przy wpisywaniu komend.
  4. Renderowanie obrazu: Biblioteka Matplotlib rysuje wynik. Program automatycznie dodaje osie współrzędnych, siatkę pomocniczą oraz inteligentnie dopasowuje limity osi Y, aby wykres był zawsze czytelny i nie „uciekał” poza ekran przy bardzo dużych wartościach.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *