Question

En utilisant diverses mathématiques matricielles, j'ai résolu un système d'équations donnant des coefficients pour un polynôme de degré 'n'

Ax^(n-1) + Bx^(n-2) + ... + Z

J'évalue ensuite le polynôme sur une plage x donnée, essentiellement, je reproduis la courbe polynomiale. Maintenant, voici le piège. J'ai effectué ce travail dans un système de coordonnées appelé "espace de données". Maintenant, je dois présenter la même courbe dans un autre espace de coordonnées. Il est facile de transformer les entrées / sorties vers et depuis les espaces de coordonnées, mais l'utilisateur final ne s'intéresse qu'aux coefficients [A, B, ...., Z] puisqu'il peut reconstruire le polynôme à lui seul. Comment puis-je présenter un deuxième ensemble de coefficients [A ', B', ...., Z '] qui représentent la même courbe en forme dans un système de coordonnées différent.

Si cela peut aider, je travaille dans un espace 2D. Plain vieux x et y. Je pense aussi que cela peut impliquer de multiplier les coefficients par une matrice de transformation. Certains intégreraient-ils le facteur échelle / translation entre les systèmes de coordonnées? Serait-ce l'inverse de cette matrice? Je sens que je vais dans la bonne direction ...

Mise à jour: les systèmes de coordonnées sont linéairement liés. Cela aurait été utile, hein?

Était-ce utile?

La solution

L'énoncé du problème est légèrement flou. Je vais donc tout d'abord clarifier ma propre interprétation:

Vous avez une fonction polynomiale

f (x) = C n x n + C n-1 x n-1 + ... + C 0

[J'ai changé A, B, ... Z en C n , C n-1 , ..., C 0 travailler plus facilement avec l’algèbre linéaire ci-dessous.]

Vous avez également une transformation telle que: & nbsp; z = ax + b & nbsp; que vous voulez utiliser pour trouver des coefficients pour le même polynôme, mais en termes de z :

f (z) = D n z n + D n-1 z n-1 + ... + D 0

Cela peut être fait assez facilement avec une algèbre linéaire. En particulier, vous pouvez définir une matrice (n + 1) × (n + 1) T qui nous permet de faire la multiplication matricielle

& nbsp; d = T * c ,

d est un vecteur de colonne avec l'entrée supérieure D 0 , jusqu'à la dernière entrée D n , le vecteur de colonne c est similaire pour les coefficients C i et la matrice T a ( i, j) -th [i th ligne, j th colonne] entrée t ij donnée par

& nbsp; t ij = ( j choisissez i ) a i b ji .

Où ( j choisissez i ) est le coefficient binomial et = 0 lorsque i > j . De plus, contrairement aux matrices standard, je pense que i, j vont de 0 à n (vous commencez habituellement à 1).

C’est un bon moyen d’écrire l’extension et la recompression du polynôme lorsque vous insérez z = ax + b à la main et utilisez le théorème binomial .

Autres conseils

La réponse de Tyler est la bonne réponse si vous devez calculer ce changement de variable z = ax + b plusieurs fois (je veux dire pour de nombreux polynômes différents). Par contre, si vous ne devez le faire qu’une seule fois, il est beaucoup plus rapide de combiner le calcul des coefficients de la matrice avec l’évaluation finale. La meilleure façon de le faire est d’évaluer symboliquement votre polynôme au point (ax + b) par la méthode de Hörner:

  • vous stockez les coefficients polynomiaux dans un vecteur V (au début, tous les coefficients sont nuls), et pour i = n à 0, vous le multipliez par (ax + b) et ajoutez C i .
  • ajouter C i signifie l’ajouter au terme constant
  • multiplier par (ax + b) signifie multiplier tous les coefficients par b dans un vecteur K 1 , multiplier tous les coefficients par a et les écarter du terme constant dans un vecteur K 2 , et remettre K 1 + K 2 dans V.

Ce sera plus facile à programmer et plus rapide à calculer.

Notez que changer y en w = cy + d est vraiment facile. Enfin, comme le souligne mattiast, un changement général de coordonnées ne vous donnera pas un polynôme.

Note technique : si vous souhaitez toujours calculer la matrice T (telle que définie par Tyler), vous devez la calculer en utilisant une version pondérée de la règle de Pascal (c'est ce que le calcul de Hörner fait implicitement). :

t i, j = b t i, j-1 + a t i-1, j-1

De cette façon, vous le calculez simplement, colonne après colonne, de gauche à droite.

Si je comprends bien votre question, rien ne garantit que la fonction restera polynomiale après le changement de coordonnées. Par exemple, prenons y = x ^ 2 et le nouveau système de coordonnées x '= y, y' = x. Maintenant, l'équation devient y '= sqrt (x'), ce qui n'est pas un polynôme.

Vous avez l'équation suivante:

y = Ax^(n-1) + Bx^(n-2) + ... + Z

Dans l'espace xy, et vous le voulez dans un espace x'y '. Ce dont vous avez besoin, ce sont des fonctions de transformation f (x) = x 'et g (y) = y' (ou h (x ') = x et j (y') = y). Dans le premier cas, vous devez résoudre pour x et résoudre pour y. Une fois que vous avez x et y, vous pouvez substituer ces résultats à votre équation initiale et résoudre y '.

Que cela soit trivial ou non dépend de la complexité des fonctions utilisées pour transformer un espace en un autre. Par exemple, des équations telles que:

5x = x' and 10y = y'

sont extrêmement faciles à résoudre pour le résultat

y' = 2Ax'^(n-1) + 2Bx'^(n-2) + ... + 10Z

Si les espaces en entrée sont linéairement liés, alors oui, une matrice devrait pouvoir transformer un ensemble de coefficients en un autre. Par exemple, si vous aviez votre polynôme dans votre " original " espace x:

ax ^ 3 + bx ^ 2 + cx + d

et vous vouliez vous transformer en un autre espace w où w = px + q

alors vous voulez trouver un ', b', c 'et d' tel que

ax ^ 3 + bx ^ 2 + cx + d = a'w ^ 3 + b'w ^ 2 + c'w + d '

et avec une algèbre,

a'w ^ 3 + b'w ^ 2 + c'w + d '= a'p ^ 3x ^ 3 + 3a'p ^ 2qx ^ 2 + 3a'pq ^ 2x + a'q ^ 3 + b'p ^ 2x ^ 2 + 2b'pqx + b'q ^ 2 + c'px + c'q + d '

donc

a = a'p ^ 3

b = 3a'p ^ 2q + b'p ^ 2

c = 3a'pq ^ 2 + 2b'pq + c'p

d = a'q ^ 3 + b'q ^ 2 + c'q + d '

qui peut être réécrit en tant que problème matriciel et résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top