La position actuelle:Accueil du site>Mathématiques du programmeur 3 Algèbre linéaire À quoi ressemble l'algèbre linéaire aux yeux de la programmation?

Mathématiques du programmeur 3 Algèbre linéaire À quoi ressemble l'algèbre linéaire aux yeux de la programmation?

2022-05-15 08:17:33La voie de la croissance de zmikoo

Qu'est - ce que l'algèbre linéaire?
En mathématiques à l'Université,L'algèbre linéaire est le cours le plus abstrait,.La portée de la pensée des mathématiques élémentaires à l'algèbre linéaire est beaucoup plus grande que le calcul et les statistiques de probabilité.Beaucoup de gens sont restés jusqu'à ce qu'ils sachent C'est donc la phase,Il a fallu des années pour entrer en contact avec des domaines tels que la programmation graphique ou l'apprentissage machine pour découvrir l'application de l'algèbre linéaire partout,Mais j'ai du mal à comprendre et à maîtriser.C'est vrai.,La plupart des gens comprennent facilement les mathématiques élémentaires Les concepts,Fonctions、Équation、Les séries sont si naturelles,Mais entrer dans le monde de l'algèbre linéaire, c'est comme entrer dans un autre monde étrange,Perdu dans toutes sortes de symboles et d'opérations étranges.
Insérer la description de l'image ici

.Quand j'a i commencé à travailler sur l'algèbre linéaire, j'ai eu l'impression que c'était un sujet de fées volantes,Une question m'est venue à l'esprit:

L'algèbre linéaire est - elle une loi naturelle objective ou un design artificiel?

Si vous voyez ce problème,Votre réaction est“C'est une question.,Les mathématiques sont bien sûr des lois naturelles objectives”,Je ne trouve pas ça bizarre,C'est ce que je pensais moi - même.Mathématiques élémentaires et physique élémentaire de l'école secondaire Tout le chemin,Peu de gens doutent qu'un sujet de mathématiques soit une loi naturelle,Quand j'ai appris le calcul、Il n'y a jamais eu de doute dans les statistiques de probabilité,.Seule l'algèbre linéaire m'a fait douter,A cause de ses différents symboles et opérations Les règles sont trop abstraites, trop étranges, Ne correspond pas exactement à l'expérience de vie .Alors..., Je dois vraiment remercier l'algèbre linéaire , Ça m'a conduit à penser à la nature d'un sujet mathématique .En fait..., Pas seulement les étudiants. , Y compris beaucoup de professeurs de maths qui ne savent pas Qu'est - ce que l'algèbre linéaire de Chu 、À quoi bon?, Pas seulement chez nous , Il en va de même à l'étranger , Meng Yan du pays a écrit 《Comprendre la matrice》,À l'étrangerSheldon Axler Le professeur l'a écrit. 《 L'algèbre linéaire doit être apprise de cette façon 》, Mais il n'a pas été fondamentalement clair sur les origines et les origines de l'algèbre linéaire . Pour moi , Je n'ai pas appris l'algèbre linéaire à l'Université , Mais c'est plus tard que je l'ai compris du point de vue de la programmation . Beaucoup de gens disent que de bonnes mathématiques peuvent aider à la programmation , J'ai fait le contraire , La compréhension du programme m'a aidé à comprendre les mathématiques .

Cet article s'adresse aux programmeurs , .Je vais vous montrer une aventure profonde dans le monde de l'algèbre linéaire. !Puisque c'est un programmeur,, Avant d'entrer dans le domaine de l'algèbre linéaire , Commençons par examiner le monde procédural , Pensez à une telle question :

Il y a une compilation dans l'ordinateur 、C/C++、Java、Python Langues communes ,EtMakefile、CSS、SQLAttendez.DSL, Ces langues sont - elles une loi naturelle objective ou un design artificiel ?

Pourquoi poser une question aussi stupide ? Parce que la réponse est évidente , La connaissance du langage de programmation utilisé quotidiennement doit l'emporter sur l'algèbre linéaire abstraite , Il est clair que le langage de programmation, bien qu'il contienne Logique interne , Mais ils sont essentiellement conçus par l'homme. . La similitude de toutes les langues de programmation réside dans : Un ensemble de modèles a été construit , Un ensemble de syntaxe est défini , Et cartographier chaque syntaxe à une sémantique spécifique .Programmeurs et implémentations linguistiques Respect du contrat linguistique entre : Le programmeur garantit que le Code correspond à la syntaxe de la langue ,Compilateur/ .L'interpréteur garantit que le résultat de l'exécution du Code correspond à la sémantique syntaxique correspondante .Par exemple,,C++Utilisation prévuenew A() Syntaxe pour construire des objets sur le tas A, Tu l'as écrit. C++ L'effet d'exécution correspondant doit être garanti , Allouer la mémoire sur le tas et appeler ALe constructeur de, Sinon, le compilateur viole le contrat linguistique .

Du point de vue de l'application, Pouvons - nous considérer l'algèbre linéaire comme un langage de programmation ?La réponse est oui., Nous pouvons essayer le contrat linguistique comme critère . Supposons que vous ayez une image , Tu veux le faire tourner 60 Degré,Plus loin.x Extrusion axiale 2X; L'algèbre linéaire vous dit ,“D'accord! Vous construisez une matrice selon ma grammaire , Puis multipliez votre image par la règle de multiplication matricielle , Je te promets que c'est ce que tu veux ”.

En fait,, Algèbre linéaire et SQLComme ça.DSLTrès similaire, Voici quelques analogies :

Modèles et sémantique :SQL C'est un modèle relationnel construit sur un langage de bas niveau , La sémantique de base est les relations et les opérations relationnelles ; L'algèbre linéaire établit un Modèle vectoriel sur les mathématiques élémentaires , La sémantique du noyau est vecteur et transformation linéaire

Syntaxe:SQL La syntaxe correspondante est définie pour chaque sémantique ,Par exemple:select, where, joinAttendez.; L'algèbre linéaire définit également les vecteurs 、Matrice、 Syntaxe correspondant à des concepts sémantiques tels que la multiplication matricielle

Compiler/Explication:SQLPeut être compilé/Interprété comme suit:CLangues; Les concepts et les règles de fonctionnement liés à l'algèbre linéaire peuvent être expliqués par la connaissance des mathématiques élémentaires

Réalisation:Nous pouvonsMySQL、Oracle Attendre sur la base de données relationnelle SQLProgrammation;On peut aussiMATLAB、Mathematica .Programmation algébrique linéaire sur un logiciel isomathématique

Alors...,Du point de vue de l'application, L'algèbre linéaire est un langage spécifique au domaine conçu par l'homme (DSL), Il établit un ensemble de modèles et complète la cartographie syntaxique et sémantique à travers un système de symboles .En fait,,Vecteur、Matrice、 La syntaxe et la sémantique des règles de fonctionnement sont conçues artificiellement , C'est la même chose que les différents concepts d'une langue , C'est une création , Mais à condition que le contrat linguistique soit respecté .

Pourquoi avoir une algèbre linéaire ?
Quelqu'un pourrait penser à l'algèbre linéaire comme une porte DSLNe vous inquiétez pas., Je vais te donner une matrice , Tu as juste fait tourner mon graphique 60 Degrés x L'arbre est étiré. 2X, Je me sens toujours mal à l'aise , Je ne te connais même pas. “En bas Couche”Comment faire!En fait..., C'est comme si certains programmeurs n'étaient pas réalistes dans un langage avancé , Penser que c'est le bas qui est l'essence du programme , Je me demande toujours ce que c'est de compiler cette phrase en assemblage ? Combien de mémoire supplémentaire cette opération a - t - elle allouée ?Quelqu'un d'autre InShell Frappe - en un. wget La commande peut supprimer une page web , Il doit l'utiliser. C La langue prend des dizaines de minutes à écrire un tas de code pour être solide .En fait..., Ce que l'on appelle le bas et le haut n'est qu'une façon habituelle de dire ,Non Qui est plus essentiel que qui . La compilation et l'interprétation des programmes sont essentiellement des mappings sémantiques entre différents modèles , En général, les langues de haut niveau sont cartographiées aux langues de bas niveau , Mais il est tout à fait possible d'inverser la direction .Fabrice BellardAvecJavaScript J'ai écrit une machine virtuelle ,Prends ça.LinuxCours!JavaScriptSur la machine virtuelle, C'est comme ça que la machine est modélisée JavaScript Cartographie sur modèle .

