Jak / kdy se počet používá v informatice?

Komentáře

  • Nemáme ' přísné zásady pro otázky se seznamem, ale existuje obecná nechuť . Pamatujte také na tuto a tuto diskusi; možná budete chtít vylepšit svoji otázku, abyste se vyhnuli problémům, které jsou tam vysvětleny. Pokud si nejste jisti, jak svou otázku vylepšit, možná vám můžeme pomoci v Computer Science Chat ?
  • Zdá se, že děláte běžnou chybu předpokládat, že obsah každého kurzu musí být relevantní (pro každou kariérní cestu). Někdy jde jen o to, abyste si procvičili, jak určitými způsoby uvažovat.
  • Komentáře nejsou určeny pro rozšířenou diskusi; tato konverzace byla přesunuta do chatu .

odpověď

Napadá mě několik kurzů, které by potřebovaly Calculus, přímo . Pro obvykle povinné obory pro obor Informatika jsem použil odvážnou tvář a pro obvykle volitelné kurzíva.

  • Počítačová grafika / Zpracování obrázků a zde budete také potřebovat analytickou geometrii a lineární algebru, těžce ! Pokud se vydáte touto cestou, možná budete chtít prostudovat nějakou diferenciální geometrii (která má jako minimální předpoklad vícerozměrný počet). Ale budete zde potřebovat kalkulus i pro velmi základní věci: zkuste hledat například „Fourierovu transformaci“ nebo „vlnky“ – to jsou dva velmi základní nástroje pro lidi pracující s obrázky.
  • Optimalizace většinou nelineární, kde základním jazykem používaným k vývoji všeho je multivariační kalkul. Ale i lineární optimalizace těží z kalkulu ( derivace objektivní funkce je naprosto důležitá)
  • Pravděpodobnost / statistika . Nelze je vážně studovat bez vícerozměrný kalkul.
  • Strojové učení , což ve velké míře využívá statistiku (a následně vícerozměrný kalkul)
  • Data Science a související předměty, které také využívají spoustu statistik;
  • Robotika , kde budete muset modelovat fyzické pohyby robota, takže budete potřebovat znát dílčí derivace a přechody.
  • Diskrétní matematika a kombinatorika ( ano! , pro diskrétní počítání možná budete potřebovat Calculus!) – pokud to s generováním funkcí myslíte vážně, budete muset vědět, jak integrovat a odvodit určité vzorce. A to je užitečné pro analýzu algoritmů (viz kniha Sedgewicka a Flajoleta „Analýza algoritmů“). Podobně mohou být Taylorovy řady a počet užitečné při řešení určitých druhů relací opakování, které se používají při analýze algoritmů.
  • Analýza algoritmů , kde použijete pojem limitu hned od začátku (viz notace Landau, „malý $ o $ “ – je to definováno pomocí limitu)

Mohou existovat i další – to je úplně na mé hlavě.

A kromě toho jedna výhoda nepřímo z kurzu Calculus tím, že se naučí rozumně vysvětlovat a vysvětlovat argumenty s technickou přísností. To je cennější než pro studenty obvykle přemýšlejte.

Nakonec – budete potřebovat Calculus, abyste mohli komunikovat s lidmi z jiných Exact Sciences and Engineering. A není neobvyklé, že počítačový vědec potřebuje nejen mluvit, ale také spolupracovat s fyzikem nebo inženýrem.

