Hvordan / når brukes kalkulator i informatikk?

Kommentarer

  • Vi har ikke ' t har en streng policy for listespørsmål, men det er en generelt misliker . Vær også oppmerksom på denne og denne diskusjonen; kanskje du vil forbedre spørsmålet ditt for å unngå problemene som er forklart der. Hvis du ikke er sikker på hvordan du kan forbedre spørsmålet ditt, kan vi kanskje hjelpe deg i Datavitenskap chat ?
  • Du ser ut til å gjøre den vanlige feilen å anta at innholdet i hvert kurs må være relevant (for hver karrierevei). Noen ganger handler det bare om å trene deg hvordan du tenker på bestemte måter.
  • Kommentarer er ikke til utvidet diskusjon; denne samtalen er flyttet til chat .

Svar

Jeg kan tenke meg noen få kurs som trenger Calculus, direkte . Jeg har brukt fet ansikt for de vanligvis obligatoriske fagene for en informatikkgrad, og kursiv for de vanligvis valgfrie.

  • Datamaskingrafikk / Bildebehandling, og her vil du også trenge analytisk geometri og lineær algebra, tungt ! Hvis du går denne veien, kan det også være lurt å studere litt differensialgeometri (som har multivariat kalkulator som minimum forutsetning). Men du vil trenge kalkulus her selv for veldig grunnleggende ting: prøv å søke etter «Fourier Transform» eller «Wavelets», for eksempel – dette er to veldig grunnleggende verktøy for folk som jobber med bilder.
  • Optimalisering , ikke-lineær stort sett, der multivariat kalkulator er det grunnleggende språket som brukes til å utvikle alt. Men selv lineær optimalisering drar nytte av kalkulus ( derivat av objektivfunksjonen er helt viktig)
  • Sannsynlighet / statistikk . Disse kan ikke studeres seriøst uten multivariate Calculus.
  • Machine Learning , som bruker tung statistikk (og følgelig multivariate Calculus)
  • Data Science og relaterte emner, som også bruker mye statistikk;
  • Robotikk , der du må modellere fysiske bevegelser av en robot, slik at du må kjenne delvise derivater og gradienter.
  • Diskret matematikk og kombinatorikk ( ja! , kan det hende du trenger Calculus for diskret telling!) – hvis du blir seriøs nok med å generere funksjoner, må du vite hvordan du kan integrere og utlede bestemte formler. Og det er nyttig for analyse av algoritmer (se boken til Sedgewick og Flajolet, «Analyse av algoritmer»). På samme måte kan Taylor Series og calculus være nyttige for å løse visse typer gjentakelsesrelasjoner, som brukes i algoritmeanalyse.
  • Analyse av algoritmer , der du bruker begrepet grense helt fra starten (se Landau-notasjon, «liten $ o $ » – det «s definert ved hjelp av en grense)

Det kan være andre – dette er like utenfor toppen av hodet mitt.

Og i tillegg har man fordeler indirekte fra et Calculus-kurs ved å lære å resonnere og forklare argumenter med teknisk strenghet. Dette er mer verdifullt enn studenter tenker vanligvis.

Til slutt – du vil trenge kalkulus for å, vel, samhandle med mennesker fra andre eksakte vitenskaper og ingeniørfag. Og det er ikke uvanlig at en datavitenskapsmann trenger å ikke bare snakke, men også samarbeide med en fysiker eller en ingeniør.

Kommentarer

  • Kanskje du hadde en annen opplevelse, men jeg syntes kalkulatoren var ganske ubrukelig for å lære å resonnere og forklare argumenter grundig. Det ble undervist av rote og mønster samsvarer omtrent som videregående algebra og geometri.På den annen side var det forutsetningen for flere høyere matematikktimer at lærte disse ferdighetene, så jeg antar at det ikke var ' t helt ubrukelig.
  • Jeg kan helt forholde meg til det aller siste punktet (indirekte fordeler). Jobbet med programmeringsspråkteori, jeg brukte sjelden kalkulator direkte. Kanskje den mest direkte applikasjonen var i sannsynlighetsberegningsmodeller (f.eks. Plotkin & Jones sannsynlighetsdrevet domene). Likevel handlet beregningskurset mitt mest om å bevise ting, og dette var veldig, veldig verdifullt. Én eller to kalkulasjonskurs er IMHO nødvendig i hvert seriøst CS-program, sammen med litt mer matematikk (diskret matematikk, logikk, lineær algebra, numerisk analyse, … og muligens kategorier, topologi, algebra, …).
  • Her er ' et eksempel på hvordan jeg trengte kalkulus i datagrafikk: Jevne interpolasjonsfunksjoner vil i utgangspunktet alle være av formen f(0) = 0 , f(1) = 1, f'(0) = f'(1) = 0, og du kan legge til eventuelle andre begrensninger du bryr deg om, for eksempel f'(0.5) = 1. For en liten stund siden brukte jeg dette til å utlede noen forskjellige interpolasjonspolynomer for å jevne ut bilder.
  • Roboter kan sannsynligvis utvides til alle slags fysikkmodeller (som jeg antar også dekker CG, når det gjelder belysning, så la ' s kaller det kinetisk fysikk modellering). Dette inkluderer akselerasjon / hastighet, sprett / fjær / deformasjon, PID-regulatorer, akustikk, gravitasjon …
  • I ' vil forkjempe det indirekte punktet på denne måten: bedre enn noen klasse de tar før, lærer Calculus elevene de kan ' t bare teller antall problemer og estimerer hvor mye arbeid som skal involveres.

Svar

Dette er noe uklart, men kalkulator viser seg i algebraiske datatyper. For en hvilken som helst type er typen av ett-hulls sammenhenger avledet av den typen. Se denne utmerkede talen for en oversikt over hele emnet. Dette er veldig teknisk terminologi, så la oss forklare det.

Algebraiske datatyper

Du kan ha kommet over tupler som blir referert til som produkttyper (hvis ikke, det er fordi de er det kartesiske produktet av to typer). Vi tar dette bokstavelig og bruker notasjonen:

$$ a * b $$

For å representere en tuple, der $ a $ og $ b $ er begge typer. Deretter kan du ha kommet over sumtyper dette er typer som kan være enten en type eller en annen (kjent som fagforeninger , varianter eller som Enten type (ganske) i Haskell). Vi tar også denne bokstavelig og bruker notasjonen:

$$ a + b $$

Disse blir navngitt som de er fordi hvis en type $ a $ har $ N_a $ -verdier og en type $ b $ har $ N_b $ -verdier, deretter typen $ a + b $ har $ N_a + N_b $ verdier.

Disse typene ser ut som normale algebraiske uttrykk og Vi kan faktisk manipulere dem som sådan (til et punkt).

Et eksempel

I funksjonelle språk er en vanlig definisjon av en liste (gitt i Haskell her) denne:

data List a = Empty | Cons a List 

Dette sier at en liste er enten tom eller en verdi av en verdi og en annen liste. Når vi transformerer det til algebraisk notasjon, får vi:

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

Hvor $ 1 $ representerer en type med en verdi (også kalt enhetstypen). Ved å sette inn gjentatte ganger kan vi evaluere dette for å få en definisjon for $ 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 … $$

(Where $ x ^ n $ er ment i betydningen gjentatt multiplikasjon.)

Denne definisjonen sier da at en liste er enten enhet, eller en tuple av ett element, eller en tuple på to elementer, eller tre osv., som er definisjonen av en liste!

Ett-hulls kontekster

Nå på til ett-hulls kontekster: en-hulls kontekst er det du får når du «tar en verdi ut» av en produkttype. La oss gi et eksempel:

For en enkel 2-tuple som er homogen, $ a ^ 2 $ , hvis vi tar ut en verdi , vi får bare en 1-talls, $ a $ .Men det er to forskjellige kontekster av ett hull av denne typen: nemlig den første og andre verdien av tupelen. Så siden det er en av disse, kan vi skrive at det er $ a + a $ , som selvfølgelig er $ 2 en $ . Det er her differensieringen kommer inn for å spille. La oss bekrefte dette med et annet eksempel:

Å ta en verdi ut av en 3-tupel gir en 2-tupel, men det er tre forskjellige varianter:

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

Avhengig av hvor vi setter hullet. Dette gir oss $ 3a ^ 2 $ som faktisk er avledet av $ a ^ 3 $ . Det er et bevis på dette generelt her .

For vårt siste eksempel, la oss bruke en liste:

Hvis vi tar vårt opprinnelige uttrykk for en liste:

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

Vi kan omorganisere for å få:

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

(På overflaten dette kan virke som tull, men hvis du tar taylor-serien av dette resultatet, får du definisjonen vi avledet tidligere.)

Nå, hvis vi skiller dette, vil vi et interessant resultat:

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

Dermed har én liste blitt et par lister. Dette er faktisk fornuftig: de to produserte listene tilsvarer elementene over og under hullet i den opprinnelige listen!

Kommentarer

  • Dette var fantastisk innsiktsfull. Takk.

Svar

Numeriske metoder. Det finnes tungvint kalkulasjonsproblemer som er unike for spesifikke applikasjoner, og de trenger løsninger raskere enn et menneske praktisk talt kan løse uten et program. Noen må designe en algoritme som skal beregne løsningen. Er det ikke det eneste som skiller programmerere fra forskere?

Kommentarer

  • Gitt " liste " besvarelsen av dette spørsmålet, bør hvert svar forsøke å gi hele bildet. Er du sikker på at du vil påstå at numeriske metoder er eneste forekomsten?
  • Kommentarer er ikke for utvidet diskusjon. Denne samtalen er flyttet til chat .

Svar

Automatisering – I likhet med robotikk, automatisering kan kreve å kvantifisere mye menneskelig atferd.

Beregninger – Å finne løsninger på bevis krever ofte kalkulator.

Visualiseringer – Å bruke avanserte algoritmer krever kalkulator som cos, sine, pi og e. Spesielt når du beregner tingvektorer, kollisjonsfelt og sammenkobling.

Logistikk og risikoanalyse – Bestemme om en oppgave er mulig, risikoen og mulig suksessrate.

Sikkerhet – Mest sikkerhet kan utføres uten kalkulator; mange mennesker som ønsker forklaringer, foretrekker det imidlertid i matematiske uttrykk.

AI – Grunnleggende om AI kan brukes uten kalkulator; beregning av avansert oppførsel, svermeintelligens / bikubehoder og komplekse verdibaserte beslutningstaking.

Medisinske beregninger – Å visualisere de fleste helsedata krever kalkulus som EKG-avlesning.

Science & Engineering – Når du arbeider med nesten hvilken som helst annen vitenskapelig disiplin krever kalkulator: romfart, astrologi, biologi, kjemi eller ingeniørfag.

Mange mennesker i programmering kan gå hele karrieren uten ved hjelp av kalkulator; Det kan imidlertid være uvurderlig hvis du er villig til å gjøre arbeidet. For meg har det vært mest effektivt innen automatisering, logistikk og visualisering. Ved å identifisere bestemte mønstre kan du bare ignorere mønsteret, etterligne mønsteret eller utvikle et overlegen metode alt sammen.

Kommentarer

  • Hvordan er cos, sine, $ \ pi $ og $ \ mathrm {e} $ calculus?
  • Vel, $ \ exp (x) $ kan defineres som den unike løsningen på $ f (x) = f ' (x) $ med $ f ( 0) = 1 $, og på samme måte sin, cos kan defineres som det unike par funksjoner som tilfredsstiller $ f ' (x) = g (x) $, $ g ' (x) = -f (x) $ med passende grensebetingelser (jeg synes $ f (0) = 0 $ og $ g (0) = 1 $ skal fungere).
  • @DavidRicherby: Eksempel: hvordan implementerer du disse funksjonene på for eksempel en mikrokontroller uten FPU? Hvis du kan noe kalkulasjon, vet du umiddelbart et godt svar: kraftserie.

Svar

Fakta er at det er veldig liten sjanse for at du noen gang bruker kalkulator. Imidlertid bruker nesten alle andre vitenskapelige disipliner kalkulator, og du jobber med en vitenskapelig grad. Det er visse forventninger til hva en universitetsvitenskapelig grad skal bety, og en av disse tingene er at du vet kalkulator. Selv om du aldri vil bruke den.

Det er greit hvis du gjør det dårlig i kalkulatoren, men sørg for at du legger litt vekt på diskret matematikk. Det er mange virkelige programmeringsproblemer der diskret matematikk spiller inn, og uvitenhet om prinsippene kan skamme deg foran andre kodere.

Kommentarer

  • Ditt første avsnitt er helt feil og grenser til konspirasjonsteori. Det er nok områder innen informatikk hvor kalkulator er nyttig (se de andre svarene for endeløse lister over dem). Visst det er ' mulig å unngå alle disse områdene, men det ' er veldig misvisende å hevde at å slippe kalkulator vil ha null innvirkning utover karakterer.
  • Avhengig av studieprogrammet ditt, kan du fullføre en grad uten å bruke kalkulator, og jeg tror absolutt CS-hovedfag ikke trenger ' som vi får. Men å gjøre dårlig i det vil låse deg utenfor noen av de mest interessante områdene innen informatikk. ' har god tid til å være webutvikler når du er ferdig utdannet; mens du er på skolen, hvorfor ikke prøve å presse deg selv litt?
  • @tsleyson Hvis du vil være webutvikler, kan du spare tid og penger for å oppnå en CS-grad.
  • @ScottB Du ser ut til å forveksle informatikk med programmering.
  • @ScottB Hvem ' sier CS = matematikk + programmering? Selv har jeg gått inn for dette begrensede synet i evigheter. Men du har det også bakover: matematikk er integrert i CS, akkurat som det er i fysikk. Vi trenger det, selv om vi ikke ' ikke vil øve det. (Når det er sagt, er dette ikke stedet for denne diskusjonen. Vennligst bli med oss i Datavitenskap chat hvis du vil fortsette.)

Svar

Mange leverte allerede applikasjoner i CS. Men noen ganger vil du finne kalkulator når du minst forventer:

Reguleringsuttrykkderivater ble undersøkt på nytt

Hvis du vet automatisk denne pdfen kan være verdt å lese.

Kommentarer

  • Jeg ser ikke ' ikke noen differensialregning der; Jeg ser ordet " derivat ", men jeg ser ikke ' ligner tradisjonell differensialregning.
  • Det ' heter " formelt derivat ", og det er på en måte relatert til Calculus. Du vil også se dette gjort med Generering av funksjoner, noen formler relatert til diskrete strukturer og andre områder der du ikke ' t har faktisk en " jevn funksjon ".
  • @Jay: Det viktige er ikke ' t navnet. Hvordan forstås det ng calculus help with it?
  • Det forklares i denne Wikipedia-siden . Det formelle derivatet er en operasjon på elementer av analgebraisk struktur som inneholder polynomer, og det er formelt " ganske som " den vanlige regelen for å differensiere polynomer, men – annerledes enn hva en student ser i kalkulus – er polynomene ikke over virkelige; de kan være polynomer over en vilkårlig " ring " (en annen algebraisk struktur). Og det er praktiske anvendelser av det formelle derivatet – jeg har sett minst en (algebraisk kryptanalyse – kan ' ikke huske detaljene).

Svar

Noen mer spesifikke eksempler:

  • Calculus brukes til å utlede delta regel , som gjør det mulig for noen typer nevrale nettverk å «lære».
  • Calculus kan brukes til å beregne Fourier-transformasjonen av en oscillerende funksjon, veldig viktig i signalanalyse.
  • Kalkulus brukes hele tiden i datagrafikk, som er et veldig aktivt felt når folk kontinuerlig oppdager nye teknikker. For et grunnleggende eksempel, sjekk ut Kajiyas gjengivelsesligning
  • Kalkulator er viktig innen beregningsgeometri, undersøk kurve- og overflatemodellering.

Svar

Til disse andre gode svarene legger jeg til dette punktet: strenghet i testing .

Ved å lage testtilfeller for noen applikasjoner har jeg måttet bruke kalkulator for å forutsi forventede kjøretider, minnestørrelser, og velg optimale parametere når du stiller inn datastrukturer. Dette inkluderer forståelse av forventet avrundingsfeil osv.

Mens statistikk er nevnt i andre svar, vil jeg spesifikt nevne Monte-carlo-algoritmer , for eksempel optimaliseringsalgoritmer og noen nøysomme streamingalgoritmer som er basert på matematiske prinsipper som inkluderer kalkulator.

Spesifikke bransjer der jeg har jobbet der kalkulering var påkrevd inkluderer:

  • Finans (oppretting av en handelsplattform)

  • Forsikring (numerisk integrering av forsikringspoliser i hva-hvis-scenarier for å beregne forventede forsikringstap)

  • Logistikk (optimalisering av konsolidering av transportveier)

  • Signalbehandling

Svar

Calculus – den integrerte delen – brukes direkte i CS som et grunnlag for å tenke på summering. Hvis du arbeider gjennom en del av Knuths avsnitt om konkret matematikk om summering, vil du raskt gjenkjenne konvensjoner som er felles for kalkulator: å forstå noen av de kontinuerlige sakene gir deg verktøy til å vurdere det diskrete.

Mange av bruksområdene i CS-studien din involverer programmeringssystemer som overvåker endring, eller i noen tilfeller prøver å forutsi fremtiden. Matematikken rundt disse systemene er forankret i differensiallikninger og lineær algebra, og differensiallikninger er … kalkulator. Det er lærere som Gibert Merkelig som taler for å flytte raskere inn i differensiallikningsdelen, men det er fortsatt en delmengde av kalkulator. Når endring avhenger av endring i ethvert system, begynner det å være ustabil (og stabil) på måter som både er ikke-intuitive og veldig For å forstå hvorfor det fornuftige lineære systemet ditt oppfører seg på ikke-lineære måter, trenger du enten verktøyene til kalkulatoren, eller du må oppfinne dem på nytt for ditt problemrom.

Og til slutt, CS ofte krever lesing og forståelse av andres arbeid, og kalkulator er den første eksponeringen for mye delt ordforråd, konvensjon og historie.

Kommentarer

  • " Mange av bruken av CS-studien din involverer programmeringssystemer som overvåker endring, eller i noen tilfeller, prøv å forutsi fremtiden " – Jeg tror ikke ' ikke dette er representativt for moust CS-studier.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *