On considère une fonction `f(x,y)`. On regroupe les arguments `x,y` en un vecteur `vec u`. Apparaît alors une seconde forme d'appel de la fonction qui est `f=f(vecu)=f(x,y)`. La différentielle d'un vecteur est le vecteur des différentielles de ses composantes :
`vec u = ((x),(y))` `dvecu = d((x),(y)) = ((dx),(dy))`
La dérivée `f’` regroupe ces deux dérivées partielles sous forme d'un vecteur :
`vecf’ = (( f’_x),( f’_y)) = ( ((delf)/(delx)),((delf)/(dely)) ) = ((del/(delx)),(del/(dely)))f = vec nabla f` `vec nabla = ((del/(delx)), (del/(dely)))`
La définition algèbrique de la dérivé de la fonction `f(vecu)` est :
`vec f’←"vec u `
`df = vec f’"·"dvecu`
`df = (((delf)/(del x)),((delf)/(del y)))"·"((dx),(dy))`
`df = (delf)/(del x)dx+(delf)/(del y)dy`
`d=del_x+del_y`
`d^2 = (del_x+del_y)^2 = del_x^2+2del_xdel_y+del_y^2`
Le développement de Taylor est :
`f(vec u +dvecu) = f(vecu) +vecf’"·"dvecu +O(epsilon^2)`
`f(vec u +dvecu) = f(vecu) +vecf’"·"dvecu +(F’’"·"dvecu"·"dvecu)/2 + O(epsilon^3)`
`f(vec u +dvecu) = f(vecu) +vecf’"·"dvecu +(F’’"·"dvecu"·"dvecu)/2 + (F’’’"·"dvecu"·"dvecu"·"dvecu)/(3!) + O(epsilon^4)`
Les dérivées successives de `f` notée `vecf’,F’’,F’’’,...` sont des tenseurs symétriques de dimension `1,2,3,...`
`vecf’ = [(delf)/(delu_i)]_i`
`F’’ = [(del^2f)/(del u_i del u_j)]_(i,j)`
`F’’’= [(del^3f)/(del u_i del u_j del u_k)]_(i,j,k)`
L'opération de produit croisé notée `"·"` d'évaluation à gauche d'abord, est le produit d'un tenseur par un vecteur dont l'expression générale est la suivante. Pour un tenseur `T= [T_(i,...,j,k)]_(i,...,j,k)` et un vecteur `V = [V_k]_k`, le produit croisé est définie par :
`T"·"V = [sum_k T_(i,...,j,k)V_k]_(i,...,j)`
Pour des raisons propres aux fonctions harmoniques où les dérivées à partir de la troisième sont généralement des fonctions connues des dérivées première et seconde, souvent on n'utilisera que la dérivée seconde et pas les suivantes. Il y a alors une représentation de la série de Taylor utilisant le produit matriciel et la transposé qui devient pertinente :
`vec u = ((x),(y))` `vecf’ = ((f’_x),( f’_y)) = ( ((delf)/(delx)),((delf)/(dely)) ) = ((del/(delx)),(del/(dely)))f = vec nabla f` `vec nabla = ((del/(delx)), (del/(dely)))`
`vec f’←"vec u `
`df = vec f’^⊤ dvecu`
`df = ((delf)/(del x),(delf)/(del y))((dx),(dy))`
`df = (delf)/(del x)dx+(delf)/(del y)dy`
Le développement de Taylor est :
`f(vec u +dvecu) = f(vecu) +vec nabla^"⊤"f dvecu + (dvecu^⊤ vec nabla vec nabla^⊤f dvecu)/2 + O(epsilon^3)` `vec nabla vec nabla^"⊤" = (( (del^2)/(delx^2), (del^2)/(delxdely) ),( (del^2)/(delxdely) ,(del^2)/(dely^2) ))`
`f(vec u +dvecu) = f(vecu) +vecf’^⊤ dvecu +(dvecu^⊤ F’’dvecu)/2 + O(epsilon^3)`
`f(vec u +dvecu) = f(vecu) +( (delf)/(delx),(delf)/(dely) ) ((dx),(dy)) + 1/2( dx,dy ) (( (del^2f)/(delx^2), (del^2f)/(delxdely) ),( (del^2f)/(delxdely) ,(del^2f)/(dely^2) )) ((dx),(dy)) + O(epsilon^3)`
La dérivée seconde de `f` est représenté par la matrice hessienne `F’’ = nabla nabla^⊤f = (( (del^2f)/(delx^2), (del^2f)/(delxdely) ),( (del^2f)/(delxdely) ,(del^2f)/(dely^2) ))`
La matrice apparait ici comme un vecteur colonne de vecteurs lignes, dans cette disposition particulière avec laquel la notation anglaise a définit le produit matriciel. Mais il y a un arbitraire dans la représention des vecteurs, soit en ligne ou soit en colonne, passant de la matrice à sa transposée. Pour lever cette arbitraire qui est source d'erreurs et permettre de concevoir des matrices de dimension supérieures sans effort, on définit une notion plus générale que celle de matrice qui est celle de tenseur. On définit le tenseur par un procédé constructif récurcif, ajoutant à chaque fois une dimension. Le tenseur de dimension `0` est un scalaire, une valeur réel. Le tenseur de dimension `1` est un vecteur, indépendament de sa représentation en ligne ou en colonne. Le tenseur de dimension `2` est un vecteur de vecteurs toujours indépendament de sa représentation en ligne ou en colonne. etc.. Le tenseur de dimension `3` est un vecteur de vecteurs de vecteurs, ou plus simplement, un vecteur de tenseurs de dimension `2`. Etc.. Un tenseur de dimension `n"+"1` est un vecteur de tenseurs de dimension `n`. Libéré de l'arbitraire graphique, on peut alors proposer une notation sans ambiguité.
La défininition d'un tenseur se fait à l'aide de l'opérateur crochet indicé qui détermine la valeur de l'élément indicé du tenseur. Voici un exemple où il faut remplacer le point par une expression de `i,j,k` :
`[ "." ]_(i,j,k)`
Pour simplifier l'écriture, les tailles des dimensions sont préalablement déclarées et associées aux différents noms d'indice. Le choix de l'indice prédispose donc la taille de la dimension concerné. Voici quelques exemples :
`i in {1,2}`
`j in {1,2,3}`
`k in {0,1}``[a_j]_j = (a_1,a_2)` `[2j]_j = (2,4,6)`
`[a_(i,k)]_(i,k) = "(" (a_(1,0),a_(1,1)), (a_(2,0),a_(2,1)) ")"` `[100i"+"5k]_(i,k) = "(" (100,105), (200,205) ")"`
Et avec la représentation anglaise, le premier indice désigne la ligne et le second indice désine la colonne :
`[a_(i,k)]_(i,k) = ((a_(1,0),a_(1,1)), (a_(2,0),a_(2,1)))` `[100i"+"5k]_(i,k) = ((100,105), (200,205))`
Condidérons le tenseur de dimension `4` suivant :
`T = [T_(i,j,k,l)]_(i,j,k,l)`
C'est un tableau de scalaires à `4` dimensions. La taille de chaque dimension doit être préalablement déclarée comme suit :
`i in {1,2,...N_1}`
`j in {1,2,...N_2}`
`k in {1,2,...N_3}`
`l in {1,2,...N_4}`
La construction récursive du tenseur fait que :
`T_(i,j,k,l)` est un scalaire.
`T_(i,j,k)` est le vecteur `[T_(i,j,k,l)]_l`
`T_(i,j)` est le tenseur à 2 dimensions `[T_(i,j,k,l)]_(k,l)`
`T_i` est le tenseur à 3 dimensions `[T_(i,j,k,l)]_(j,k,l)`
`T` est le tenseur à 4 dimensions `[T_(i,j,k,l)]_(i,j,k,l)`
On définit le produit d'un tenseur par un vecteur. La taille de la dernière dimension du tenseur doit être égale à la taille du vecteur. Etant donné les 3 vecteurs suivants :
`U =[U_l]_l`
`V =[V_k]_k`
`W =[V_j]_j`
Les tailles des dimensions sont préalablement déclarées et associées aux différents noms d'indice. Le choix de l'indice prédispose donc la taille du vecteur. Voici le produit du tenseur `T` par le vecteur `U` :
`T"×"U = [sum_l T_(i,j,k,l)U_l]_(i,j,k)`
Le résultat est un tenseur à 3 dimensions. Si on refait un produit par le vecteur `V`
`T"×"U"×"V = [sum_k [sum_l T_(i,j,k,l)U_l]_(i,j,k) V_k]_(i,j)`
`T"×"U"×"V = [sum_(k,l) T_(i,j,k,l)U_l V_k]_(i,j)`
Le résultat est un tenseur à 2 dimensions. Si on refait un produit par le vecteur`W` :
`T"×"U"×"V"×"W = [sum_j [sum_(k,l) T_(i,j,k,l)U_l V_k]_(i,j) W_j]_i`
`T"×"U"×"V"×"W = [sum_(j,k,l) T_(i,j,k,l)U_l V_k W_j]_i`
Le résultat est un vecteur. Cette présentation a l'avantage d'être abordable sans connaissance préalable.
Etant donné une fonction `vec f` de `RR^n->RR^m`. Elle s'applique sur `n` variables, vecu = (u_1,u2,,...,u_n) `, et retourne m composantes vecf=(f_1,f_2,...,f_n). La série de Taylor est :
`f(vec u +dvecu) = f(vecu) +vecf’"·"dvecu +F’’"·"dvecu"·"dvecu + F’’’"·"dvecu"·"dvecu"·"dvecu + O(epsilon^3)`
`i in {1,2,...,m}`
`j in {1,2,...,n}`
`k in {1,2,...,n}`
`l in {1,2,...,n} ``vecf'' = [(delf)/(delu_j)]_j`
`vecf'' = [(del^2f)/(del u_j del u_k)]_(i,j)`
`vecf'' = [(del^3f)/(del u_i del u_j del u_k)]_(i,j,k)`
Ces tenseurs sont symétriques. Le produit croisé "·" s'évalue à gauche d'abord. Pour un tenseur `T= [T_(i,j,k,l)]_(i,j,k,l)` et un vecteur `V = [V_l]_l` Le produit est définie par :
`T"·"V = [sum_l T_(i,j,k,l)*V_l]`
On considère maintenant un vecteur `vec x` à deux composantes et une fonction vectoriel `vecf(vecx)` à trois composntes :
`vec f "←"vec x`
`vec f = ((f_1),(f_2),(f_3))` `dvec f = ((df_1),(df_2),(df_3))` `vec x = ((x_1),(x_2))` `dvec x = ((dx_1),(dx_2))`
`F’ = ∇vecf = (dvecf)/(dvecx) = ( ((df_1)/(dvecx)), ((df_2)/(dvecx)), ((df_3)/(dvecx)) ) = ((( df_1)/(dx_1),(df_1)/(dx_2)), ((df_2)/(dx_1),(df_2)/(dx_2)),((df_3)/(dx_1),(df_3)/(dx_2))) `
`F’_i=`
La définition algèbrique de la dérivée `dvecf ` :
`dvecf = F'"·"dvecx`
`((( df_1)/(dx_1),(df_1)/(dx_2)), ((df_2)/(dx_1),(df_2)/(dx_2)),((df_3)/(dx_1),(df_3)/(dx_2))) ((dx_1),(dx_2)) = ( ((df_1)/(dx_1)dx_1+(df_1)/(dx_2)dx_2),((df_2)/(dx_1)dx_1+(df_2)/(dx_2)dx_2), ((df_3)/(dx_1)dx_1+(df_3)/(dx_2)dx_2)) `
La dérivée de `f` qui se note `vecf'` ou `vec"grad"(f)` ou encore `vec ∇f`, est le vecteur des dérivés partielles de `f` selon `x` et `y` :
`vecf' =vec"grad"(f) = vec∇f = (df)/(dvecu) = (((delf)/(delx)), ((delf)/(dely)))` `vec∇ = d/(dvec u)= ((del/(delx)), (del/(dely)))`