Komentáře

  • Možná jste měli jinou zkušenost, ale shledal jsem, že kalkul je docela zbytečný pro to, abych se naučil důsledně vysvětlovat a vysvětlovat argumenty. Vyučovalo se to pomocí rote a patternů podobně jako středoškolská algebra a geometrie.Na druhou stranu to byl předpoklad pro několik vyšších matematických tříd, které učily tyto dovednosti, takže předpokládám, že to nebylo ' úplně zbytečné.
  • Můžu se úplně vztahovat k poslednímu bodu (nepřímé výhody). Při práci na teorii programovacích jazyků jsem zřídka používal přímo kalkul. Snad nejpřímější aplikace byla v pravděpodobnostních výpočetních modelech (např. Plotkin & Jonesovy pravděpodobnostní mocenské domény). Můj kurz kalkulů byl přesto hlavně o dokazování věcí, a to bylo velmi, velmi cenné. V každém seriózním programu CS je IMHO nutný jeden nebo dva kurzy matematiky, spolu s některými dalšími matematiky (diskrétní matematika, logika, lineární algebra, numerická analýza, … a případně kategorie, topologie, algebra, …).
  • Zde ' je příklad toho, jak jsem potřeboval počet v počítačové grafice: Funkce hladké interpolace budou mít v zásadě všechny podobu f(0) = 0 , f(1) = 1, f'(0) = f'(1) = 0 a můžete přidat další omezení, na kterých vám záleží, například f'(0.5) = 1. Před malou dobou jsem to použil k odvození několika různých interpolačních polynomů pro vyhlazení obrázků.
  • Robotiku lze pravděpodobně rozšířit na jakýkoli druh fyzikálního modelování (což podle mého názoru pokrývá také CG, pokud jde o osvětlení, takže ať ' se tomu říká kinetické fyzikální modelování). To zahrnuje zrychlení / rychlost, odrazy / pružiny / deformace, PID regulátory, akustiku, gravitaci …
  • Já ' budu nepřímo ukazovat tímto způsobem: lepší než kterákoli třída, kterou dříve absolvují, Calculus učí studenty, že ' jednoduše nepočítá počet problémů a odhadne, kolik práce to bude vyžadovat.

Odpověď

To je poněkud nejasné, ale počet se objeví v algebraických datových typech. Pro jakýkoli daný typ je typ jeho kontextů jedné díry derivací tohoto typu. Přehled celého tématu naleznete v této vynikající přednášce . Toto je velmi technická terminologie, vysvětlíme to.

Algebraické datové typy

Možná jste se setkali s n-ticemi označovanými jako typy produktů (pokud ne, je to proto, že jsou kartézským produktem dvou typů). Budeme to brát doslovně a použijeme notaci:

$$ a * b $$

Představovat n-tice, kde $ a $ a $ b $ jsou oba typy. Dále jste možná narazili typy součtu jedná se o typy, které mohou být buď jednoho typu, nebo jiného (známé jako unie , varianty nebo jako Buď typ (trochu) v Haskellu). Také to vezmeme doslovně a použijeme notaci:

$$ a + b $$

Jsou pojmenovány tak, jak jsou, protože pokud má typ $ a $ $ Hodnoty N_a $ a typ $ b $ $ N_b $ hodnoty, poté typ $ a + b $ $ N_a + N_b $ hodnoty.

Tyto typy vypadají jako normální algebraické výrazy a můžeme je ve skutečnosti jako takové manipulovat (do určité míry).

Příklad

Ve funkčních jazycích je běžná definice seznamu (zde uvedená v Haskellu) tato:

data List a = Empty | Cons a List 

Tím se říká, že seznam je buď prázdný, nebo n-ticí hodnoty a jiného seznamu. Transformujeme to na algebraickou notaci a dostaneme:

$$ L (a) = 1 + a * L (a) $$

Kde $ 1 $ představuje typ s jednou hodnotou (aka typ jednotky). Opakovaným vložením to můžeme vyhodnotit, abychom získali definici $ L (a) $ :

$$ L (a) = 1 + a * L (a) $$ $$ L (a) = 1 + a * (1 + a * L ( a)) $$ $$ L (a) = 1 + a + a ^ 2 * (1 + a * L (a)) $$ $$ L (a) = 1 + a + a ^ 2 + a ^ 3 * (1 + a * L (a)) $$ $$ L (a) = 1 + a + a ^ 2 + a ^ 3 + a ^ 4 + a ^ 5 … $$

(Kde $ x ^ n $ je míněno ve smyslu opakovaného násobení.)

Tato definice pak říká, že seznam je buď jednotka, nebo n-tice jedna položka nebo n-tice dvou položek nebo tří atd., což je definice seznamu!

Kontexty s jedním otvorem

Nyní do kontextů jedné díry: kontext jedné díry získáte, když „vyberete hodnotu“ z typu produktu. Uveďme příklad:

U jednoduché dvojice, která je homogenní, $ a ^ 2 $ , pokud vezmeme hodnotu out , dostaneme pouze n-tici, $ a $ .Existují však dva různé kontexty jedné díry tohoto typu: jmenovitě první a druhá hodnota n-tice. Jelikož se jedná o některou z těchto možností, mohli bychom napsat, že jde o $ a + a $ , což je samozřejmě $ 2 $ . Zde se hraje diferenciace. Pojďme to potvrdit na dalším příkladu:

Vyjmutí hodnoty z trojice dává dvojici, ale existují tři různé varianty:

$$ (a, a, \ _) $$ $$ (a, \ _, a) $$ $$ (\ _, a, a) $$

Podle toho, kam jsme umístili díru. To nám dává $ 3a ^ 2 $ , což je skutečně derivát $ a ^ 3 $ . Obecně o tom existuje důkaz zde .

Pro náš poslední příklad použijeme seznam:

Pokud vezmeme náš původní výraz pro seznam:

$$ L (a) = 1 + a * L (a) $$

Můžeme přeskupit a získat:

$$ L (a) = \ frac {1} {1 – a} $$

(Na povrchu tento se může zdát jako nesmysl, ale pokud si vezmete Taylorovu řadu tohoto výsledku, získáte definici, kterou jsme odvodili dříve.)

Pokud to nyní odlišíme, Zajímavý výsledek:

$$ \ frac {\ částečné L (a)} {\ částečné a} = (L (a)) ^ 2 $$

Takto se z jednoho seznamu stala dvojice seznamů. To ve skutečnosti dává smysl: dva vytvořené seznamy odpovídají prvkům nad a pod otvorem v původním seznamu!

Komentáře

  • To bylo úžasně bystrý. Děkujeme.

Odpověď

Numerické metody. Existují těžkopádné problémy s kalkulem, které jsou jedinečné pro konkrétní aplikace, a které potřebují řešení rychleji, než dokáže člověk bez programu prakticky vyřešit. Někdo musí navrhnout algoritmus, který vypočítá řešení. Není to jediná věc, která odděluje programátory od vědců?

Komentáře

  • Vzhledem k " seznam " povahy této otázky, každá odpověď by se měla pokusit poskytnout úplný obraz. Opravdu chcete tvrdit, že numerické metody jsou instancí pouze ?
  • Komentáře nejsou určeny pro rozšířenou diskusi; tato konverzace byla přesunuta do chatu .

Odpověď

Automatizace – Podobně jako robotika, automatizace může vyžadovat kvantifikaci velkého množství lidského chování.

Výpočty – Hledání řešení důkazů často vyžaduje počet.

Vizualizace – Využití pokročilých algoritmů vyžaduje kalkul jako cos, sine, pi a e. Zvláště když jste kalkulačka tingové vektory, kolizní pole a vytváření sítí.

Logistika a analýza rizik – Určení, zda je úkol možné riziko a možná míra úspěchu.

Zabezpečení – lze zajistit většinu zabezpečení bez počtu; mnoho lidí, kteří chtějí vysvětlení, to však preferují v matematických výrazech.

AI – Základy AI lze použít bez počtu; nicméně výpočet pokročilého chování, inteligence roje / mysli úlu a rozhodování založené na komplexních hodnotách.

Lékařské výpočty – Vizualizace většiny zdravotních dat vyžaduje počet, jako je čtení EKG.

Věda & Engineering – Při práci s téměř jakoukoli jinou vědeckou disciplínou je třeba počítat: Aerospace, Astrology, Biology, Chemistry nebo Engineering.

Mnoho lidí v programování může absolvovat celou svou kariéru bez pomocí kalkulu; může se však ukázat jako neocenitelné, pokud jste ochotni tuto práci provést. Pro mě to bylo nejefektivnější v automatizaci, logistice a vizualizaci. Identifikací konkrétních vzorů můžete vzor jednoduše ignorovat, napodobit nebo vytvořit vynikající metoda dohromady.

Komentáře

  • Jak jsou cos, sine, $ \ pi $ a $ \ mathrm {e} $ kalkul?
  • No, $ \ exp (x) $ lze definovat jako jedinečné řešení $ f (x) = f ' (x) $ s $ f ( 0) = 1 $ a podobně sin, cos lze definovat jako jedinečnou dvojici funkcí splňující $ f ' (x) = g (x) $, $ g ' (x) = -f (x) $ s příslušnými okrajovými podmínkami (myslím, že $ f (0) = 0 $ a $ g (0) = 1 $ by měly fungovat).
  • @DavidRicherby: Příklad: Jak implementujete tyto funkce například na mikrokontrolér bez FPU? Pokud znáte nějaký počet, okamžitě znáte dobrou odpověď: mocninová řada.

Odpověď

Faktem je že je velmi malá šance, že někdy použijete kalkul. Prakticky každá jiná vědecká disciplína však POČÍTÁ a pracujete na vědeckém titulu. Existují určitá očekávání, co má znamenat vysokoškolský vědecký titul, a jednou z těch věcí je, že znáte počet. I když to nikdy nepoužiješ.

Je v pořádku, pokud si počínáš špatně v počtu, ale věnuj trochu úsilí diskrétní matematice. Existuje spousta problémů s programováním v reálném světě, kde do hry vstupuje diskrétní matematika a neznalost jejích principů vás může uvést do rozpaků před ostatními programátory.

Komentáře

  • Váš první odstavec je úplně špatný a hraničí s konspirační teorií. Existuje spousta oblastí výpočetní techniky, kde je kalkul užitečný (jejich nekonečné seznamy najdete v ostatních odpovědích). Jistě, ' je možné se všem těmto oblastem vyhnout, ale ' je velmi zavádějící tvrdit, že klesající počet bude mít nulový dopad stupně.
  • V závislosti na vašem studijním programu byste mohli dokončit titul bez použití kalkulu a já si rozhodně myslím, že CS majori toho tolik nepotřebují ' jak jsme se dostali. Ale špatné chování v něm vás vyloučí z nejzajímavějších oblastí počítačové vědy. ' je spousta času stát se webovým vývojářem, jakmile dokončíte studium; když jste ve škole, proč se nepokusit trochu na sebe tlačit?
  • @tsleyson Pokud chcete být webovým vývojářem, ušetříte si čas a peníze potřebné k získání titulu CS.
  • @ScottB Zdá se, že si pletete počítačovou vědu s programováním.
  • @ScottB Kdo ' říká CS = math + programování? Sám jsem se proti tomuto omezenému pohledu už věky zasazoval. Ale máte to také pozadu: matematika je nedílnou součástí CS, stejně jako fyzika. Potřebujeme to , i když to ' nechceme procvičovat . (To znamená, že toto není místo pro tuto diskusi. Pokud chcete pokračovat, připojte se k nám Computer Science Chat .)

Odpověď

Mnoho lidí již aplikace v CS poskytlo. Ale někdy „najdete Calculus, když to nejméně očekáváte:

Přehodnoceny deriváty regulárních výrazů

Pokud víte zautomatizovat tento soubor PDF může být za přečtení.

Komentáře

  • Nevidím ' žádný diferenciální počet tam; vidím slovo " derivát ", ale ' nic nevidím připomínající tradiční diferenciální počet.
  • Nazývá se ' " formální derivací " a svým způsobem to souvisí s kalkulem. Toto uvidíte také pomocí funkce Generating Functions, některých vzorců souvisejících s diskrétními strukturami a dalších oblastí, kde ' t ve skutečnosti mají " hladkou funkci ".
  • @Jay: Důležité není ' Název. Jak rozumí ng kalkul s tím pomáhá?
  • Je to vysvětleno na této stránce Wikipedie . Formální derivace je operace na prvcích analgebraické struktury, která obsahuje polynomy, a je formálně " docela podobná " obvyklému pravidlu pro rozlišení polynomy – na rozdíl od toho, co vidí student v kalkulu – však polynomy nepřesahují reálné hodnoty; mohou to být polynomy nad libovolnou " prstenem " (další algebraická struktura). A existují praktické aplikace formální derivace – viděl jsem alespoň jednu (Algebraická kryptanalýza – nedokážu si ' zapamatovat podrobnosti).

Odpověď

Některé konkrétnější příklady:

  • Kalkul se používá k odvození delta rule , což umožňuje některým typům neuronových sítí „učit se“.
  • Kalkul lze použít k výpočtu Fourierovy transformace oscilační funkce, což je velmi důležité analýza signálu.
  • Kalkul se neustále používá v počítačové grafice, což je velmi aktivní pole, protože lidé neustále objevují nové techniky. Pro základní příklad vyzkoušejte Kajiyovu vykreslovací rovnici
  • Kalkul je důležitý v oblasti výpočetní geometrie, prozkoumejte křivky a modelování povrchů.

Odpověď

K těmto dalším vynikajícím odpovědím přidávám tento bod: přísnost při testování .

Při vytváření testovacích případů pro některé aplikace jsem musel použít kalkul k předpovědi očekávané doby běhu, velikosti paměti, a zvolit optimální parametry při ladění datových struktur. To zahrnuje pochopení očekávané chyby zaokrouhlování atd.

I když jsou statistiky zmíněny v jiných odpovědích, chtěl bych konkrétně zmínit Monte Carlo algoritmy , jako jsou optimalizační algoritmy a některé skromné streamovací algoritmy založené na matematických principech, které zahrnují kalkul.

Mezi konkrétní odvětví, kde jsem pracoval, kde byl kalkul vyžadován, patří:

  • Finance (vytvoření obchodní platformy)

  • Pojištění (numerická integrace pojistných smluv do scénářů typu „pokud“ pro výpočet očekávaných ztrát pojistky)

  • Logistika (optimalizace konsolidace přepravních cest)

  • Zpracování signálu

Odpověď

Počet – integrální část – se používá přímo v CS jako základ pro přemýšlení o sčítání. Pokud projdete jakoukoli část Knuthovy sekce betonové matematiky o sčítání, rychle poznáte konvence běžné pro kalkul: pochopení některých souvislých případů vám poskytne nástroje pro zvážení diskrétního.

Mnoho použití vaší CS studie zahrnuje programovací systémy, které sledují změny, nebo se v některých případech snaží předpovídat budoucnost. Matematika kolem těchto systémů má kořeny v diferenciálních rovnicích a lineární algebře a diferenciální rovnice jsou … počet. Existují učitelé jako Gibert Strang, který se zasazuje o rychlejší přechod do části diferenciálních rovnic, ale stále jde o podmnožinu počtu. Když změna závisí na změně v jakémkoli systému, začíná být nestabilní (a stabilní) způsoby, které jsou neintuitivní a velmi dobře pochopeno. Abyste pochopili, proč se váš rozumný lineární systém chová nelineárním způsobem, potřebujete nástroje kalkulu nebo je musíte znovu vymyslet pro svůj problémový prostor.

A nakonec CS často vyžaduje čtení a porozumění práci ostatních a počet je první expozicí mnoha sdíleným slovníkům, konvencím a historii.

Komentáře

  • " Mnoho využití vaší studie CS zahrnuje programovací systémy, které sledují změny, nebo se v některých případech pokusím předpovědět budoucnost " – nemyslím si, že by to bylo reprezentativní pro moust CS studia.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *