Comment / quand le calcul est-il utilisé en informatique?

96

De nombreux programmes d’informatique requièrent deux ou trois cours de calcul.

Je me demande comment et quand le calcul est utilisé en informatique? Le contenu en informatique d'un diplôme en informatique a tendance à se concentrer sur les algorithmes, les systèmes d'exploitation, les structures de données, l'intelligence artificielle, le génie logiciel, etc. Existe-t-il des moments où le calcul est utile dans ces domaines ou dans d'autres domaines de l'informatique?

Victor
la source
6
Nous n'avons pas de politique stricte pour les questions de liste, mais il y a une aversion générale . S'il vous plaît noter également ceci et cette discussion; vous voudrez peut-être améliorer votre question pour éviter les problèmes qui y sont expliqués. Si vous ne savez pas comment améliorer votre question, nous pourrons peut-être vous aider en matière de discussion en informatique .
Raphaël
44
Vous semblez commettre l'erreur commune de supposer que le contenu de chaque cours doit être pertinent (pour chaque parcours professionnel). Parfois, il s’agit simplement de vous apprendre à penser de certaines manières.
Raphaël
8
Il serait probablement utile que cette question clarifie si vous ne vous posez que des questions relatives aux utilisations dans le domaine de l'informatique proprement dite ou à l'ensemble des utilisations réservées aux étudiants qui obtiennent un diplôme Comp Sci. Au moins ici aux États-Unis, un très grand nombre de diplômés de Comp Sci deviennent des ingénieurs en logiciel répartis dans presque tous les domaines d'ingénierie imaginables. Beaucoup de ces domaines nécessitent une compréhension du calcul à des fins diverses. Tous les diplômés du CS n'utiliseront pas le calcul dans leur travail, mais beaucoup le feront certainement (probablement plus que ceux qui le pensent au cours de leur première année.)
reirab
1
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Raphaël
Pour moi, cela a été très utile pour le sentiment d ' "appréciation et de soulagement plus tard lors de l'apprentissage des méthodes numériques" . Lors de l'utilisation de données discrètes issues de mesures réelles, au lieu de fonctions continues issues de mathématiques théoriques, le soulagement était tel que l'intégration est simplement une somme et que la dérivée n'est qu'une soustraction, au lieu des formules trop compliquées dont nous avions besoin de temps et d'efforts apprendre dans nos cours de calcul avant!
vsz

Réponses:

112

Je peux penser à quelques cours qui nécessiteraient directement le calcul . J'ai utilisé des caractères gras pour les disciplines habituellement obligatoires pour un diplôme en informatique et l'italique pour les disciplines habituellement optionnelles.

  • Infographie / traitement d'image, et ici vous aurez également besoin de la géométrie analytique et de l'algèbre linéaire, beaucoup ! Si vous vous engagez dans cette voie, vous voudrez peut-être également étudier une géométrie différentielle (qui requiert le calcul multivarié au minimum). Mais vous aurez besoin de Calcul ici même pour des choses très simples: essayez par exemple "Transformée de Fourier" ou "Ondelettes" - ce sont deux outils très fondamentaux pour les personnes travaillant avec des images.
  • Optimisation , principalement non linéaire, où le calcul multivarié est le langage fondamental utilisé pour tout développer. Mais même l'optimisation linéaire bénéficie du calcul (la dérivée de la fonction objectif est absolument importante)
  • Probabilité / Statistiques . Ceux-ci ne peuvent pas être sérieusement étudiés sans calcul multivarié.
  • Machine Learning , qui utilise beaucoup les statistiques (et donc le calcul multivarié)
  • Data Mining et sujets associés, qui utilisent également beaucoup de statistiques;
  • La robotique , où vous devrez modéliser les mouvements physiques d'un robot, vous devrez donc connaître les dérivées partielles et les gradients.
  • Mathématiques discrètes et combinatoires ( oui!, Vous aurez peut-être besoin de Calcul pour le comptage discret!) - si vous êtes suffisamment sérieux pour générer des fonctions, vous devez savoir comment intégrer et dériver certaines formules. Et c'est utile pour l'analyse des algorithmes (voir le livre de Sedgewick et Flajolet, "Analysis of Algorithms"). De même, la série de Taylor et le calcul peuvent être utiles pour résoudre certains types de relations de récurrence utilisées dans l'analyse algorithmique.
  • Analyse des algorithmes , où vous utilisez la notion de limite dès le début (voir la notation de Landau, "petit o " - définie à l'aide d'une limite)

Il y en a peut-être d'autres - cela me vient à l'esprit.

Et, de plus, on profite indirectement d'un cours de calcul en apprenant à raisonner et à expliquer des arguments avec rigueur technique. Ceci est plus précieux que les étudiants ne le pensent habituellement.

Enfin, vous aurez besoin de Calcul pour pouvoir, bien, interagir avec des personnes issues d’autres sciences et techniques Exact. Et il n’est pas rare qu’un informaticien ait besoin non seulement de parler, mais aussi de travailler avec un physicien ou un ingénieur.

Geai
la source
35
Vous avez peut-être eu une expérience différente, mais j'ai trouvé le calcul assez inutile pour apprendre à raisonner et à expliquer les arguments de façon rigoureuse. Il a été enseigné par correspondance et modèle de manière à peu près comme l'algèbre et la géométrie du lycée. D'autre part, il était la condition sine qua non à plusieurs classes de mathématiques supérieures qui ont fait enseigner ces compétences, donc je suppose qu'il était pas tout à fait inutile.
Tsleyson
6
Je peux tout à fait me rattacher au tout dernier point (avantages indirects). Travaillant sur la théorie des langages de programmation, j’ai rarement utilisé directement le calcul. L’application la plus directe est peut-être celle des modèles de calcul probabilistes (par exemple les domaines de puissance probabilistes de Plotkin & Jones). Pourtant, mon cours de calcul visait principalement à prouver des choses, et cela était très précieux. Un ou deux cours de calcul sont nécessaires à mon humble avis dans chaque programme CS, ainsi que quelques mathématiques (mathématiques discrètes, logique, algèbre linéaire, analyse numérique, ... et éventuellement, catégories, topologie, algèbre, ...).
chi
3
Voici un exemple de la façon dont je avais besoin calcul en infographie: fonctions d'interpolation Smooth essentiellement tous de la forme f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0et vous pouvez ajouter d'autres contraintes que vous aimez, par exemple f'(0.5) = 1. Il y a quelques temps, j'ai utilisé cette méthode pour dériver différents polynômes d'interpolation permettant de lisser les images.
dimanche
3
La robotique peut probablement être étendue à n’importe quel type de modélisation physique (qui, je suppose, couvre également la CG, en termes d’éclairage, appelons-le donc modélisation physique cinétique). Cela inclut l'accélération / la vitesse, les rebonds / ressorts / la déformation, les contrôleurs PID, l'acoustique, la gravitation ...
metao
2
Je soutiens le point indirect de cette manière: mieux que n’importe quel cours qu’ils suivent auparavant, Calculus enseigne aux étudiants qu’ils ne peuvent pas simplement compter le nombre de problèmes et estimer l’ampleur du travail à effectuer.
candied_orange
20

C'est un peu obscur, mais le calcul apparaît dans les types de données algébriques. Pour tout type donné, le type de ses contextes à un trou est la dérivée de ce type. Voir cet excellent exposé pour un aperçu de l’ensemble du sujet. C'est une terminologie très technique, alors expliquons.

Types de données algébriques

Vous avez peut-être rencontré des nuplets appelés types de produits (sinon, c'est parce qu'ils sont le produit cartésien de deux types). Nous allons prendre cela à la lettre et utiliser la notation:

ab

ab

a+b

aNabNba+bNa+Nb

