Poczuj rachunek ze swoim zmysłem programowania

Opublikowany: 2021-07-08

Wierzę, że ludzie, którzy potrafią kodować — mają zdolność rozumienia bardziej skomplikowanych pojęć niż rachunek różniczkowy. Jednym z powodów, dla których jest wielu utalentowanych programistów, którzy wciąż zmagają się z rachunkiem różniczkowym, nie jest to, że jest to trudne. Dzieje się tak głównie dlatego, że nauczono nas tego w niewłaściwy sposób (wraz z wieloma innymi tematami).

Jeśli w swoim życiu zajmowałeś się kodowaniem — nawet niektórymi zabawkowymi ćwiczeniami, takimi jak generowanie liczb pierwszych, być może robiłeś już podobne rzeczy, które dzieją się w rachunku różniczkowym, ale nigdy nie miałeś okazji się z nimi związać.

Celem tego pisania nie jest nauczenie cię rachunku różniczkowego ani programowania — ale pomoc w łączeniu kilku kropek.

Za chwilę przejdę do kodowania. Ale pozwólcie, że wcześniej omówię trochę tła.

Tempo zmian

Rachunek różniczkowy mówi o „tempie zmian”. Spróbujmy zrozumieć, co to znaczy.

W przypadku zmiany zmiennej (x) szybkość zmiany funkcji jest po prostu zmianą funkcji podzieloną przez zmianę x. Niech wizualizuj z rzeczywistymi liczbami:

Rozważ 2 punkty x=2 i x=6 oraz funkcję y=f(x) = x².

Weź również pod uwagę dx = odległość między tymi 2 punktami na osi X. A dy to odległość między wartościami y dla tych wartości x.

Wtedy tempo zmian w y od x=2 do x=6 wynosi

Obraz rachunku 01

Pochodna

Teraz — pochodna dy/dx to tempo zmian w y dla nieskończenie małej zmiany w x. Ponieważ ta odległość (6–2=4) nie jest nieskończenie mała — nawet bliska, nie możemy nazwać powyższego równania pochodną. Na razie wybierzmy mniejszą liczbę, 0,1 .

Gdy x = 0, y = x² = 0² = 0.

Najbliższy sąsiad w kierunku dodatnim, x = 0,1. Tam y staje się 0,1² = 0,01.

Więc,

Obraz rachunku 02

Spróbujmy jeszcze raz. Najbliższy sąsiad 0,1 w kierunku dodatnim, x = 0,2. Zatem y staje się 0,2² = 0,04. Więc,

Obraz rachunku różniczkowego 03

Jeśli powtórzymy proces jeszcze kilka razy, otrzymamy:

Obraz rachunku różniczkowego 04

Oto plik Excela, jeśli chcesz się z nim bawić.

dx (co jest naszą fikcyjną, nieskończenie małą odległością między dwoma sąsiednimi punktami na osi x) wynosi 0,1 w naszym kontekście.

x odpowiednio rośnie.

y to po prostu x².

dy to odległość między 2 sąsiednimi wartościami y. Na przykład, gdy x= 0,1, odległość między bieżącym y (0,01) a następnym y (0,04) wynosi 0,03 — więc dy wynosi 0,03 przy x=0,1.

dy/dx to dy podzielone przez dx.

dy/dx / x to dy/dx podzielone przez x.

Teraz zauważ, że wraz ze wzrostem x ostatni wiersz zbliża się do 2, co oznacza — tempo zmiany x² względem x zbliża się dwukrotnie do x, czyli 2x .

Pamiętasz pochodną x² względem x? 2x! Znalezienie jakiegoś połączenia?

Czas kodowania

Wypróbujmy w kodzie rzeczy, o których dyskutowaliśmy do tej pory.

Zakładając, że masz już zainstalowany Python, w terminalu uruchom:

pip zainstaluj matplotlib

Następnie uruchom następujący kod Pythona:

Tutaj:

x : zawiera liczby od 0 do 9.

y : kolejna tablica, każdy element jest kwadratem odpowiadającego mu elementu x

dy : Kolejna tablica inicjowana zerami. W tej tablicy umieścimy odległości y.

dydx : kolejna tablica inicjowana zerami. Będzie zawierać wartość dy/dx każdego punktu.

dx : Dość oczywiste — to wielkość kroku. Odległość między 2 kolejnymi liczbami, która zmniejsza się wraz ze wzrostem ROZMIARU. Jeśli ROZMIAR = 10, dx = 1. Jeśli ROZMIAR = 100, dx = 0,1.

Po pierwsze, wyprowadzamy dy dla każdego punktu. Następnie obliczamy z tego dydx.

Zauważ, że:

Obraz rachunku różniczkowego 05

Tutaj pomijamy pierwszą i ostatnią wartość. Pierwsza wartość x to 0, co spowoduje błąd dzielenia zerowego. I nie możemy obliczyć ostatniej wartości dy/dx, ponieważ nie mamy ostatniej wartości dy — ponieważ wymagałoby to następnej dostępnej wartości y, której tutaj nie mamy.

Jeśli wszystko pójdzie dobrze, otrzymasz ten wykres:

Wykres rachunku różniczkowego

Co rozumiesz z fabuły

Jak widzisz, wykres zbliża się do 2. Zwiększ wartość ROZMIAR (co oznacza ustawienie mniejszej wartości dx) i zobacz, jak wykres szybciej zbliża się do 2.

Druga pochodna

Teraz, gdy zaszedłeś tak daleko, jeszcze tylko kilka kroków, aby zrealizować drugą pochodną, ​​która da ci intuicję dla pochodnej dowolnego rzędu.

Jak pamiętasz, druga pochodna to tempo zmian pierwszej pochodnej względem x. Mówiąc najprościej — dy/dx w drugiej pochodnej jest jak y w pierwszej pochodnej.

Zróbmy następujące modyfikacje powyższego kodu:

Zadeklaruj jeszcze 2 tablice:

d2ydx2 : Który będzie reprezentował drugą pochodną:

Obraz rachunku różniczkowego 06

distance_dydx: Aby przedstawić odległość między wartością dy/dx między 2 sąsiednimi punktami

Oto pełny kod drugiej pochodnej:

Po obliczeniu dydx w pętli for wykonujemy kolejną pętlę, aby obliczyć drugą pochodną. Przy pewnym mądrym kodowaniu moglibyśmy obliczyć drugą pochodną w tej samej pętli (spróbuj jako ćwiczenie) — ale umieściłem je tutaj osobno dla jasności.

Zauważ też, że:

Obraz rachunku różniczkowego 07

Podobnie jak w przypadku pierwszej pochodnej, tutaj również pomijamy niektóre wartości. Ostatnie 2 wartości są pomijane, ponieważ druga od ostatniej wymagałaby ostatniej wartości „pierwszej pochodnej”, której nie mogliśmy obliczyć (ponieważ nie mieliśmy dla niej wymaganej wartości y — jak opisano powyżej). Czy to oznacza, że ​​musimy pominąć ostatnie 3 wartości w przypadku trzeciej pochodnej?🤔 — to Ty musisz znaleźć.

Oto wykres wyjściowy:

Wykres rachunku różniczkowego 02

Co tu widzimy?

Jak wiecie z liceum:

Obraz rachunku różniczkowego 08

Teraz, jak widać z powyższego kodu, druga pochodna w większości pozostaje stała, a jeśli ciągle zwiększasz ROZMIAR — zbliża się do 2!

Dlaczego tempo zmian jest ważne

Możesz się zastanawiać:

— Dlaczego przechodzimy przez te wszystkie paskudne kłopoty? Jakie użyteczne informacje otrzymujemy ze stopy zmiany lub pochodnej?

— Dlaczego nie możemy po prostu podążać za tempem zmian za jakąkolwiek kwotę? Dlaczego tylko nieskończenie małe? Jakie informacje otrzymujemy z tempa zmian względem nieskończenie małych , których nie można znaleźć z tempa zmian względem większych wartości?

— Ta nieskończenie mała rzecz wygląda jak hack? Pracowaliśmy z kilkoma małymi liczbami powyżej w porządku — ale na pewno nie w rzeczywistości nieskończenie małymi.

Gdybym pozwolił sobie iść dalej, odszedłbyś, widząc długość tego artykułu i nie zaszedłbyś tak daleko. Może odpowiemy na te pytania kiedyś 😀.