[PYTHON] Partez numpy? !! Différencier partiellement la matrice avec Sympy

Journal des modifications

2020.4.28. Ajouté: Différencier la fonction scalaire avec le vecteur

introduction

Bonsoir, je suis un vieil ingénieur. Mon temps n'est pas encore terminé. Cependant, il semble que l'ère de Numpy en matière d'opérations matricielles soit révolue. Son nom est Sympy (je ne pense pas que ce soit un nouveau py)!

Diverses choses telles que la différenciation partielle des matrices avec Sympy

Pour le moment, vous pouvez faire quelque chose comme ça.

python


#%%
import sympy as sym
from IPython.display import Math, display

#Définir des variables
(x, y, p, q) = sym.symbols("x y p q")
#Définir une matrice
A = sym.Matrix([
    [x,2*x,3*x],
    [4*x,5*x,6*x]
])
display((Math(f"A={sym.latex(A)}")))
B = sym.Matrix([
    [y,y],
    [4*y,5*y],
    [7*y,y]
])
display((Math(f"B={sym.latex(B)}")))
#Définir la fonction vectorielle
xy = sym.Matrix([
    [x,y]
])
display((Math(f"xy={sym.latex(xy)}")))
pq = sym.Matrix([
    [3*x*y,2*x+y]
])
display((Math(f"pq={sym.latex(pq)}")))
#Définir la fonction scalaire
f = x**2

#Multiplication entre matrices
C = A * B
display((Math(f"C=AB={sym.latex(C)}")))

#Matrice x,Remplacez y par un nombre
C1 = C.subs({x:10, y: 20})
display((Math(f"C(10,20)={sym.latex(C1)}")))

#Différencier partiellement la matrice par x
dCdx = sym.diff(C, x)
display((Math(r"\frac{\partial C}{\partial x}"f"={sym.latex(dCdx)}")))
#Différencier partiellement la matrice avec y
dCdy = sym.diff(C, y)
display((Math(r"\frac{\partial C}{\partial y}"f"={sym.latex(dCdy)}")))

#Différencier la fonction scalaire avec un vecteur
dfdxy = sym.diff(f, xy)
display((Math(r"\frac{df}{dxy}"f"={sym.latex(dfdxy)}")))
#Différencier la fonction vectorielle par vecteur
dpqdxy = sym.diff(pq, xy.T)
display((Math(r"\frac{dpq}{dxy}"f"={sym.latex(dpqdxy)}")))
#Différencier la fonction scalaire avec une matrice(J'obtiens une erreur)
# dfdA = sym.diff(f, A)
# display((Math(r"\frac{df}{dA}"f"={sym.latex(dfdA)}")))

Essayez de copier ou de copier à partir de # %% sur la première ligne avec Visual Studio Code.

%% sur la première ligne est une magie qui transforme VS Code en notebook Jupyter.

Vous ne pouvez pas le faire normalement. Piquez la cellule Run dans la figure ci-dessous.

image.png

Ensuite, quelque chose comme ça sortira! image.png

Bien entendu, les éléments de la matrice peuvent être des nombres, mais ils peuvent aussi être des lettres comme dans l'exemple ci-dessus. Le calcul se fait également avec des caractères. De plus, vous pouvez substituer une valeur numérique à ce caractère (variable), comme M. Tanaka qui met une formule. Il y a aussi un pervers ... La différenciation est également possible avec un vecteur, donc lors de l'enseignement de la loi de chaîne de propagation arrière Cela semble utilisable. Alors je vais déjeuner.

Recommended Posts

Partez numpy? !! Différencier partiellement la matrice avec Sympy
Concaténation de matrices avec Numpy
Equation de mouvement avec sympy
Essayez l'opération matricielle avec NumPy
Visualisation de la matrice créée par numpy
L'histoire du calcul numérique des équations différentielles avec TensorFlow 2.0
Comparaison de la vitesse de transposition de la matrice par Python
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
J'ai essayé la différenciation jacobienne et partielle avec python
1. Statistiques apprises avec Python 1-2. Calcul de diverses statistiques (Numpy)
Calcul de la quantité d'informations mutuelles (valeur continue) avec numpy
Transposons la matrice et multiplions les matrices par numpy.
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
J'ai essayé Smith en standardisant une matrice entière avec Numpy
Résolvez des équations différentielles normales simultanées avec Python et SymPy.
Créer une matrice avec numpy uniquement pour les colonnes dont la valeur totale des éléments des colonnes de la matrice est le X supérieur
NumPy> [1, 2, 3, 4, 5, 6, 7, 8, 9] avec 3 ndarrays ([1,4,7], [2,5,8], [3,6,9]) Implémentation à diviser en> {Comment utiliser slice / reshape () + Méthode de translocation matricielle}