Décomposition polaire
La matrice de lignes (2, 1) et (0, 3) se décompose en une rotation U et un étirement symétrique P, avec A = U P. Saisissez une matrice carrée jusqu'à 16 sur 16 pour obtenir les deux facteurs, les valeurs singulières et le résidu. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
La décomposition polaire factorise une matrice réelle carrée A comme le produit d'une matrice orthogonale U et d'une matrice symétrique semi-définie positive unique P, écrite A = U P. Le facteur d'étirement P est la racine carrée matricielle de A transposée fois A ; le facteur orthogonal U est la rotation ou réflexion la plus proche de A au sens de la norme de Frobenius et provient des vecteurs singuliers gauche et droit. Les codes de mécanique des milieux continus récupèrent ainsi une rotation à partir d'un gradient de déformation ; les chaînes de robotique et d'infographie extraient un mouvement rigide d'une application linéaire ; les analystes numériques projettent une matrice calculée vers SO(n) ou O(n). Ce point d'accès accepte un tableau n par n de nombres finis, exécute une décomposition en valeurs singulières de Jacobi déterministe sans réseau et sans hasard, et renvoie les deux matrices facteurs plus les valeurs singulières, det(U), un résidu de A moins U P et un indicateur d'inversibilité.
Ce que A = U P signifie et comment les deux facteurs sont uniques
La décomposition polaire droite d'une matrice réelle carrée A est la factorisation A = U P dans laquelle U est orthogonale (U transposée fois U égale l'identité) et P est symétrique et semi-définie positive. Le facteur d'étirement P est unique pour toute A carrée : c'est l'unique racine carrée semi-définie positive de la matrice de Gram A transposée A. Lorsque A est inversible, le facteur orthogonal est unique lui aussi et égale A fois l'inverse de P.
Lorsque A est singulière, U reste une matrice orthogonale la plus proche de A au sens de Frobenius, obtenue à partir d'une décomposition en valeurs singulières A = W Σ V-transposée par le produit U = W V-transposée, tandis que P égale V Σ V-transposée. Géométriquement U est une rotation ou une rotation composée avec une réflexion, et P étire le long d'un ensemble orthonormé d'axes selon les valeurs singulières de A.
C'est pourquoi la mécanique des milieux continus écrit un gradient de déformation sous la forme R U (ou V R) et pourquoi le problème orthogonal de Procrustes se résout par le facteur polaire d'une covariance croisée. La décomposition polaire gauche A = P_left U utilise le même facteur orthogonal et la racine carrée de A A-transposée ; ce calculateur renvoie la forme droite A = U P, convention adoptée par la plupart des manuels et des codes de production.
Pour une matrice un par un, les facteurs se réduisent au signe de l'entrée et à sa valeur absolue, le signe de zéro étant pris comme plus un. Pour une matrice déjà orthogonale, l'étirement est l'identité et U égale A. Pour une matrice déjà symétrique semi-définie positive, le facteur orthogonal est l'identité et P égale A.
Ces trois contrôles sont le moyen le plus rapide de confirmer une implémentation avant de faire confiance à un gradient de déformation trois par trois issu d'un dump de simulation.
Où la décomposition polaire rend service
Les salles de classe et les carnets d'algèbre linéaire utilisent un calculateur de décomposition polaire pour que les étudiants vérifient que U-transposée U égale l'identité et que P égale P-transposée avec des valeurs propres non négatives, sans déployer un système d'algèbre formelle complet pour une matrice de devoir trois par trois.
Les post-processeurs de mécanique des milieux continus et d'éléments finis récupèrent un tenseur de rotation à partir d'un gradient de déformation F en lisant le facteur orthogonal et un tenseur d'étirement à partir du facteur positif, ce qui est exactement la décomposition polaire droite F = R U enseignée dans tout cours de milieux continus.
Les chaînes de robotique, de vision par ordinateur et d'infographie résolvent le problème orthogonal de Procrustes — trouver la rotation la plus proche d'une application trois par trois calculée — en prenant le facteur polaire de cette application, ce qui est moins coûteux et plus stable sur un worker de bord que d'assembler une bibliothèque SVD dense explicite. Les codes de commande et d'identification qui doivent projeter une matrice presque orthogonale vers O(n) après une mise à jour bruitée font la même projection en un seul appel.
Une validation en échec ne consomme pas le solde. Gardez n au plus égal à seize, figez les facteurs arrondis dans les tests, et vous obtenez des U et P reproductibles pour les devoirs, les greffons LMS et les workers de bord sans importer votre propre bibliothèque d'algèbre linéaire dense.
Cas d’usage
Du gradient de déformation à la rotation et à l'étirement
Séparez un gradient de déformation de mécanique des milieux continus F = R U en une rotation orthogonale et un étirement semi-défini positif unique pour le post-traitement ou les contrôles constitutifs.
Matrice orthogonale la plus proche (Procrustes)
Projetez une application carrée bruitée sur O(n) en lisant le facteur polaire orthogonal, unique rotation ou réflexion la plus proche au sens de Frobenius.
Contrôles en classe et dans le carnet
Laissez les étudiants envoyer une matrice n par n et vérifier U-transposée U = I, P = P-transposée et A = U P par rapport aux méthodes du manuel.
Questions fréquentes
Que se passe-t-il si la matrice est singulière ?
La décomposition polaire existe encore. P reste l'unique racine carrée PSD de A-transposée A.
Et si l'entrée n'est pas une matrice numérique carrée ?
Les charges rectangulaires, irrégulières, vides, absentes ou non numériques sont rejetées et ne sont pas facturées.
En quoi la décomposition polaire diffère-t-elle de SVD ou QR ?
SVD écrit A = W Σ V-transposée avec deux orthogonales et une diagonale. La décomposition polaire replie cela en A = U P avec une orthogonale et un étirement PSD (U = W V-transposée, P = V Σ V-transposée). QR utilise un facteur triangulaire, pas un PSD.
Que signifient géométriquement les deux facteurs ?
U est une rotation, ou une rotation suivie d'une réflexion, et P étire l'espace le long d'axes perpendiculaires selon les valeurs singulières. Appliquer d'abord P puis U redonne la matrice d'origine.
S'agit-il de la décomposition polaire à droite ou à gauche ?
À droite, A = U P, celle qu'utilisent la plupart des manuels. La forme à gauche place l'étirement à gauche de U, construit à partir de A multipliée par sa transposée, et partage le même facteur orthogonal.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/math/polar-decomposition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"matrix":[[2,1],[0,3]]}'const res = await fetch("https://api.kit.forhosting.com/math/polar-decomposition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"matrix": [
[
2,
1
],
[
0,
3
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/polar-decomposition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"matrix": [
[
2,
1
],
[
0,
3
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/polar-decomposition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"matrix":[[2,1],[0,3]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"matrix":[[2,1],[0,3]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/polar-decomposition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"matrix": [
[
2,
1
],
[
0,
3
]
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.polar_decomposition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_n | 16 |
max_abs_entry | 1000000000000000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Une charge utile non carrée ou non numérique échoue avec invalid_input et n'est pas facturée.
Contrat d'entrée, chemin SVD de Jacobi et forme de la réponse
Un entier facultatif precision entre zéro et quinze (dix par défaut) fixe les décimales lors de l'arrondi de chaque champ numérique de la réponse. En interne le solveur construit la matrice de Gram G = A-transposée A, exécute une eigen-décomposition cyclique de Jacobi de G pour obtenir G = V Λ V-transposée, prend les valeurs singulières comme les racines carrées des valeurs propres bornées, forme P = V diag(σ) V-transposée, construit les vecteurs singuliers gauches W en envoyant chaque vecteur droit à travers A et en divisant par sa valeur singulière, complète le noyau par Gram-Schmidt modifié contre la base canonique, et pose U = W V-transposée. Associez les deux matrices facteurs à votre propre graphique si vous avez besoin d'une figure ; ce point d'accès ne renvoie que des nombres et n'émet pas de prose pas à pas au-delà du champ formula. Envoyez un corps JSON dont le champ obligatoire matrix est un tableau carré de lignes de nombres finis : n lignes, chacune avec exactement n colonnes, n valant au moins un et au plus seize. Les alias a, A et mat sont acceptés. L'absence de matrix, un non-tableau, une forme irrégulière ou rectangulaire, des lignes vides, des entrées non finies, des entrées de magnitude supérieure à dix puissance quinze, ou un n au-dessus de la limite publiée échouent avec invalid_input en nommant le champ ; ces échecs ne sont pas facturés. La réponse répète n, la matrice analysée, le facteur orthogonal, le facteur semi-défini positif, les valeurs singulières décroissantes, det_orthogonal (plus ou moins un pour une U bien conditionnée), un booléen is_invertible, le résidu de Frobenius de A moins U P, la précision utilisée et une courte chaîne de formule.
Questions techniques
Comment calcule-t-on la décomposition polaire d'une matrice carrée ?
Envoyez un tableau carré de nombres finis dans matrix (alias a, A, mat). L'API renvoie U orthogonale et P semi-définie positive de sorte que A = U P, plus les valeurs singulières, det(U) et un résidu de Frobenius.
Combien coûte le calculateur de décomposition polaire ?
L'outil du navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.