Come / quando viene utilizzato il calcolo in Informatica?


95

Molti programmi di informatica richiedono due o tre classi di calcolo.

Mi chiedo, come e quando viene utilizzato il calcolo in informatica? Il contenuto CS di una laurea in informatica tende a concentrarsi su algoritmi, sistemi operativi, strutture dati, intelligenza artificiale, ingegneria del software, ecc. Ci sono momenti in cui Calculus è utile in queste o altre aree dell'Informatica?


6
Non abbiamo una politica rigorosa per le domande dell'elenco, ma c'è una antipatia generale . Si prega di notare anche questa e questa discussione; potresti voler migliorare la tua domanda per evitare i problemi spiegati lì. Se non sei sicuro di come migliorare la tua domanda, forse possiamo aiutarti nella chat di informatica ?
Raffaello

44
Sembra che tu faccia l'errore comune di presumere che il contenuto di ogni corso debba essere pertinente (per ogni percorso di carriera). A volte si tratta solo di insegnarti a pensare in certi modi.
Raffaello

8
Sarebbe probabilmente utile se questa domanda potesse chiarire se stai chiedendo solo degli usi all'interno dell'Informatica propriamente o tutti gli usi per gli studenti che stanno ottenendo una laurea in Scienze. Almeno qui negli Stati Uniti, una percentuale molto elevata di laureati in scienze della scienza diventa ingegneri del software distribuiti in quasi tutti i settori ingegneristici immaginabili. Molti di questi domini richiedono la comprensione del calcolo per vari scopi. Non tutti i laureati CS useranno Calculus nel loro lavoro, ma molti certamente (probabilmente più di chi pensa che lo faranno durante il loro anno di matricola.)
Reirab

1
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

Per me è stato molto utile per la sensazione di "apprezzamento e sollievo in seguito quando si imparano i metodi numerici" . Quando si lavora con dati discreti provenienti da misurazioni reali, invece di funzioni continue dalla matematica teorica, è stato un tale sollievo che l'integrazione è solo una somma e la derivata è solo una sottrazione, invece delle formule eccessivamente complicate di cui avevamo bisogno di così tanto tempo e fatica per imparare prima nelle nostre lezioni di calcolo!
vsz

Risposte:


111

Posso pensare ad alcuni corsi che avrebbero bisogno di Calcolo, direttamente . Ho usato la faccia audace per le discipline solitamente obbligatorie per una laurea in Informatica e il corsivo per quelle normalmente opzionali.

  • Computer grafica / elaborazione di immagini, e qui avrai anche bisogno di geometria analitica e algebra lineare, fortemente ! Se segui questo percorso, potresti anche voler studiare una geometria differenziale (che ha il calcolo multivariato come prerequisito minimo). Ma qui avrai bisogno di Calcolo anche per cose basilari: prova ad esempio a cercare "Trasformata di Fourier" o "Wavelets", ad esempio: questi sono due strumenti fondamentali per chi lavora con le immagini.
  • Ottimizzazione , per lo più non lineare, in cui il calcolo multivariato è il linguaggio fondamentale utilizzato per sviluppare tutto. Ma anche l'ottimizzazione lineare trae vantaggio dal calcolo (la derivata della funzione obiettivo è assolutamente importante)
  • Probabilità / Statistiche . Questi non possono essere seriamente studiati senza il calcolo multivariato.
  • Apprendimento automatico , che fa un uso intensivo delle statistiche (e, di conseguenza, calcolo multivariato)
  • Data mining e argomenti correlati, che utilizzano anche molte statistiche;
  • Robotica , in cui dovrai modellare i movimenti fisici di un robot, quindi dovrai conoscere derivate e gradienti parziali.
  • Matematica discreta e combinatoria ( sì! Potresti aver bisogno di Calcolo per un conteggio discreto!) - se diventi abbastanza serio sulla generazione di funzioni, dovrai sapere come integrare e derivare determinate formule. E questo è utile per Analysis of Algorithms (vedi il libro di Sedgewick e Flajolet, "Analysis of Algorithms"). Allo stesso modo, la serie e il calcolo di Taylor possono essere utili per risolvere alcuni tipi di relazioni di ricorrenza, utilizzate nell'analisi dell'algoritmo.
  • Analisi degli algoritmi , in cui si utilizza fin dall'inizio la nozione di limite (vedere la notazione di Landau, "piccola o " - è definita usando un limite)

Potrebbero essercene altri - questo è proprio in cima alla mia testa.

E, oltre a ciò, si beneficia indirettamente di un corso di Calcolo imparando a ragionare e spiegare argomenti con rigore tecnico. Questo è più prezioso di quanto gli studenti pensino di solito.

Infine, avrai bisogno di Calcolo per interagire con persone di altre scienze e ingegneria esatte. E non è raro che uno scienziato informatico abbia bisogno non solo di parlare, ma anche di collaborare con un fisico o un ingegnere.


35
Forse hai avuto un'esperienza diversa, ma ho trovato il calcolo abbastanza inutile per imparare a ragionare e spiegare gli argomenti in modo rigoroso. È stato insegnato in base al rote e al pattern in modo simile all'algebra e alla geometria del liceo. D'altra parte, era il prerequisito per diverse classi di matematica superiore, che ha fatto insegnare queste abilità, quindi suppongo che non era del tutto inutile.
Tsleyson,

6
Posso riferirmi totalmente all'ultimo punto (benefici indiretti). Lavorando sulla teoria dei linguaggi di programmazione, raramente ho usato il calcolo direttamente. Forse l'applicazione più diretta era nei modelli computazionali probabilistici (ad es. Powerdomain probabilistici di Plotkin e Jones). Tuttavia, il mio corso di calcolo riguardava principalmente la dimostrazione di cose, e questo era molto, molto prezioso. Uno o due corsi di calcolo sono necessari per l'IMHO in ogni serio programma CS, insieme ad alcuni altri calcoli (matematica discreta, logica, algebra lineare, analisi numerica, ... e possibilmente categorie, topologia, algebra, ...).
chi

3
Ecco un esempio di come avevo bisogno calcolo in computer grafica: funzioni di interpolazione Smooth sarà essenzialmente essere tutti della forma f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0, ed è possibile aggiungere altri vincoli che ti interessano, per esempio f'(0.5) = 1. Qualche tempo fa l'ho usato per ricavare alcuni diversi polinomi di interpolazione per uniformare le immagini.
porglezomp,

3
Probabilmente la robotica può essere estesa a qualsiasi tipo di modellazione fisica (che suppongo riguardi anche CG, in termini di illuminazione, quindi chiamiamola modellazione fisica cinetica). Ciò include accelerazione / velocità, rimbalzi / molle / deformazione, controller PID, acustica, gravitazione ...
Metao

2
Sosterrò indirettamente il punto in questo modo: meglio di qualsiasi classe prendano prima, Calculus insegna agli studenti che non possono semplicemente contare il numero di problemi e stimare quanto lavoro sarà coinvolto.
candied_orange,

20

Ciò è alquanto oscuro, ma il calcolo si presenta in tipi di dati algebrici. Per ogni dato tipo, il tipo dei suoi contesti a un foro è la derivata di quel tipo. Guarda questo eccellente discorso per una panoramica dell'intera materia. Questa è una terminologia molto tecnica, quindi spieghiamo.

Tipi di dati algebrici

Potresti esserti imbattuto in tuple indicate come tipi di prodotto (in caso contrario, è perché sono il prodotto cartesiano di due tipi). Lo prenderemo alla lettera e useremo la notazione:

ab

Per rappresentare una tupla, dove e b sono entrambi i tipi. Successivamente, potresti esserti imbattuto in tipi di somma che sono tipi che possono essere di un tipo o di un altro (noti come unioni , varianti o come entrambi i tipi (kinda) in Haskell). Prenderemo anche questo alla lettera e useremo la notazione:ab

a+b

Questi sono nominati come sono perché se un tipo ha valori N a e un tipo b ha valori N b , il tipo a + b ha valori N a + N b .aNabNba+bNa+Nb

Questi tipi sembrano normali espressioni algebriche e possiamo, in effetti, manipolarli come tali (fino a un certo punto).

Un esempio

Nei linguaggi funzionali una definizione comune di un elenco (fornita in Haskell qui) è questa:

data List a = Empty 
            | Cons a List

Ciò dice che un elenco è vuoto o una tupla di un valore e un altro elenco. Trasformandolo in notazione algebrica, otteniamo:

L(a)=1+aL(a)

Dove rappresenta un tipo con un valore (ovvero il tipo di unità). Inserendo ripetutamente, possiamo valutare questo per ottenere una definizione per L ( a ) :1L(a)

L(a)=1+aL(a)
L(a)=1+a(1+aL(a))
L(a)=1+a+a2(1+aL(a))
L(a)=1+a+a2+a3(1+aL(a))
L(a)=1+a+a2+a3+a4+a5...

xn

Questa definizione dice quindi che un elenco è o unità, o una tupla di un elemento, o una tupla di due elementi, o di tre ecc., Che è la definizione di un elenco!

Contesti a un foro

Passiamo ora ai contesti a un buco: un contesto a un buco è ciò che ottieni quando "estrai un valore" da un tipo di prodotto. Facciamo un esempio:

a2aa+a2a

Prendere un valore da una 3-tupla dà una 2-tupla, ma ci sono tre diverse varianti:

(a,a,_)
(a,_,a)
(_,a,a)

3a2a3

Per il nostro esempio finale, usiamo un elenco:

Se prendiamo la nostra espressione originale per un elenco:

L(a)=1+aL(a)

Possiamo riorganizzare per ottenere:

L(a)=11a

(In apparenza può sembrare una sciocchezza, ma se prendi la serie di taylor di questo risultato otterrai la definizione che abbiamo derivato in precedenza.)

Ora, se differenziamo questo, otteniamo un risultato interessante:

L(a)a=(L(a))2

Quindi una lista è diventata una coppia di liste. Questo in effetti ha senso: le due liste prodotte corrispondono agli elementi sopra e sotto il buco nella lista originale!


Questo è stato meravigliosamente penetrante. Grazie.
D. Ben Knoble,

12

Metodi numerici Esistono ingombranti problemi di calcolo che sono unici per applicazioni specifiche e hanno bisogno di soluzioni più velocemente di quanto un umano possa praticamente risolvere senza un programma. Qualcuno deve progettare un algoritmo che calcolerà la soluzione. Non è l'unica cosa che separa i programmatori dagli scienziati?


3
Data la natura di "elenco" di questa domanda, ogni risposta dovrebbe tentare di fornire un quadro completo. Sei sicuro di voler affermare che i metodi numerici sono l' unica istanza?
Raffaello

I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Raffaello

12

Automazione - Simile alla robotica, l'automazione può richiedere la quantificazione di molti comportamenti umani.

Calcoli : la ricerca di soluzioni per le prove spesso richiede un calcolo.

Visualizzazioni : l'utilizzo di algoritmi avanzati richiede calcoli come cos, sinusoidale, pi ed e. Soprattutto quando si calcolano vettori, campi di collisione e mesh.

Logistica e analisi dei rischi : determinare se un'attività è possibile, il rischio coinvolto e la possibile percentuale di successo.

Sicurezza : la maggior parte della sicurezza può essere eseguita senza calcolo; tuttavia, molte persone che desiderano spiegazioni lo preferiscono nelle espressioni matematiche.

AI - Le basi dell'IA possono essere utilizzate senza calcolo; tuttavia, calcolo del comportamento avanzato, intelligenza sciami / menti dell'alveare e processi decisionali basati su valori complessi.

Calcoli medici : la visualizzazione della maggior parte dei dati sanitari richiede calcoli come una lettura ECG.

Scienza e ingegneria - Quando si lavora con quasi qualsiasi altra disciplina scientifica richiede calcoli: aerospaziale, astrologia, biologia, chimica o ingegneria.

Molte persone in programmazione possono fare la loro intera carriera senza usare il calcolo; tuttavia, può rivelarsi prezioso se sei disposto a fare il lavoro. Per me è stato molto efficace in automazione, logistica e visualizzazione. Identificando modelli specifici, è possibile semplicemente ignorare il modello, imitarlo o sviluppare un metodo superiore tutti insieme.


7
πe

3
exp(X)f(X)=f'(X)f(0)=1f'(X)=g(X)g'(X)=-f(X)f(0)=0g(0)=1

2
@DavidRicherby: Esempio: come si implementano queste funzioni su, diciamo, un microcontrollore senza FPU? Se conosci qualche calcolo, conosci subito una buona risposta: serie di potenze.
Nate Eldredge,

6

Il fatto è che ci sono poche possibilità che tu abbia mai usato il calcolo. Tuttavia, praticamente ogni altra disciplina scientifica utilizza il calcolo e stai lavorando a un livello scientifico. Ci sono alcune aspettative su cosa significhi una laurea in scienze universitarie e una di queste cose è che conosci il calcolo. Anche se non lo userai mai.

Va bene se fai male nei calcoli, ma assicurati di fare qualche sforzo in matematica discreta. Ci sono molti problemi di programmazione nel mondo reale in cui entra in gioco la matematica discreta e l'ignoranza dei suoi principi può metterti in imbarazzo di fronte ad altri programmatori.


9
Il tuo primo paragrafo è completamente sbagliato e confina con la teoria della cospirazione. Ci sono abbastanza aree dell'informatica in cui il calcolo è utile (vedi le altre risposte per infiniti elenchi di esse). Certo, è possibile evitare tutte quelle aree, ma è molto fuorviante affermare che il calo del calcolo non avrà alcun impatto oltre i voti.
David Richerby,

4
A seconda del tuo corso di laurea, potresti completare una laurea senza mai usare il calcolo, e sicuramente penso che le major CS non ne abbiano bisogno tanto quanto noi. Ma farlo male ti bloccherà fuori da alcune delle aree più interessanti dell'informatica. C'è un sacco di tempo per diventare uno sviluppatore web dopo la laurea; mentre a scuola, perché non provare a spingerti un po '?
Tsleyson,

3
@tsleyson Se vuoi diventare uno sviluppatore web, risparmia i soldi e il tempo necessari per ottenere un diploma CS.
Raffaello

8
@ScottB Sembra che tu stia confondendo l'informatica con la programmazione.
David Richerby

3
@ScottB Chi sta dicendo CS = matematica + programmazione? Io stesso ho sostenuto questa visione limitata per anni. Ma ce l'hai anche al contrario: la matematica è parte integrante del CS, proprio come lo è per la fisica. Ne abbiamo bisogno , anche se non vogliamo praticarlo . (Detto questo, questo non è il posto per questa discussione. Per favore, unisciti a noi nella chat di informatica se vuoi continuare.)
Raffaello

4

Molte persone hanno già fornito applicazioni in CS. Ma a volte troverai Calculus quando meno te lo aspetti:

Derivati ​​delle espressioni regolari riesaminati

Se conosci gli automi questo pdf potrebbe valere la pena di essere letto.


Non vedo alcun calcolo differenziale lì; Vedo la parola "derivata", ma non vedo nulla che assomigli al tradizionale calcolo differenziale.

2
Si chiama "derivato formale" ed è in qualche modo correlato al calcolo. Vedrai anche questo fatto con le funzioni di generazione, alcune formule relative a strutture discrete e altre aree in cui non hai una "funzione regolare".
Jay

