Bonjour à tous,
J'écris ce poste car j'ai un problème dans l'utilisation du logiciel Matlab.
Cadre d'activité d'utilisation du logiciel : Mécanique des vibrations
Mon problème est le suivant : je n'arrive pas à faire du calcul formel avec Matlab, je m'explique : mes données entrantes sont une matrice masse notée [M] et une matrice rigidité notée [K]. [M] et [K] sont des matrices diagonales. Je travaille actuellement sur un système à 3 degrés de liberté. Mon objectif est très simple mais fastidieux à effectuer à la main quand on dépasse les 2 degrés de liberté. Je cherche à calculer les modes de vibration (vecteurs propres) et les pulsations naturels du système (valeurs propres). Mon code est le suivant :
syms k m
M = [2*m,0,0;0,m,0;0,0,3*m]
K = [3*k,-2*k,0;-2*k,3*k,-k;0,-k,k]
[fi,omegaq] = eig(K,M);
omega = sqrt(omegaq)
frequenze_naturale = omega/(2*pi)
for i = 1:3
finorm(:,i)=fi(:,i)./fi(1,i);
end
Mon objectif avec ce code est d'obtenir les valeurs suivantes :
-Pulsations naturels : w1 = a*Racine(K/M), w2 = b*Racine(K/M), w3 = c*Racine(K/M) avec a, b et c des constantes numériques
-Mode de vibrations : Fi1, Fi2 et Fi3 qui sont des vecteurs
Pour cela, j'utilise la commande [fi,omegaq] = eig(K,M)
Je voudrais donc obtenir des résultats en fonction de K et de M qui demeurent inconnues.
Voici le résultat quand j'exécute le code :
M =
[ 2*m, 0, 0]
[ 0, m, 0]
[ 0, 0, 3*m]
K =
[ 3*k, -2*k, 0]
[ -2*k, 3*k, -k]
[ 0, -k, k]
Error using sym/eig
Too many input arguments.
Comme vous pouvez le voir, cela ne fonctionne pas. Je pense qu'il y a un problème dans la déclaration des lettres K et M avec la commande "syms" car ce code fonctionne très bien si je ne travaille que avec des valeurs numériques.
Comment puis-je faire ?
Merci et bonne journée,
-----