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.

Était-ce utile?

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.

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