Kuinka / milloin laskentaa käytetään tietojenkäsittelytieteessä?

kommentit

  • Emme ' ole tiukkoja käytäntöjä luettelokysymyksiin, mutta on olemassa ei pidä . Huomaa myös tämä ja tämä keskustelu; haluat ehkä parantaa kysymystäsi välttääksesi siinä selitetyt ongelmat. Jos et ole varma, kuinka voit parantaa kysymystäsi, voimme auttaa sinua tietojenkäsittelytietokeskustelussa ?
  • Näytät tekevän yleisen virheen olettaa, että jokaisen kurssin sisällön on oltava merkityksellistä (jokaiselle urapolulle). Joskus on kyse vain siitä, kuinka kouluttaa sinua ajattelemaan tietyillä tavoilla.
  • Kommentit eivät ole laajempaa keskustelua varten; tämä keskustelu on siirretty chatiin .

Vastaa

Voin ajatella muutamia kursseja, jotka tarvitsevat laskennan, suoraan . Olen käyttänyt lihavoituja kasvoja tietojenkäsittelytieteen tutkinnon yleensä pakollisissa tieteenaloissa ja kursivointia yleensä valinnaisissa tieteissä.

  • Tietokonegrafiikka / Kuvankäsittely, ja tässä tarvitset myös analyyttisen geometrian ja lineaarisen algebran, voimakkaasti ! Jos menet tätä polkua pitkin, saatat haluta tutkia myös erilaista geometriaa (jonka vähimmäisedellytyksenä on monivaiheinen laskenta). Mutta tarvitset laskutoimituksen täällä jopa hyvin perustaviin asioihin: yritä etsiä esimerkiksi ”Fourier Transform” tai ”Wavelets” – nämä ovat kaksi erittäin perustavaa työkalua kuvien kanssa työskenteleville ihmisille.
  • Optimointi , lähinnä epälineaarinen, jossa monimuuttujainen Calculus on peruskeeli, jota käytetään kaiken kehittämiseen. Mutta jopa lineaarinen optimointi hyötyy Calculuksesta ( johdannainen kohdefunktiosta on ehdottoman tärkeä)
  • Todennäköisyys / Tilastot . Näitä ei voida tutkia vakavasti ilman monimuuttujalaskelma.
  • koneoppiminen , joka käyttää runsaasti tilastoja (ja siten monimuuttujalaskentaa)
  • datatiede aiheeseen liittyvät aiheet, joissa käytetään myös paljon tilastoja;
  • robotti , jossa sinun on mallinnettava robotin fyysisiä liikkeitä, joten sinun on tiedettävä osittaiset johdannaiset ja kaltevuudet.
  • Diskreetti matematiikka ja kombinatorika ( kyllä! , saatat tarvita laskutoimitusta erilliseen laskemiseen!) – Jos olet tarpeeksi vakava funktioiden luomisessa, sinun on osattava integroida ja johtaa tiettyjä kaavoja. Ja siitä on hyötyä algoritmien analyysille (katso Sedgewickin ja Flajoletin kirja ”Analyysi algoritmeista”). Samoin Taylor-sarja ja laskenta voivat olla hyödyllisiä tietyntyyppisten toistumissuhteiden ratkaisemisessa, joita käytetään algoritmianalyysissä.
  • Algoritmien analyysi , jossa käytetään raja-käsitettä alusta alkaen (katso Landau-merkintätapa, ”pieni $ o $ ” – se ”s määritelty raja-arvolla)

Voi olla muita – tämä on aivan päälleni.

Ja sen lisäksi yksi hyötyy epäsuorasti Calculus-kurssilta oppimalla perustelemaan ja selittämään argumentteja teknisellä tarkkuudella. Tämä on arvokkaampaa kuin opiskelijat yleensä ajattele.

Lopuksi – tarvitset Calculusta, jotta voisit olla hyvin vuorovaikutuksessa muiden tarkat tiede- ja insinööritieteiden kanssa. Ja ei ole harvinaista, että tietojenkäsittelytieteen tutkijan ei tarvitse vain puhua vaan myös työskentele yhdessä fyysikon tai insinöörin kanssa.

