Comment puis-je résoudre un facteur déterminant dans Matlab?
-
19-09-2019 - |
Question
Comme un exemple simple, disons que vous avez cette matrice:
M = [omega 1;
2 omega];
et vous devez résoudre pour les valeurs de omega
qui satisfont la condition det M = 0
.
Comment faites-vous cela dans Matlab?
Il est sûrement quelque chose de simple, mais je n'ai pas encore trouvé la fonction.
La solution
Pour le cas général où votre matrice pourrait être quelque chose, vous voulez créer une représentation symbolique de votre matrice, calculer le déterminant, et à résoudre pour la variable d'intérêt. Vous pouvez le faire en utilisant respectivement les fonctions SYM , DET et RÉSOUDRE du Symbolic Math Toolbox :
>> A = sym('[w 1; 2 w]'); % Create symbolic matrix
>> solve(det(A),'w') % Solve the equation 'det(A) = 0' for 'w'
ans =
2^(1/2)
-2^(1/2)
>> double(ans) % Convert the symbolic expression to a double
ans =
1.4142
-1.4142
Il y a aussi différentes façons de créer la matrice initiale A
. Au-dessus, je l'ai fait avec une expression de chaîne. Cependant, je pourrais plutôt utiliser SYMS pour définir w
comme une variable symbolique, puis construire une matrice comme vous le feriez normalement dans Matlab:
syms w
A = [w 1; 2 w];
et maintenant A
est une matrice symbolique comme il était dans le premier exemple.
Autres conseils
Si vous ne disposez pas de la boîte à outils symbolique, puis utilisez la sympoly boîte à outils , trouvé sur l'échange de fichiers.
sympoly omega
roots(det([omega 1;2 omega]))
ans =
-1.4142
1.4142
est déterminée bien: om om * - 1 * 2 = 0
Vous obtiendrez: om om * = 2
La définition formelle est: [a b; c d] = a d - b c
Je regarderais en simplifiant le déterminé, et de trouver un solveur pour résoudre les inconnues.