@Jay: l'importante non è il nome. In che modo la comprensione del calcolo aiuta a farlo?
Christian,

2
È spiegato in questa pagina di Wikipedia . Il derivato formale è un'operazione su elementi della struttura analgebrica che contiene polinomi ed è formalmente "abbastanza simile" alla solita regola per differenziare i polinomi, tuttavia - diversamente da ciò che uno studente vede in Calcolo - i polinomi non sono reali; possono essere polinomi su un "anello" arbitrario (un'altra struttura algebrica). E ci sono applicazioni pratiche del derivato formale - ne ho visto almeno uno (Crittanalisi Algebrica - Non ricordo i dettagli).
Jay,

4

Alcuni esempi più specifici:

  • Il calcolo viene utilizzato per derivare la regola delta , che è ciò che consente ad alcuni tipi di reti neurali di "apprendere".
  • Il calcolo può essere utilizzato per calcolare la trasformata di Fourier di una funzione oscillante, molto importante nell'analisi del segnale.
  • Il calcolo viene utilizzato continuamente nella computer grafica, che è un campo molto attivo poiché le persone scoprono continuamente nuove tecniche. Per un esempio fondamentale, controlla l'equazione di rendering di Kajiya
  • Il calcolo è importante nel campo della geometria computazionale, studia la modellazione di curve e superfici.

3

A queste altre eccellenti risposte aggiungo questo punto: rigore nei test .

Nella creazione di casi di test per alcune applicazioni ho dovuto ricorrere al calcolo per prevedere i tempi di esecuzione previsti, le dimensioni della memoria e scegliere i parametri ottimali durante l'ottimizzazione delle strutture di dati. Ciò include la comprensione dell'errore di arrotondamento previsto, ecc.

Mentre la statistica è menzionata in altre risposte, vorrei menzionare specificamente gli algoritmi Monte-carlo , come gli algoritmi di ottimizzazione e alcuni algoritmi di streaming frugale basati su principi matematici che includono il calcolo.

Settori specifici in cui ho lavorato dove era richiesto il calcolo includono:

  • Finanza (creazione di una piattaforma di trading)

  • Assicurazione (integrazione numerica delle polizze assicurative in scenari what-if per il calcolo delle perdite previste dalla polizza)

  • Logistica (ottimizzazione del consolidamento delle rotte di trasporto)

  • Elaborazione del segnale


3

Il calcolo - la parte integrale - è usato direttamente in CS come base per pensare alla sommatoria. Se lavori su qualsiasi parte della sezione Matematica concreta di Knuth sulla sommatoria, riconoscerai rapidamente le convenzioni comuni al calcolo: la comprensione di alcuni casi continui ti offre strumenti per considerare il discreto.

Molti degli usi del tuo studio CS coinvolgono sistemi di programmazione che monitorano il cambiamento o, in alcuni casi, tentano di prevedere il futuro. La matematica attorno a questi sistemi è radicata in equazioni differenziali e algebra lineare e le equazioni differenziali sono ... calcolo. Ci sono insegnanti come Gibert Strang che sostengono di spostarsi più rapidamente nella parte delle equazioni differenziali, ma è ancora un sottoinsieme di calcolo. Quando il cambiamento dipende dal cambiamento in qualsiasi sistema, inizia a essere instabile (e stabile) in modi non intuitivi e ben compresi. Per capire perché il tuo sistema lineare sensibile si sta comportando in modo non lineare, o hai bisogno degli strumenti di calcolo o devi reinventarli per il tuo spazio problematico.

Infine, CS spesso richiede la lettura e la comprensione del lavoro degli altri, e il calcolo è la prima esposizione a molti termini, convenzioni e storia condivisi.


"Molti degli usi del tuo studio CS coinvolgono sistemi di programmazione che monitorano i cambiamenti, o in alcuni casi, tentano di prevedere il futuro" - Non penso che questo sia rappresentativo di corsi di studi CS sul moust.
Raffaello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.