Kommentit

  • Ehkä teillä oli erilainen kokemus, mutta minusta tuntui, että kalkki on melko hyödytön oppimaan perustelemaan ja selittämään perusteellisesti argumentteja. Sitä opetti rote- ja kuvasovitus, melkein kuin lukion algebra ja geometria.Toisaalta se oli useiden ylempien matematiikkaluokkien edellytys, että opetti näitä taitoja, joten luulen, että se ei ollut ' täysin hyödytön.
  • Voin liittyä täysin viimeiseen kohtaan (epäsuorat edut). Työskennellessäni ohjelmointikieliteorian kanssa, käytin harvoin laskulaskua suoraan. Ehkä suorin sovellus oli todennäköisyyslaskennassa (esim. Plotkin & Jonesin todennäköisyysvoimialueet). Silti laskukurssini oli lähinnä asioiden todistamista, ja tämä oli erittäin, erittäin arvokasta. Yksi tai kaksi laskentakurssia tarvitaan IMHO: ta jokaiseen vakavaan CS-ohjelmaan, matematiikan lisäksi (erillinen matematiikka, logiikka, lineaarinen algebra, numeerinen analyysi, … ja mahdollisesti kategoriat, topologia, algebra jne.).
  • Tässä ' on esimerkki siitä, kuinka tarvitsin laskutoimitusta tietokonegrafiikassa: Tasaiset interpolointitoiminnot ovat periaatteessa kaikki muodossa f(0) = 0 , f(1) = 1, f'(0) = f'(1) = 0, ja voit lisätä muita tärkeitä rajoituksia, esimerkiksi f'(0.5) = 1. Hieman sitten sitten käytin tätä johtaessani joitain erilaisia interpolointipolynomeja kuvien tasoittamiseksi.
  • Robotiikkaa voidaan todennäköisesti laajentaa mihin tahansa fysiikan mallintamiseen (joka kattaa myös CG: n valaistuksen suhteen, joten anna sen ' kutsuvat sitä kineettisen fysiikan mallinnukseksi). Tähän sisältyvät kiihtyvyys / nopeus, pomppaukset / jouset / muodonmuutokset, PID-säätimet, akustiikka, gravitaatio … kuin mikään aikaisempi luokka, Calculus opettaa opiskelijoille, että he eivät ' voi yksinkertaisesti laskea ongelmien määrää ja arvioida, kuinka paljon työtä on tarkoitus tehdä.

vastaus

Tämä on jonkin verran epäselvää, mutta algebrallisissa tietotyypeissä esiintyy laskenta. Minkä tahansa tietyn tyypin osalta sen yhden reiän kontekstien tyyppi on kyseisen tyyppinen johdannainen. Katso tämä erinomainen puhe yleiskatsaus koko aiheesta. Tämä on hyvin teknistä terminologiaa, joten selitämme sen.

Algebralliset tietotyypit

Olet ehkä törmännyt joukkoihin, joita kutsutaan tuotetyypeiksi (jos ei, se johtuu siitä, että ne ovat kahden tyyppisiä karteesisia tuotteita . Otamme tämän kirjaimellisesti ja käytämme merkintää:

$$ a * b $$

Edustamaan tuple, jossa $ a $ ja $ b $ ovat molemmat tyypit. Seuraavaksi olet ehkä törmännyt sumityypit nämä ovat tyyppejä, jotka voivat olla joko yhtä tai toista tyyppiä (tunnetaan nimellä unions , variantit tai Joko type (kinda) Haskellissa). Aiomme myös ottaa tämän kirjaimellisesti ja käyttää merkintää:

$$ a + b $$

Nämä nimetään sellaisina kuin ne ovat, koska jos tyypillä $ a $ on $ N_a $ -arvot ja tyypillä $ b $ on $ N_b $ -arvot, sitten tyyppi $ a + b $ : lla on $ N_a + N_b $ -arvot.

Nämä tyypit näyttävät tavallisilta algebrallisilta lausekkeilta ja voimme itse asiassa manipuloida niitä sellaisenaan (pisteeseen).

Esimerkki

Toiminnallisissa kielissä luettelon yleinen määritelmä (tässä Haskellissa annettu) on seuraava:

data List a = Empty | Cons a List 

Tämä tarkoittaa, että luettelo on joko tyhjä tai arvosarja ja toinen luettelo. Muuntamalla se algebralliseksi merkinnäksi saadaan:

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

Missä $ 1 $ edustaa tyyppiä, jolla on yksi arvo (eli yksikön tyyppi). Lisäämällä toistuvasti voimme arvioida tämän saadaksesi määritelmän $ 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 … $$

(Missä $ x ^ n $ on tarkoitettu toistuvan kertomisen merkityksessä.)

Tässä määritelmässä sanotaan sitten, että luettelo on joko yksikkö tai joukko yksi kohde tai kahden kohteen tai kolmen yms. sarja, joka on luettelon määritelmä!

Yhden reiän kontekstit

Nyt yhden reiän yhteyteen: yhden reiän konteksti on se, mitä saat, kun ”otat arvon pois” tuotetyypistä. Annetaan esimerkki:

Yksinkertaiselle homogeeniselle kaksiparille $ a ^ 2 $ , jos otamme arvon pois , saamme vain yhden parin, $ a $ .Mutta tämän tyyppisiä on kaksi erilaista yhden reiän kontekstia: nimittäin dupleksin ensimmäinen ja toinen arvo. Joten koska kyseessä on jompikumpi näistä, voimme kirjoittaa, että se on $ a + a $ , mikä on tietysti $ 2 $ . Tässä erottelu tulee pelaamaan. Vahvistetaan tämä toisella esimerkillä:

Arvon ottaminen 3-sarjoista antaa 2-dupleksin, mutta siinä on kolme erilaista vaihtoehtoa:

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

Riippuen reiän sijoituspaikasta. Tämä antaa meille $ 3a ^ 2 $ , joka on todellakin johdannainen $ a ^ 3 $ :ista. Tästä on todiste yleensä täällä .

Viimeisessä esimerkissä käyttäkäämme luetteloa:

Jos otamme luetteloksi alkuperäisen lausekkeen:

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

Voimme järjestää uudelleen saadaksemme:

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

(Pinnalla tämä voi tuntua hölynpölyltä, mutta jos otat tämän tuloksen taylor-sarjan, saat määritelmän, jonka olemme aiemmin saaneet.)

Jos erotellaan tämän, me g ja mielenkiintoinen tulos:

$$ \ frac {\ osittainen L (a)} {\ osittainen a} = (L (a)) ^ 2 $$

Näin ollen yhdestä luettelosta on tullut listapari. Tällä on itse asiassa järkeä: kaksi tuotettua luetteloa vastaavat alkuperäisen luettelon aukon ylä- ja alapuolella olevia elementtejä!

Kommentit

  • Tämä oli hienoa oivaltava. Kiitos.

Vastaa

Numeeriset menetelmät. On olemassa hankalia kalkkiongelmia, jotka ovat ainutlaatuisia tietyille sovelluksille, ja ne tarvitsevat ratkaisuja nopeammin kuin ihminen pystyy käytännössä ratkaisemaan ilman ohjelmaa. Jonkun on suunniteltava algoritmi, joka laskee ratkaisun. Eikö se ole ainoa asia, joka erottaa ohjelmoijat tiedemiehistä?

Kommentit

  • Kun otetaan huomioon " listaa tämän kysymyksen luonteen " luonteen, jokaisen vastauksen tulisi yrittää antaa kokonaiskuva. Haluatko varmasti väittää, että numeeriset menetelmät ovat ainoa ilmentymä?
  • Kommentteja ei käytetä laajempaan keskusteluun; tämä keskustelu on siirretty chatiin .

vastaus

Automaatio – Samanlainen robotiikka, automaatio voi vaatia paljon ihmisen käyttäytymistä.

Laskelmat – Todisteisiin ratkaisujen löytäminen vaatii usein laskutoimituksia.

Visualisoinnit – Edistyneiden algoritmien käyttäminen vaatii laskennan, kuten cos, sini, pi ja e. Erityisesti kun lasket uudelleen vektorit, törmäyskentät ja verkottuminen.

Logistiikka ja riskianalyysi – Tehtävän määrittäminen mahdollista, riskejä ja mahdollista onnistumisastetta.

Suojaus – Suurin osa turvallisuudesta voidaan suorittaa ilman kalkkia; monet ihmiset, jotka haluavat selityksiä, pitävät sitä mieluummin matemaattisissa lausekkeissa.

AI – tekoälyn perusteet voidaan käyttää ilman kalkkia; kuitenkin edistyneen käyttäytymisen, parvi-äly- / pesämielen ja monimutkaisten arvopohjaisten päätösten laskeminen.

Lääketieteelliset laskelmat – Useimpien terveystietojen visualisointi vaatii laskennan, kuten EKG-lukeman.

Tiede & Suunnittelu – Kun työskentelet melkein minkä tahansa muun tieteenalan kanssa, tarvitaan laskutoimituksia: ilmailu, avaruus, astrologia, biologia, kemia tai tekniikka.

Monet ohjelmoinnin ihmiset voivat mennä koko uransa ilman laskennan avulla; se voi kuitenkin osoittautua korvaamattomaksi, jos olet halukas tekemään työn. Minulle se on ollut tehokkainta automaatiossa, logistiikassa ja visualisoinnissa. Tunnistamalla tietyt mallit voit yksinkertaisesti jättää mallin huomiotta, jäljitellä sitä tai kehittää ylivoimainen menetelmä yhdessä.

Kommentit

  • Kuinka cos, sini, $ \ pi $ ja $ \ mathrm {e} $ lasketaan?
  • No, $ \ exp (x) $ voidaan määritellä yksilölliseksi ratkaisuksi $ f (x) = f ' (x) $: n kanssa $ f ( 0) = 1 $, ja vastaavasti sin, cos voidaan määritellä ainutlaatuiseksi funktiopariksi, joka täyttää $ f ' (x) = g (x) $, $ g ' (x) = -f (x) $ sopivilla rajaehdoilla (mielestäni $ f (0) = 0 $ ja $ g (0) = 1 $ pitäisi toimia).
  • @DavidRicherby: Esimerkki: miten toteutat nämä toiminnot esimerkiksi mikro-ohjaimessa ilman FPU: ta? Jos tiedät jonkin laskennan, tiedät heti hyvän vastauksen: tehosarjat.

Vastaa

Tosiasia on että sinulla on hyvin vähän mahdollisuuksia, et koskaan käytä laskutoimitusta. Lähes jokainen muu tieteellinen ala EI kuitenkaan käytä laskutoimitusta ja työskentelet luonnontieteellisen tutkinnon parissa. On tiettyjä odotuksia siitä, mitä yliopistotieteiden tutkinnon on tarkoitus tarkoittaa, ja yksi niistä on se, että tiedät laskennan. Vaikka et koskaan käytä sitä.

Se on hyvä, jos suoritat huonosti laskennassa, mutta varmista, että panostat diskreettiin matematiikkaan. On paljon reaalimaailman ohjelmointiongelmia, joissa diskreetti matematiikka tulee esiin ja sen periaatteiden tietämättömyys voi nolata sinua muiden koodereiden edessä.

Kommentit

  • Ensimmäinen kappaleesi on täysin väärä ja rajoittuu salaliittoteoriaan. Tietojenkäsittelytieteessä on paljon tarpeeksi alueita, joilla laskeminen on hyödyllistä (katso loputon luettelo muista vastauksista). Toki ' on mahdollista välttää kaikki nämä alueet, mutta ' on hyvin harhaanjohtavaa väittää, että laskun laskemisella ei ole vaikutusta yli arvosanat.
  • Koulutusohjelmastasi riippuen voit suorittaa tutkinnon käyttämättä koskaan laskutoimitusta, ja luulen, että CS-pääaineet eivät tarvitse ' sitä kuten saamme. Mutta huonosti tekeminen siinä sulkee sinut tietotekniikan mielenkiintoisimmista alueista. ' on paljon aikaa olla verkkokehittäjä valmistuttuasi; koulussa, miksi et yritä työntää itseäsi hieman?
  • @tsleyson Jos haluat olla verkkokehittäjä, säästä CS: n tutkinnon suorittamiseen tarvittavat rahat ja aika.
  • @ScottB Näytät sekoittavan tietojenkäsittelytieteen ohjelmointiin.
  • @ScottB Kuka ' sanoo CS = matematiikka + ohjelmointi? Itse olen puolustanut tätä rajoitettua näkemystä ikuisesti. Mutta sinulla on se myös taaksepäin: matematiikka on olennainen osa CS: tä, aivan kuten se on fysiikassa. Me tarvitsemme sitä, vaikka emme ' haluaisi sitä harjoitella . (Tästä huolimatta tämä ei ole paikka tässä keskustelussa. Liity meihin tietojenkäsittelytieteen keskustelussa , jos haluat jatkaa.)

Vastaa

Monet ihmiset ovat jo toimittaneet sovelluksia CS-muodossa. Mutta joskus löydät laskennan silloin, kun odotat vähiten:

Säännöllisen lausekkeen johdannaiset tutkitaan uudelleen

Jos tiedät tämän pdf-tiedoston automaatit saattavat olla lukemisen arvoisia.

Kommentit

  • En näe ' ei eroa laskelmissa siellä; näen sanan " johdannainen ", mutta en näe ' en näe mitään muistuttaa perinteistä differentiaalilaskua.
  • Se ' kutsutaan " muodolliseksi johdannaiseksi ", ja se liittyy tavallaan Laskentaan. Näet tämän myös tekemällä Funktioiden luominen, joillakin erillisiin rakenteisiin liittyvillä kaavoilla ja muilla alueilla, joilla et ' t todella on " sujuva toiminto ".
  • @Jay: Tärkeää ei ole ' t nimi. Kuinka ymmärrän onko kalkilla apua siinä?
  • Se selitetään tällä Wikipedia-sivulla . Muodollinen johdannainen on operaatio analgebraalisen rakenteen elementeille, joka sisältää polynomeja, ja se on muodollisesti " aivan kuin " tavallinen sääntö erottamiseksi polynomit – toisin kuin opiskelija näkee Calculuksessa – polynomit eivät kuitenkaan ole todellisuutta suurempia; ne voivat olla polynomeja mielivaltaisen " -renkaan " (toisen algebrallisen rakenteen) päällä. Ja muodollista johdannaista on käytännön sovelluksia – olen nähnyt ainakin yhden (Algebraic Cryptanalysis – ei voi ' muistaa yksityiskohtia).

vastaus

Joitakin tarkempia esimerkkejä:

  • Laskinta käytetään johdettaessa delta-sääntö , mikä antaa tietyntyyppisille hermoverkoille mahdollisuuden ”oppia”.
  • Laskinta voidaan käyttää laskemaan värähtelevän funktion Fourier-muunnos, joka on erittäin tärkeä signaalianalyysi.
  • Laskentaa käytetään koko ajan tietokonegrafiikassa, mikä on erittäin aktiivinen kenttä, kun ihmiset löytävät jatkuvasti uusia tekniikoita. Perusteellisen esimerkin saat tutustumalla Kajiyan renderointiyhtälöön
  • Laskenta on tärkeää laskennallisen geometrian alalla, tutkia käyrän ja pinnan mallintamista.

vastaus

Näihin muihin erinomaisiin vastauksiin lisätään tämä kohta: tarkkuus testattaessa .

Luodessani testitapauksia joillekin sovelluksille, minun on pitänyt käyttää laskutoimitusta ennustamaan odotetut käyttöajat, muistikoot, ja valitse optimaaliset parametrit tietorakenteita viritettäessä. Tähän sisältyy odotettujen pyöristysvirheiden yms. Ymmärtäminen.

Vaikka tilastot mainitaan muissa vastauksissa, haluaisin mainita erityisesti Monte-carlo-algoritmit , kuten optimointialgoritmit ja jotkut säästävät suoratoistoalgoritmit , jotka perustuvat matemaattisiin periaatteisiin, jotka sisältävät lasku.

Tietyt toimialat, joissa olen työskennellyt ja joilla laskenta vaaditaan, ovat:

  • Rahoitus (kaupankäyntialustan luominen)

  • Vakuutus (vakuutusten numeerinen integrointi mitä-jos-skenaarioihin odotettavissa olevien menetysten laskemiseksi)

  • Logistiikka (kuljetusreittien yhdistämisen optimointi)

  • Signaalinkäsittely

Vastaus

Laskin – integraaliosa – käytetään suoraan CS: ssä perustana ajatella summaamista. Jos käydään läpi osa Knuthin konkreettisen matematiikan osasta summausta, tunnistat nopeasti laskennalle yhteiset käytänteet: Joidenkin jatkuvien tapausten ymmärtäminen antaa sinulle työkalut diskreetin huomioon ottamiseen.

Monet käyttötavat CS-tutkimuksessasi on mukana ohjelmointijärjestelmiä, jotka seuraavat muutosta tai joissain tapauksissa yrittävät ennustaa tulevaisuutta. Näiden järjestelmien ympärillä oleva matematiikka on juurtunut differentiaaliyhtälöihin ja lineaariseen algebraan, ja differentiaaliyhtälöt ovat … laskennallisia. On opettajia, kuten Gibert Oudot, jotka kannattavat siirtymistä nopeammin differentiaaliyhtälöosaan, mutta se on silti laskentaosajoukko.Kun muutos riippuu minkä tahansa järjestelmän muutoksesta, se alkaa olla epävakaa (ja vakaa) tavoilla, jotka ovat sekä ei-intuitiivisia että hyvin hyvin ymmärretty. Jos haluat ymmärtää, miksi järkevä lineaarinen järjestelmäsi käyttäytyy epälineaarisesti, tarvitset joko laskentatyökaluja tai sinun on keksittävä ne uudelleen ongelmasi tilaan.

Ja lopuksi, CS usein vaatii muiden työn lukemista ja ymmärtämistä, ja laskenta on ensimmäinen altistuminen suurelle määrälle jaettua sanastoa, käytäntöjä ja historiaa.

kommentit

  • " CS-tutkimuksen moniin käyttötarkoituksiin liittyy ohjelmointijärjestelmiä, jotka seuraavat muutosta, tai joissakin tapauksissa yritä ennustaa tulevaisuutta " – En usko, että tämä edustaisi CS-kursseja.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *