Wiele programów informatycznych wymaga dwóch lub trzech klas rachunku różniczkowego.
Zastanawiam się, jak i kiedy stosuje się rachunek różniczkowy w informatyce? Treść CS pewnego stopnia w dziedzinie informatyki zwykle koncentruje się na algorytmach, systemach operacyjnych, strukturach danych, sztucznej inteligencji, inżynierii oprogramowania itp. Czy zdarzają się sytuacje, w których Rachunek jest przydatny w tych lub innych obszarach informatyki?
education
mathematical-analysis
Zwycięzca
źródło
źródło
Odpowiedzi:
Mogę wymyślić kilka kursów, które bezpośrednio wymagałyby rachunku różniczkowego . Użyłem pogrubionej twarzy w przypadku zwykle obowiązkowych dyscyplin w zakresie informatyki, a kursywą w przypadku zwykle opcjonalnych.
Mogą być też inne - to jest tuż nad moją głową.
Poza tym pośrednio korzysta się z kursu Rachunku Rachunkowego, ucząc się rozumowania i wyjaśniania argumentów z techniczną dyscypliną. Jest to cenniejsze, niż zwykle myślą uczniowie.
Wreszcie - będziesz potrzebować Calculus, aby, cóż, wchodzić w interakcje z ludźmi z innych ścisłych nauk i inżynierii. I nierzadko informatyk musi nie tylko rozmawiać, ale także współpracować z fizykiem lub inżynierem.
źródło
f(0) = 0
,f(1) = 1
,f'(0) = f'(1) = 0
, i można dodawać żadnych innych ograniczeń, na których Ci zależy, na przykładf'(0.5) = 1
. Jakiś czas temu wykorzystałem to do uzyskania różnych wielomianów interpolacyjnych do wygładzania obrazów.Jest to nieco niejasne, ale rachunek różniczkowy pojawia się w algebraicznych typach danych. Dla dowolnego typu typ kontekstów z jednym otworem jest pochodną tego typu. Zobacz tę doskonałą rozmowę, aby uzyskać przegląd całego tematu. To bardzo techniczna terminologia, więc wyjaśnijmy.
Algebraiczne typy danych
Być może natrafiłeś na krotki określane jako typy produktów (jeśli nie, to dlatego, że są to kartezjańskie produkty dwóch rodzajów). Przyjmiemy to dosłownie i użyjemy zapisu:
Do reprezentowania krotki, gdzie i są oba typy. Następnie możesz natknąć się na typy sum, są to typy, które mogą być albo jednym rodzajem, albo drugim (znanym jako związki , warianty lub jako oba typy (rodzaj) w Haskell). Weźmiemy to również dosłownie i użyjemy zapisu:a b
Są one nazywane jakimi są, ponieważ jeśli typ ma wartości , a typ ma wartości , to typ ma wartości .a Na b Nb a+b Na+Nb
Te typy wyglądają jak normalne wyrażenia algebraiczne i możemy w rzeczywistości nimi manipulować (do pewnego stopnia).
Przykład
W językach funkcjonalnych powszechną definicją listy (podaną tutaj w Haskell) jest:
Oznacza to, że lista jest pusta lub krotka wartości i inna lista. Przekształcając to w notację algebraiczną, otrzymujemy:
Gdzie oznacza typ o jednej wartości (inaczej typ jednostki). Przez wielokrotne wstawianie możemy to ocenić, aby uzyskać definicję :1 L(a)
(Gdzie oznacza wielokrotne mnożenie).xn
Ta definicja mówi wtedy, że lista jest albo jednostką, albo krotką jednego elementu, albo krotką dwóch elementów, albo trzech itd., Co jest definicją listy!
Konteksty z jednym otworem
Przejdźmy teraz do kontekstów z jednym dołkiem: kontekst z jednym dołkiem jest tym, co dostajesz, gdy „bierzesz wartość” z rodzaju produktu. Podajmy przykład:
Dla prostego 2-krotek, który jest jednorodny, , jeśli weźmiemy wartość, otrzymamy po prostu 1-krotkę, . Istnieją jednak dwa różne konteksty z jednym otworem tego typu: mianowicie pierwsza i druga wartość krotki. Skoro jest to którykolwiek z nich, moglibyśmy napisać, że jest , czyli oczywiście . Tutaj właśnie pojawia się zróżnicowanie. Potwierdźmy to innym przykładem:a2 a a+a 2a
Wyciągnięcie wartości z 3-krotek daje 2-krotkę, ale istnieją trzy różne warianty:
W zależności od tego, gdzie umieszczamy otwór. To daje nam która jest rzeczywiście pochodną . Jest dowodem na to w ogóle tutaj .3a2 a3
W naszym ostatnim przykładzie użyjmy listy:
Jeśli weźmiemy nasze oryginalne wyrażenie na listę:
Możemy zmienić układ, aby uzyskać:
(Na pierwszy rzut oka może to wydawać się nonsensem, ale jeśli weźmiesz serię Taylor tego wyniku, otrzymasz definicję, którą wyprowadziliśmy wcześniej.)
Jeśli to rozróżnimy, otrzymamy ciekawy wynik:
Tak więc jedna lista stała się parą list. Ma to w rzeczywistości sens: dwie wytworzone listy odpowiadają elementom powyżej i poniżej dziury na oryginalnej liście!
źródło
Metody numeryczne. Istnieją kłopotliwe problemy z kamieniami nazębnymi, które są unikalne dla określonych aplikacji i potrzebują rozwiązań szybciej niż człowiek jest w stanie rozwiązać praktycznie bez programu. Ktoś musi zaprojektować algorytm, który obliczy rozwiązanie. Czy to nie jedyna rzecz, która oddziela programistów od naukowców?
źródło
Automatyzacja - podobnie jak robotyka, automatyzacja może wymagać ilościowego określenia wielu ludzkich zachowań.
Obliczenia - Znalezienie rozwiązań dla dowodów często wymaga rachunku różniczkowego.
Wizualizacje - wykorzystanie zaawansowanych algorytmów wymaga rachunku różniczkowego, takiego jak cos, sinus, pi i e. Zwłaszcza podczas obliczania wektorów, pól kolizji i tworzenia siatki.
Logistyka i analiza ryzyka - Określenie, czy dane zadanie jest możliwe, związane z nim ryzyko i możliwa stopa sukcesu.
Bezpieczeństwo - Większość zabezpieczeń można wykonać bez rachunku; jednak wiele osób, które chcą wyjaśnień, woli je w wyrażeniach matematycznych.
AI - Podstawy AI można wykorzystać bez rachunku; jednak obliczanie zaawansowanego zachowania, inteligencji roju / umysłu ula i podejmowania decyzji opartych na złożonych wartościach.
Obliczenia medyczne - Wizualizacja większości danych zdrowotnych wymaga rachunku, takiego jak odczyt EKG.
Nauka i inżynieria - podczas pracy z prawie każdą inną dyscypliną naukową wymaga rachunku: kosmonautyka, astrologia, biologia, chemia lub inżynieria.
Wiele osób zajmujących się programowaniem może przejść całą swoją karierę bez rachunku różniczkowego; może jednak okazać się bezcenny, jeśli chcesz wykonać pracę. Dla mnie jest najbardziej skuteczny w automatyce, logistyce i wizualizacji. Identyfikując określone wzorce, możesz po prostu zignorować wzór, naśladować wzór lub wspólnie opracować lepszą metodę.
źródło
Faktem jest, że istnieje bardzo mała szansa, że kiedykolwiek użyjesz rachunku różniczkowego. Jednak praktycznie każda inna dyscyplina naukowa korzysta z rachunku różniczkowego i pracujesz nad stopniem naukowym. Istnieją pewne oczekiwania co do znaczenia uniwersyteckiego stopnia naukowego, a jedną z tych rzeczy jest to, że znasz rachunek różniczkowy. Nawet jeśli nigdy go nie użyjesz.
W porządku, jeśli źle radzisz sobie z rachunkiem różniczkowym, ale upewnij się, że włożyłeś trochę wysiłku w dyskretną matematykę. Istnieje wiele rzeczywistych problemów programistycznych, w których pojawia się dyskretna matematyka, a nieznajomość jej zasad może zawstydzić Cię przed innymi programistami.
źródło
Wiele osób już dostarczyło aplikacje w CS. Ale czasami znajdziesz Rachunek, gdy najmniej się spodziewasz:
Ponownie zbadane pochodne o regularnej ekspresji
Jeśli znasz automaty, ten plik PDF może być wart przeczytania.
źródło
Kilka bardziej szczegółowych przykładów:
źródło
Do tych innych doskonałych odpowiedzi dodam ten punkt: rygor w testowaniu .
Podczas tworzenia przypadków testowych dla niektórych aplikacji musiałem użyć rachunku różniczkowego, aby przewidzieć oczekiwane czasy działania, rozmiary pamięci i wybrać optymalne parametry podczas dostrajania struktur danych. Obejmuje to zrozumienie oczekiwanego błędu zaokrąglenia itp.
Chociaż statystyki są wspomniane w innych odpowiedziach, chciałbym w szczególności wspomnieć o algorytmach Monte-Carlo , takich jak algorytmy optymalizacji i niektóre oszczędne algorytmy strumieniowania oparte na zasadach matematycznych, które obejmują rachunek różniczkowy.
Konkretne branże, w których pracowałem, w których wymagany był rachunek różniczkowy, obejmują:
Finanse (tworzenie platformy handlowej)
Ubezpieczenia (numeryczna integracja polis ubezpieczeniowych w scenariuszach „co jeśli”, aby obliczyć oczekiwane straty polis)
Logistyka (optymalizacja konsolidacji tras transportowych)
Przetwarzanie sygnałów
źródło
Rachunek całkowy - część integralna - jest wykorzystywany bezpośrednio w CS jako podstawa do myślenia o sumowaniu. Jeśli przejrzysz dowolną część sekcji Matematyki konkretnej Knutha na temat sumowania, szybko rozpoznasz konwencje wspólne dla rachunku różniczkowego: zrozumienie niektórych ciągłych przypadków daje ci narzędzia do rozważenia dyskrecji.
Wiele zastosowań twojego badania CS obejmuje systemy programowania, które monitorują zmiany, aw niektórych przypadkach próbują przewidzieć przyszłość. Matematyka wokół tych układów jest zakorzeniona w równaniach różniczkowych i algebrze liniowej, a równania różniczkowe są ... rachunkiem różniczkowym. Są nauczyciele tacy jak Gibert Strang, którzy opowiadają się za szybszym przejściem do części równań różniczkowych, ale wciąż jest to podzbiór rachunku różniczkowego. Kiedy zmiana zależy od zmiany w dowolnym systemie, zaczyna być niestabilna (i stabilna) w sposób, który jest nieintuicyjny i bardzo dobrze zrozumiany. Aby zrozumieć, dlaczego twój rozsądny układ liniowy zachowuje się w nieliniowy sposób, potrzebujesz narzędzi rachunku różniczkowego lub musisz je na nowo wymyślić dla swojej przestrzeni problemów.
I wreszcie, CS często wymaga czytania i rozumienia pracy innych, a rachunek różniczkowy i matematyczny jest pierwszą ekspozycją na wiele wspólnych słowników, konwencji i historii.
źródło