La création d'un nouveau modèle dépend certainement des modèles existants , Mais c'est un moyen de modéliser, pas une fin , Le but de tout nouveau modèle est de simplifier l'analyse et la résolution d'une catégorie de problèmes . Quand l'algèbre linéaire est établie , Ses différents concepts et règles de fonctionnement dépendent de la connaissance des mathématiques élémentaires , Mais une fois ce modèle abstrait construit , Nous devrions nous habituer à utiliser directement des modèles abstraits de haut niveau pour analyser et résoudre des problèmes .

.En parlant d'algèbre linéaire, il est plus facile d'analyser et de résoudre des problèmes que les mathématiques élémentaires , Voici un exemple de la façon dont nous pouvons réellement ressentir les avantages :

Les sommets d'un triangle donné (x1, y1), (x2, y2), (x3, y3),Trouvez la surface du triangle.

La formule la plus connue pour calculer la surface d'un triangle en mathématiques élémentaires est area = 1/2 * base * height , Quand un triangle a un bord sur l'axe, il est facile de calculer sa surface .Mais, Si le même triangle tourne l'axe , Que ses bords ne soient pas sur l'axe ,Comment faire?? Est - ce qu'on peut encore avoir le fond et la hauteur ?La réponse doit être oui, Mais c'est évidemment compliqué , Et il y a beaucoup de situations à discuter séparément .

Au contraire., .Il serait très facile de résoudre ce problème avec la connaissance de l'algèbre linéaire . Deux vecteurs en algèbre linéaire a,bProduit croisé de(Cross Product)Est un vecteur, Son orientation et a,bVertical,Sa taille est égale àa,bLa surface du parallélogramme constitué:

Insérer la description de l'image ici

On peut considérer les bords du triangle comme des vecteurs , .Donc la surface du triangle est égale au produit croisé de deux vecteurs latéraux divisé par la valeur absolue de deux :

area = abs(1/2 * cross_product((x2 - x1, y2 - y1), (x3 - x1, y3 - y1)))

Note::absIndique une valeur absolue,cross_product Représente le produit croisé de deux vecteurs .

.Un tel problème qui est un peu difficile en mathématiques élémentaires est résolu instantanément en algèbre linéaire !Quelqu'un pourrait dire, Vous le faites directement sur la base du produit croisé , C'est facile. , Mais le produit croisé lui - même n'est - il pas assez compliqué ? Essayez de l'étendre ?C'est vrai., Le rôle du modèle est de cacher une partie de la complexité dans le modèle , Permet aux utilisateurs de modèles de résoudre les problèmes plus facilement . Quelqu'un s'est demandé C++C'est trop compliqué.,C++Le pèreBjarne StroustrupRépondez comme ça:

Complexity will go somewhere: if not the language then the application code.

Dans un contexte particulier, La complexité du problème est déterminée par sa nature même ,C++ Intégrer une partie de la complexité dans les langages et les bibliothèques standard , Le but est de rendre l'application plus simple .Bien sûr., Pas toutes les occasions C++ Ce qui rend le problème plus simple , Mais en principe ,C++ La complexité est raisonnable .Sauf queC++,Java、SQL、CSS Et toutes sortes de langues et de cadres sont ,Imagine ça.,Si non utilisé Base de données, Comme c'est compliqué de stocker et de gérer vos données sans bouger ! De cette façon, il n'est pas difficile de comprendre pourquoi l'algèbre linéaire définit une opération aussi étrange que le produit croisé ,EtC++ Mettre de nombreux algorithmes et conteneurs couramment utilisés IntégrationSTL C'est la même chose. .La même chose., Vous pouvez même définir les opérations que vous voulez dans l'algèbre linéaire à réutiliser .Alors..., Un peu de maths. , C'est aussi animé que le programme , Tu l'as compris. Les origines et les origines peuvent être contrôlées librement .En parlant de ça,, En passant, nous répondons à une question très courante :

Le produit dot de l'algèbre linéaire 、 Les produits croisés et les matrices sont bizarres , Pourquoi définir ces opérations ? Pourquoi sont - ils définis de cette façon? ?

En fait..., Comme pour la réutilisation des programmes , L'algèbre linéaire définit le produit dot 、 Les produits croisés et les opérations matricielles sont parce qu'ils sont très largement utilisés , Il y a une grande valeur de réutilisation , Peut servir de base à notre analyse et à notre résolution de problèmes .Par exemple,, Beaucoup de problèmes sont liés à la projection d'un vecteur à un autre ou à la recherche de l'angle entre deux vecteurs , Ensuite, nous envisagerons de définir spécifiquement le produit dot (Dot Product)Cette opération:

Insérer la description de l'image ici

L'introduction du concept de produit dot appartient au design , Il y a de la place pour la création ; Une fois la conception terminée , La formule concrète ne peut pas être jouée à volonté , Doit être logique , Assurez - vous qu'il est correctement cartographié au modèle mathématique élémentaire . C'est comme un langage de haut niveau qui définit beaucoup de concepts. , Quelle fonction d'ordre supérieur 、 Fermetures, etc. , Mais il doit s'assurer que les effets de l'exécution lors de la cartographie de la mise en oeuvre sous - jacente sont conformes aux spécifications qu'il définit .

Où est l'algèbre linéaire ?
Ça dit:, L'algèbre linéaire est un modèle abstrait de haut niveau , Nous pouvons apprendre la grammaire et la sémantique d'un langage de programmation en apprenant , Mais cette connaissance ne concerne pas seulement l'algèbre linéaire , C'est commun à toutes les disciplines mathématiques ,Quelqu'un peut avoir des questions.

Calcul、 La théorie des probabilités est aussi une abstraction de haut niveau , Alors, où est la caractéristique de l'abstraction de haut niveau de l'algèbre linéaire ?

Cela pose la question fondamentale , Le noyau de l'algèbre linéaire :Modèle vectoriel. Le système de coordonnées que nous avons appris en mathématiques élémentaires appartient au modèle analytique proposé par Descartes ,C'est Les modèles sont utiles , Mais il y a aussi de gros inconvénients . Le système de coordonnées est un système de référence virtuel artificiel plus , Mais le problème que nous devons résoudre , Comme trouver une zone ,Rotation graphique、 Les applications telles que l'étirement sont indépendantes du système de coordonnées ,Établissement I Un système de coordonnées virtuel n'aide souvent pas à résoudre le problème , C'est ce qui s'est passé avec l'exemple de la zone triangulaire .

Le Modèle vectoriel surmonte bien les inconvénients du modèle analytique , Si le modèle analytique représente une sorte de “Absolutisme”La vision du monde, Alors le Modèle vectoriel représente une sorte de “Relativité”La vision du monde, Je recommande de considérer le Modèle vectoriel et le modèle analytique comme deux modèles opposés .

