Fale dźwiękowe

O scenariuszu

Scenariusz ten jest materiałem do przeprowadzenie co najmniej 2h zajęć lekcyjnych z czego:

  • 1h w pracowni fizycznej:
    • wykład
    • wykonanie doświadczenia
  • 1h lub 2h w pracowni komputerowej:
    • zademonstrowanie odpowiednich metod numerycznych
    • omówienie wyników ćwiczeń i konsultacje

Materiał został opracowany w ramach projektu iCSE4school na podstawie lekcji prowadzonych w latach 2015-2017 w III Liceum Ogólnokształcącym im. Stefana Batorego w Chorzowie przez Adama Ogazę.

Niniejsza lekcja została przetestowana trzykrotnie na uczniach zgłębiających fizykę na poziomie rozszerzonym (wiek 17 lat). W roku 2015 liczebność grupy wynosiła 14 osób, w 2016: 21 osób, a w roku 2017: 16 osób. Lekcja została poprzedzona kursem podstaw programowania w języku Python i składa się z 2 części: wstępu teoretycznego i warsztatów komputerowych. Obie części zostały sfilmowane w roku 2015 i opublikowane na Youtube z angielskimi napisami.

Uwaga!

W każdym z okien programu można zmieniać liczby, tekst, zmienne lub cały kod. Nie trzeba się martwić, jeśli program przestanie działać, bo po odświeżeniu strony powróci do ustawień początkowych. Często następny kod wynika z poprzedniego, więc należy ćwiczenia (algorytmy) wykonywać według kolejności.

Wstęp

Główne cele lekcji są następujące:

  • Wyjaśnienie, czym jest dźwięk.
  • Wyjaśnienie, czym jest akustyka, na jakie działy się dzieli i dlaczego?
  • Zdefiniowanie wszystkich wielkości fizycznych i fizjologicznych opisujących dźwięk.
  • Przedstawienie podstawowej wiedzy dotyczącej widma dźwięku.
  • Ćwiczenia w rysowaniu wykresów w Pythonie.
  • Pokazanie, że każda funkcja okresowa może być przedstawiona jako kombinacja liniowa funkcji sinus.
  • Przećwiczenie interaktów i suwaków w Pythonie.

Przygotowując tą lekcję należy wziąć pod uwagę następujące okoliczności:

  • Na poziomie szkoły średniej uczniowie nie potrafią całkować. Słyszeli już o całkowaniu i jego zastosowaniach, ale przeprowadzanie obliczeń na poziomie wymaganym przez transformatę Fouriera daleko wykracza poza ich możliwości. Dlatego rzeczywiste obliczenia należy zastąpić prostą zabawą z amplitudami poszczególnych harmonicznych.
  • Jest to pierwszy kontakt uczniów z takimi pojęciami jak @interact i suwak. Problemy techniczne same w sobie są trudne do przezwyciężenia, dlatego nie ma sensu przesadnie komplikować fizycznej strony zagadnienia.
  • Niniejsza lekcja (podobnie jak wszystkie inne) powinna być atrakcyjna, dlatego należy dążyć do uzyskiwania spektakularnych rezultatów możliwie prostymi środkami.
  • Poziom trudności przykładów powinien stopniowo wzrastać w miarę upływu lekcji. Dobrym pomysłem jest pokazywanie alternatywnych rozwiazań tego samego problemu.

Część teoretyczna

Ćwiczenia w programowaniu zostały poprzedzone lekcją teoretyczną o falach dźwiękowych, opublikowaną pod adresem: https://youtu.be/dp-ajKHs6WU

Główne problemy dyskutowane na wykładzie są następujące:

  • Definicja fali dźwiękowej.
  • Zapowiedź, że pewne idee przedstawione na wykładzie zostaną później rozwinięte na zajęciach komputerowych z użyciem Sage i Pythona.
  • Definicja akustyki i wyjaśnienie istoty akustyki fizycznej i fizjologicznej.
  • Infradźwięki i ultradźwięki.
  • Częstotliwość / długość fali i ich związek z wysokością tonu.
  • Widmo dźwięku i jego związek z barwą.
  • Prawo Webera - Fechnera.
  • Natężenie dźwięku i jego związek z głośnością (audiogram).
  • Faza dźwięku i jej związek z wrażeniami przestrzennymi.

Podczas lekcji wykorzystywano komputerowy generator akustyczny (program dołączony do jednego z podręczników) do przedstawiania związku wysokości tonu z częstotliwością. Posiadał również opcje demonstrowania, jak zmiana kształtu sygnału wpływa na widmo i barwę dźwięku. Uczniowie zostali poinformowani, że będą używać Pythona do ilustrowania kształtu sygnału złożonego, w zależności od amplitud indywidualnych harmonicznych.

Część informatyczna

Część informatyczna lekcji została przeprowadzona w pracowni komputerowej, sfilmowana i umieszczona pod adresem: https://youtu.be/0fVgRy6CpWQ

Film ten, nakręcony w roku 2015, pokazuje wcześniejszą wersję programu. Poniżej przedstawiona jest wersja udoskonalona.

Przykładowa funkcja złożona, zdefiniowana w sposób statyczny

Funkcja ta sama, jak wyżej, lecz uzyskana z użyciem innych środków.

Inna wersja tej samej funkcji, lecz teraz poszczególne amplitudy są sterowane za pomocą suwaków.

Z uwagi na to, że uczniowie pracowali z wcześniejszą wersją Sage, nie mogliśmy użyć gotowej funkcji histogram. W zamian zaproponowałem jej własną wersję.

Dekompozycja przykładowej funkcji z użyciem transformaty Fouriera.

Podobna analiza zastosowana dla funkcji piłokształtnej i pozostałych funkcji dostępnych w generatorze akustycznym pokazanym na filmie.

Z użyciem elementu @interact, powyższe segmenty kodu można połączyć jak poniżej. Teraz uczniowie mogą dokonywać prób z różnymi postaciami sygnału:

Sterowaniu może też podlegać ilość iteracji. W poniższym przykładzie, pętla nakłada na siebie wykresy funkcji i wyświetla ich sumę wraz ze składnikami:

Poniższa pętla tworzy falę złożoną, zbudowaną z harmonicznych o amplitudach odwrotnie proporcjonalnych do ich częstotliwości. Liczba iteracji jest sterowana suwakiem. Funkcje pokazane wyżej są do siebie dodawane, a wyświetlana jest ich suma.

Ten sam efekt uzyskany bez iteracji.

Wnioski

Użycie Pythona doprowadziło uczniów do lepszego zrozumienia istoty widma dźwięku. W szkole średniej uczniowie nie znaja transformaty Fouriera - temat ten wykracza daleko poza podstawę programową. Dzięki powyższym programom, w zasadzie bawiąc się, dokonują wielkiego odkrycia, że każda funkcja okresowa o poprawnej symetrii (co ma miejsce w kontekście fal akustycznych), może zostać przedstawiona jako kombinacja liniowa funkcji sinus.

Z drugiej strony, uczestnicy lekcji mieli możliwość nauczenia się podstawowych metod tworzenia wykresów w sposób interaktywny, co było dla nich nowością. Temat „widmo dźwięku” stał sie mniej abstrakcyjny, ponieważ uczniowie bawili sie nim własnymi rękami.

Z moich obserwacji wynika, że uczniowie z radością używają gotowych narzędzi zawartych w tym dokumencie, natomiast nie są zdolni do ich twórczego rozwinięcia. Moje próby zachęcenia uczniów do udoskonalenia powyższego kodu nie powiodły się.