Ces types ressemblent à des expressions algébriques normales et nous pouvons, en fait, les manipuler comme tels (jusqu'à un certain point).

Un exemple

Dans les langages fonctionnels une définition courante d'une liste (donnée ici en Haskell) est la suivante:

data List a = Empty 
            | Cons a List

Cela signifie qu'une liste est vide ou un tuple d'une valeur et d'une autre liste. En transformant cela en notation algébrique, nous obtenons:

L(a)=1+aL(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

Cette définition dit alors qu'une liste est soit une unité, soit un tuple d'un élément, soit un tuple de deux éléments, ou de trois, etc., qui est la définition d'une liste!

Contextes à un trou

Passons maintenant aux contextes à un trou: un contexte à un trou est ce que vous obtenez lorsque vous «extrayez une valeur» d'un type de produit. Donnons un exemple:

a2aa+a2a

Prendre une valeur sur un tuple donne un tuple, mais il existe trois variantes différentes:

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

3a2a3

Pour notre dernier exemple, utilisons une liste:

Si nous prenons notre expression originale pour une liste:

L(a)=1+aL(a)

Nous pouvons réorganiser pour obtenir:

L(a)=11a

(En apparence, cela peut sembler un non-sens, mais si vous prenez la série taylor de ce résultat, vous obtenez la définition que nous avons obtenue plus tôt.)

Maintenant, si nous différencions cela, nous obtenons un résultat intéressant:

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

Ainsi, une liste est devenue une paire de listes. Cela a du sens: les deux listes produites correspondent aux éléments situés au-dessus et au-dessous du trou de la liste d'origine!

Tuomas Laakkonen
la source
C'était merveilleusement perspicace. Merci.
D. Ben Knoble
12

Méthodes numériques. Il existe de lourds problèmes de calcul qui sont propres à des applications spécifiques et ils ont besoin de solutions plus rapidement que ce qu'un humain ne peut pratiquement résoudre sans programme. Quelqu'un doit concevoir un algorithme qui calculera la solution. N'est-ce pas la seule chose qui sépare les programmeurs des scientifiques?

Jonah Havel
la source
3
Étant donné la nature "liste" de cette question, chaque réponse devrait tenter de donner une image complète. Êtes-vous certain de vouloir affirmer que les méthodes numériques sont le seul exemple?
Raphaël
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Raphaël
12

Automatisation - Semblable à la robotique, l'automatisation peut nécessiter de quantifier beaucoup de comportement humain.

Calculs - La recherche de solutions aux épreuves nécessite souvent des calculs.

Visualisations - L'utilisation d'algorithmes avancés nécessite des calculs tels que cos, sine, pi et e. Surtout lorsque vous calculez des vecteurs, des champs de collision et des maillages.

Analyse de la logistique et des risques - Déterminer si une tâche est possible, le risque encouru et le taux de réussite possible.

Sécurité - La plupart des opérations de sécurité peuvent être effectuées sans calcul. Cependant, beaucoup de gens qui veulent des explications le préfèrent dans les expressions mathématiques.

AI - Les bases de l'IA peuvent être utilisées sans calcul; Cependant, calcul du comportement avancé, intelligence des essaims / esprit de ruche et prise de décision complexe basée sur des valeurs.

Calculs médicaux - La visualisation de la plupart des données de santé nécessite des calculs tels qu'une lecture ECG.

Science & Ingénierie - Lorsque vous travaillez avec presque toute autre discipline scientifique, le calcul est nécessaire: aérospatial, astrologie, biologie, chimie ou ingénierie.

Beaucoup de personnes en programmation peuvent poursuivre leur carrière sans utiliser de calcul; Cependant, cela peut s'avérer inestimable si vous êtes prêt à faire le travail. Pour moi, cela a été particulièrement efficace en automatisation, logistique et visualisation. En identifiant des modèles spécifiques, vous pouvez simplement ignorer le modèle, l'imiter ou développer une méthode supérieure dans son ensemble.

LJones
la source
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
@ David Richerby: Exemple: comment implémentez- vous ces fonctions sur, par exemple, un microcontrôleur sans FPU? Si vous connaissez des calculs, vous connaissez immédiatement une bonne réponse: la série power.
Nate Eldredge
6

Le fait est qu'il y a très peu de chance que vous utilisiez un calcul. Cependant, pratiquement toutes les autres disciplines scientifiques utilisent le calcul et vous travaillez sur un diplôme en sciences. Il y a certaines attentes concernant ce qu'un diplôme universitaire en sciences est censé signifier, et l'une de ces choses est que vous connaissez le calcul. Même si vous ne l'utiliserez jamais.

Cela ne pose pas de problème si vous vous débrouillez mal en calcul, mais assurez-vous de faire des efforts en mathématiques discrètes. Il y a beaucoup de problèmes de programmation dans le monde réel où des calculs discrets entrent en jeu et l'ignorance de ses principes peut vous gêner devant d'autres codeurs.

Scott B
la source
9
Votre premier paragraphe est complètement faux et frise la théorie du complot. Le calcul est utile dans de nombreux domaines de l’informatique (voir les autres réponses pour une liste infinie d’entre elles). Bien sûr, il est possible d'éviter tous ces domaines, mais il est très trompeur de prétendre que l'abandon du calcul n'aura aucun impact au-delà des notes.
David Richerby
4
Selon votre programme d'études, vous pouvez obtenir un diplôme sans utiliser de calcul. Je pense vraiment que les majors CS n'ont pas besoin de tout ce dont nous avons besoin. Mais si vous y entrez mal, vous serez exclus des domaines les plus intéressants de l'informatique. Il ne reste plus beaucoup de temps pour devenir développeur Web une fois votre diplôme obtenu. pendant que tu es à l’école, pourquoi ne pas essayer de te pousser un peu?
Tsleyson
3
@tsleyson Si vous souhaitez devenir développeur Web, économisez l'argent et le temps nécessaire à l'obtention d'un diplôme CS.
Raphaël
8
@ScottB Vous semblez confondre informatique et programmation.
David Richerby
3
@ScottB Qui dit CS = math + programmation? J'ai moi-même plaidé contre cette vision limitée pendant des siècles. Mais vous avez également un problème: les mathématiques font partie intégrante de la CS, tout comme la physique. Nous en avons besoin , même si nous ne voulons pas le pratiquer . (Cela dit, ce n'est pas l'endroit idéal pour cette discussion S'il vous plaît nous rejoindre. Computer Science chat si vous voulez continuer.)
Raphaël
4

De nombreuses personnes ont déjà fourni des applications dans CS. Mais parfois, vous trouverez le calcul quand vous vous attendez le moins:

Dérivés de l'expression régulière réexaminés

Si vous connaissez les automates, ce pdf pourrait valoir la peine d'être lu.

Aristu
la source
Je ne vois pas de calcul différentiel ici; Je vois le mot "dérivé", mais je ne vois rien qui ressemble au calcul différentiel traditionnel.
2
C'est ce qu'on appelle "dérivé formel", et il est lié au calcul, d'une certaine manière. Vous verrez également que ceci est fait avec Generating Functions, certaines formules liées à des structures discrètes et d'autres domaines dans lesquels vous n'avez pas réellement de "fonction lissée".
Jay
@ Jay: L'important n'est pas le nom. Comment la compréhension du calcul aide-t-elle?
Christian
2
C'est expliqué dans cette page Wikipedia . Le dérivé formel est une opération sur des éléments de structure analgébrique contenant des polynômes, et il est formellement "tout à fait" la règle habituelle pour différencier les polynômes, cependant - contrairement à ce qu'un étudiant voit dans Calcul - les polynômes ne sont pas sur des réalités; ils peuvent être des polynômes sur un "anneau" arbitraire (une autre structure algébrique). Et il y a des applications pratiques du dérivé formel - j'en ai vu au moins une (Cryptanalyse algébrique - je ne me souviens pas des détails).
Jay
4

Quelques exemples plus spécifiques:

  • Le calcul est utilisé pour dériver la règle de delta , ce qui permet à certains types de réseaux de neurones d '"apprendre".
  • Le calcul peut être utilisé pour calculer la transformée de Fourier d'une fonction oscillante, très importante dans l'analyse du signal.
  • Le calcul est utilisé tout le temps en infographie, un domaine très actif car les gens découvrent continuellement de nouvelles techniques. Pour un exemple fondamental, consultez l'équation de rendu de Kajiya
  • Le calcul est important dans le domaine de la géométrie informatique, étudiez la modélisation des courbes et des surfaces.
chien jones
la source
3

A ces autres excellentes réponses, j'ajoute ce point: la rigueur des tests .

Lors de la création de scénarios de test pour certaines applications, j'ai dû utiliser le calcul pour prévoir les durées de fonctionnement attendues, la taille de la mémoire et choisir les paramètres optimaux lors du réglage des structures de données. Cela inclut la compréhension de l'erreur d'arrondi attendue, etc.

Bien que les statistiques soient mentionnées dans d'autres réponses, je voudrais mentionner spécifiquement les algorithmes de Monte-carlo , tels que les algorithmes d'optimisation et certains algorithmes de flux en frugal basés sur des principes mathématiques incluant le calcul.

Les industries spécifiques où j'ai travaillé où le calcul était requis incluent:

  • Finance (création d'une plateforme de trading)

  • Assurance (intégration numérique des polices d'assurance dans des scénarios hypothétiques pour calculer les pertes attendues sur les polices)

  • Logistique (optimisation de la consolidation des voies de transport)

  • Traitement de signal

Paul Chernoch
la source
3

Le calcul - la partie intégrale - est directement utilisé dans CS pour fonder la réflexion sur la sommation. Si vous travaillez sur une partie quelconque de la section Mathématiques concrètes de Knuth sur la sommation, vous reconnaîtrez rapidement les conventions communes au calcul: la compréhension d'une partie du cas continu vous donne des outils pour considérer le discret.

De nombreuses utilisations de votre étude CS impliquent des systèmes de programmation qui surveillent les changements ou, dans certains cas, tentent de prédire l’avenir. Les mathématiques autour de ces systèmes sont enracinées dans les équations différentielles et l'algèbre linéaire, et les équations différentielles sont ... du calcul. Certains enseignants, comme Gibert Strang, préconisent de passer plus rapidement à la partie relative aux équations différentielles, mais cela reste un sous-ensemble du calcul. Lorsque le changement dépend de la modification d'un système, il commence à être instable (et stable) d'une manière à la fois non intuitive et très bien comprise. Pour comprendre pourquoi votre système linéaire sensible se comporte de manière non linéaire, vous avez besoin d'outils de calcul ou vous devez les réinventer pour votre espace de problèmes.

Enfin, CS nécessite souvent de lire et de comprendre le travail des autres, et le calcul est la première exposition à de nombreux mots, vocabulaires et conventions partagés.

Jess
la source
"De nombreuses utilisations de votre étude CS impliquent des systèmes de programmation qui surveillent les changements ou, dans certains cas, tentent de prédire l'avenir" - je ne pense pas que cela soit représentatif des cours de formation de CS moust
Raphaël