Les concepts de vecteur et scalaire sont définis dans le Modèle vectoriel . Le vecteur a une taille et une direction , Satisfaire à la loi de combinaison linéaire ; Une échelle est une quantité dont la taille n'a pas de direction (Note:: Une autre définition plus profonde du scalaire est la quantité qui reste constante dans la transformation des coordonnées ). L'un des avantages du Modèle vectoriel est son indépendance du système de coordonnées , C'est - à - dire la relativité , Il élimine les contraintes du système de coordonnées dès le début en définissant les vecteurs et les règles de fonctionnement , Peu importe la rotation de votre axe , Je peux m'adapter. , Combinaison linéaire de vecteurs 、Produit intérieur、Produit croisé、 Transformation linéaire, etc. Toutes les opérations isométriques sont indépendantes du système de coordonnées .Attention!, L'indépendance du système de coordonnées ne signifie pas qu'il n'y a pas de système de coordonnées ,Il y en a encore., Les sommets de l'exemple du triangle sont représentés par des coordonnées , C'est juste différent quand on résout un problème Le système de coordonnées de ne pas affecter .Avec une métaphore,Java Plate - forme présumée non pertinente ,Ce n'est pas queJavaC'est le pavillon dans l'air, C'est que vous utilisez Java La couche inférieure de la programmation est LinuxToujoursWindowsAllez. Ça n'a aucun effet sur toi .

Quels sont les avantages du Modèle vectoriel ? Sauf que le problème de la surface du triangle est un exemple , Voici un autre exemple de géométrie :

Un point dans un système de coordonnées 3D donné (x0, y0, z0)Et un planax + by + c*z + d = 0, Trouvez la distance verticale entre le point et le plan ?

Insérer la description de l'image ici

Si le problème doit être résolu d'un point de vue géométrique analytique, il est presque trop compliqué pour commencer , Sauf dans le cas particulier où le plan est juste au - dessus de l'axe , Mais si l'on considère le Modèle vectoriel, c'est simple : Selon l'équation du plan ,Vecteur normal du plan(Normal Vector)- Oui.v=(a, b, c), À partir de n'importe quel point de l'avion (x, y, z)À(x0, y0, z0)Le vecteur dew, Donc à travers le produit intérieur dot_product(w, v)CalculerwÀv Vecteur de projection pour p, Sa taille est (x0, y0, z0)Au planax + by + c*z + d = 0La distance verticale de. Les concepts de base du Modèle vectoriel sont utilisés ici :Vecteur normal,Vecteur de projection,Produit intérieur, Tout le processus de résolution des problèmes est simple et rapide .

Laissez - nous un autre exercice similaire ( Les amis familiers avec l'apprentissage automatique peuvent trouver ceci une application de l'algèbre linéaire dans la classification linéaire ):

Compte tenu den Deux points dans l'espace dimensionnel (a1, a2, … an),(b1, b2, … bn) Et un hyperplan c1x1 + c2x2 … + cn*xn + d = 0, Veuillez déterminer si deux points sont du même côté ou de l'autre côté de l'hyperplan ?

Quitter le vecteur , Ensuite, nous allons trouver un autre protagoniste de l'algèbre linéaire :Matrice(Matrix).

L'algèbre linéaire définit les matrices et les vecteurs 、Multiplication des matrices et des matrices, Les règles de calcul sont compliquées , Il n'est pas clair ce qu'il faut faire , Beaucoup de débutants ne comprennent pas bien , .On peut dire que la matrice est un obstacle à l'apprentissage de l'algèbre linéaire Tigre. Rencontrer des choses compliquées , Il est souvent nécessaire d'éviter d'entrer dans les détails , D'abord, prenez - le dans son ensemble .En fait...,Du point de vue de la procédure, Quelle que soit la forme étrange , C'est une sorte de grammaire , La syntaxe doit correspondre à la sémantique , Donc le but de comprendre la matrice est de comprendre sa sémantique . La sémantique d'une matrice est plus d'une , Il existe différentes sémantiques dans différents environnements , Il peut également y avoir différentes interprétations dans le même environnement ,Les plus courants sont::1) Représente une linéarité Transformation;2) Représente une collection de vecteurs de colonne ou de ligne ;3) Un ensemble représentant une sous - matrice .

La matrice dans son ensemble correspond à la sémantique de transformation linéaire :Avec une matriceAMultiplier par un vecteurvJe l'ai.w,MatriceAC'est tout.vÀwLa transformation linéaire de.Par exemple,, Si vous voulez mettre un vecteur v0 Tourner dans le sens contraire des aiguilles d'une montre 60Le degré donnev’, Il suffit de transformer la matrice par rotation (Rotation Matrix)Va prendrev0C'est bon.
Insérer la description de l'image ici

Sauf pour les transformations rotationnelles , La transformation d'étirement est également une transformation courante ,Par exemple,, On peut tracer le vecteur à travers une matrice d'étirement xétirement de l'arbre2X( Essayez de donner vous - même la forme de la matrice d'étirement ).Plus important encore,, La multiplication matricielle a une bonne propriété : Taux de liaison satisfaisant . Cela signifie que les transformations linéaires peuvent être superposées ,Par exemple,,On peut mettre“ Tourner dans le sens contraire des aiguilles d'une montre 60Degré”La matrice deMEt“Le longxétirement de l'arbre2X”La matrice deNMultiplication,Obtenir une nouvelle matriceTPour représenter“ Tourner dans le sens contraire des aiguilles d'une montre 60 Deg Edge xétirement de l'arbre2X”. Est - ce que ça nous ressemble beaucoup Shell Plusieurs commandes sont superposées par Pipeline ?

L'indépendance du système de coordonnées du Modèle vectoriel est soulignée ci - dessus ,En plus de ça,, Un autre avantage du Modèle vectoriel est :Linéaire, Il peut donc être utilisé pour représenter des relations linéaires , Maintenant regardons un familier Fibonacci Exemple de séquence :

Fibonacci Les colonnes sont définies comme suit: :f(n) = f(n-1) + f(n-2), f(0) = 0, f(1) = 1;Questions:Entréen, S'il vous plaît. f(n) La complexité temporelle de O(logn)Algorithme.

Tout d'abord,, Nous construisons deux vecteurs v1 = (f(n+1), f(n))Etv2 = (f(n+2), f(n+1)),SelonFibonacciPropriétés des séries, Nous pouvons obtenir de v1Àv2 Matrice de transformation récursive de :

Insérer la description de l'image ici

Et obtenir :

Insérer la description de l'image ici

Ceci convertit le problème de récurrence linéaire en une matrice n Problèmes classiques de puissance ,InO(log n) Résolution dans le temps . En plus des séquences récursives linéaires , Célèbre en mathématiques élémentaires n Le problème des systèmes d'équations méta - primaires peut également être facilement résolu par la multiplication des matrices et des vecteurs . Cet exemple vise à illustrer ,Tout ce qui est satisfait Les systèmes de relations linéaires sont là où les modèles vectoriels sont utilisés , Nous pouvons souvent le transformer en algèbre linéaire pour obtenir des solutions simples et efficaces .

En dernier analyse, Mon expérience est que le Modèle vectoriel est le noyau de toute l'algèbre linéaire ,Concept de vecteur、Nature、Relations、 La transformation est au centre de la maîtrise et de l'application de l'algèbre linéaire .

Résumé
Cet article présente un point de vue :Du point de vue de l'application, Nous pouvons considérer l'algèbre linéaire comme un langage de programme dans un domaine particulier . L'algèbre linéaire établit un Modèle vectoriel basé sur les mathématiques élémentaires , Définit un ensemble de syntaxe et de sémantique , Contrat linguistique conforme à la langue de procédure . Le Modèle vectoriel est indépendant du système de coordonnées et linéaire , C'est le noyau de toute l'algèbre linéaire , Est le meilleur modèle pour résoudre les problèmes d'espace linéaire .

Disclaimer:Cet article est reproduit sur le Web,Le droit d'auteur appartient à l'auteur original..En cas de problème,Veuillez nous contacter,Merci beaucoup.!
————————————————
Avis de copyright:Cet article estCSDNBlogueurs「weixin_39890332」Article original de,SuivreCC 4.0 BY-SAAccord de droit d'auteur,Veuillez joindre un lien vers la source originale et cette déclaration..
Lien vers le texte original:https://blog.csdn.net/weixin_39890332/article/details/111323846

Mentions de copyright
Auteur de cet article [La voie de la croissance de zmikoo],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/135/202205142358149440.html

Recommandé au hasard