Maîtriser les équations algébriques dans MATLAB : résoudre, simplifier et factoriser
Jusqu'à présent, nous avons vu que tous les exemples fonctionnent dans MATLAB ainsi que dans sa version GNU, appelée Octave. Mais pour résoudre des équations algébriques de base, MATLAB et Octave sont légèrement différents, nous allons donc essayer de couvrir MATLAB et Octave dans des sections séparées.
Nous discuterons également de la factorisation et de la simplification d'expressions algébriques.
Résolution d'équations algébriques de base dans MATLAB
La fonction solve est utilisée pour résoudre des équations algébriques. Sous sa forme la plus simple, la fonction solve prend l'équation entre guillemets comme argument.
Par exemple, résolvons pour x dans l'équation x-5 = 0 :
solve('x-5=0')
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 5
Vous pouvez également appeler la fonction solve comme suit :
y = solve('x-5 = 0')
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
y = 5
Vous pouvez même ne pas inclure le côté droit de l'équation :
solve('x-5')
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 5
Si l'équation implique plusieurs symboles, MATLAB suppose par défaut que vous résolvez pour x, cependant, la fonction solve a une autre forme :
solve(equation, variable)
où vous pouvez également mentionner la variable.
Par exemple, résolvons l'équation v – u – 3t2 = 0, pour v. Dans ce cas, nous devons écrire :
solve('v-u-3*t^2=0', 'v')
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 3*t^2 + u
Résolution d'équations algébriques de base dans Octave
La fonction roots est utilisée pour résoudre des équations algébriques dans Octave et vous pouvez écrire les exemples ci-dessus comme suit :
Par exemple, résolvons pour x dans l'équation x-5 = 0 :
roots([1, -5])
Octave exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 5
Vous pouvez également appeler la fonction solve comme suit :
y = roots([1, -5])
Octave exécute l'instruction ci-dessus et retourne le résultat suivant :
y = 5
Résolution d'équations quadratiques dans MATLAB
La fonction solve peut également résoudre des équations d'ordre supérieur. Elle est souvent utilisée pour résoudre des équations quadratiques. La fonction retourne les racines de l'équation dans un tableau.
L'exemple suivant résout l'équation quadratique x2 -7x +12 = 0. Créez un fichier script et saisissez le code suivant :
eq = 'x^2 -7*x + 12 = 0'; s = solve(eq); disp('La première racine est : '), disp(s(1)); disp('La seconde racine est : '), disp(s(2));
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
La première racine est : 3 La seconde racine est : 4
Résolution d'équations quadratiques dans Octave
L'exemple suivant résout l'équation quadratique x2 -7x +12 = 0 dans Octave. Créez un fichier script et saisissez le code suivant :
s = roots([1, -7, 12]); disp('La première racine est : '), disp(s(1)); disp('La seconde racine est : '), disp(s(2));
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
La première racine est : 4 La seconde racine est : 3
Résolution d'équations d'ordre supérieur dans MATLAB
La fonction solve peut également résoudre des équations d'ordre supérieur. Par exemple, résolvons une équation cubique comme (x-3)2(x-7) = 0 :
solve('(x-3)^2*(x-7)=0')
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 3 3 7
Dans le cas d'équations d'ordre supérieur, les racines sont longues et contiennent de nombreux termes. Vous pouvez obtenir la valeur numérique de telles racines en les convertissant en double. L'exemple suivant résout l'équation du quatrième ordre x4 − 7x3 + 3x2 − 5x + 9 = 0.
Créez un fichier script et saisissez le code suivant :
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0'; s = solve(eq); disp('La première racine est : '), disp(s(1)); disp('La seconde racine est : '), disp(s(2)); disp('La troisième racine est : '), disp(s(3)); disp('La quatrième racine est : '), disp(s(4)); % conversion des racines en type double disp('Valeur numérique de la première racine'), disp(double(s(1))); disp('Valeur numérique de la seconde racine'), disp(double(s(2))); disp('Valeur numérique de la troisième racine'), disp(double(s(3))); disp('Valeur numérique de la quatrième racine'), disp(double(s(4)));
Lorsque vous exécutez le fichier, il retourne le résultat suivant :
La première racine est : 6.630396332390718431485053218985 La seconde racine est : 1.0597804633025896291682772499885 La troisième racine est : - 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i La quatrième racine est : - 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i Valeur numérique de la première racine 6.6304 Valeur numérique de la seconde racine 1.0598 Valeur numérique de la troisième racine -0.3451 - 1.0778i Valeur numérique de la quatrième racine -0.3451 + 1.0778i
Notez que les deux dernières racines sont des nombres complexes.
Résolution d'équations d'ordre supérieur dans Octave
L'exemple suivant résout l'équation du quatrième ordre x4 − 7x3 + 3x2 − 5x + 9 = 0.
Créez un fichier script et saisissez le code suivant :
v = [1, -7, 3, -5, 9]; s = roots(v); % conversion des racines en type double disp('Valeur numérique de la première racine'), disp(double(s(1))); disp('Valeur numérique de la seconde racine'), disp(double(s(2))); disp('Valeur numérique de la troisième racine'), disp(double(s(3))); disp('Valeur numérique de la quatrième racine'), disp(double(s(4)));
Lorsque vous exécutez le fichier, il retourne le résultat suivant :
Valeur numérique de la première racine 6.6304 Valeur numérique de la seconde racine -0.34509 + 1.07784i Valeur numérique de la troisième racine -0.34509 - 1.07784i Valeur numérique de la quatrième racine 1.0598
Résolution de systèmes d'équations dans MATLAB
La fonction solve peut également être utilisée pour générer des solutions de systèmes d'équations impliquant plus d'une variable. Prenons un exemple simple pour démontrer cet usage.
Résolvons les équations :
5x + 9y = 5
3x – 6y = 4
Créez un fichier script et saisissez le code suivant :
s = solve('5*x + 9*y = 5','3*x - 6*y = 4'); s.x s.y
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
ans = 22/19 ans = -5/57
De la même manière, vous pouvez résoudre des systèmes linéaires plus grands. Considérez l'ensemble d'équations suivant :
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Résolution de systèmes d'équations dans Octave
Nous avons une approche légèrement différente pour résoudre un système de 'n' équations linéaires à 'n' inconnues. Prenons un exemple simple pour démontrer cet usage.
Résolvons les équations :
5x + 9y = 5
3x – 6y = 4
Un tel système d'équations linéaires peut être écrit comme la seule équation matricielle Ax = b, où A est la matrice des coefficients, b est le vecteur colonne contenant le second membre des équations linéaires et x est le vecteur colonne représentant la solution comme montré dans le programme ci-dessous :
Créez un fichier script et saisissez le code suivant :
A = [5, 9; 3, -6]; b = [5;4]; A \ b
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
ans = 1.157895 -0.087719
De la même manière, vous pouvez résoudre des systèmes linéaires plus grands comme indiqué ci-dessous :
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Développement et collecte d'équations dans MATLAB
Les fonctions expand et collect développent et collectent une équation respectivement. L'exemple suivant démontre les concepts :
Lorsque vous travaillez avec de nombreuses fonctions symboliques, vous devez déclarer que vos variables sont symboliques.
Créez un fichier script et saisissez le code suivant :
syms x %variable symbolique x syms y %variable symbolique x % développement d'équations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(sin(2*x)) expand(cos(x+y)) % collecte d'équations collect(x^3 *(x-7)) collect(x^4*(x-3)*(x-5))
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
ans = x^2 + 4*x - 45 ans = x^4 + x^3 - 43*x^2 + 23*x + 210 ans = 2*cos(x)*sin(x) ans = cos(x)*cos(y) - sin(x)*sin(y) ans = x^4 - 7*x^3 ans = x^6 - 8*x^5 + 15*x^4
Développement et collecte d'équations dans Octave
Vous devez avoir le paquet symbolic, qui fournit les fonctions expand et collect pour développer et collecter une équation, respectivement. L'exemple suivant démontre les concepts :
Lorsque vous travaillez avec de nombreuses fonctions symboliques, vous devez déclarer que vos variables sont symboliques mais Octave a une approche différente pour définir les variables symboliques. Remarquez l'utilisation de Sin et Cos, qui sont également définis dans le paquet symbolique.
Créez un fichier script et saisissez le code suivant :
% tout d'abord charger le paquet, assurez-vous qu'il est installé. pkg load symbolic % rendre le module symbols disponible symbols % définir les variables symboliques x = sym('x'); y = sym('y'); z = sym('z'); % développement d'équations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(Sin(2*x)) expand(Cos(x+y)) % collecte d'équations collect(x^3 *(x-7), z) collect(x^4*(x-3)*(x-5), z)
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
ans = -45.0+x^2+(4.0)*x ans = 210.0+x^4-(43.0)*x^2+x^3+(23.0)*x ans = sin((2.0)*x) ans = cos(y+x) ans = x^(3.0)*(-7.0+x) ans = (-3.0+x)*x^(4.0)*(-5.0+x)
Factorisation et simplification d'expressions algébriques
La fonction factor factorise une expression et la fonction simplify simplifie une expression. L'exemple suivant démontre le concept :
Exemple
Créez un fichier script et saisissez le code suivant :
syms x syms y factor(x^3 - y^3) factor([x^2-y^2,x^3+y^3]) simplify((x^4-16)/(x^2-4))
Lorsque vous exécutez le fichier, il affiche le résultat suivant :
ans = (x - y)*(x^2 + x*y + y^2) ans = [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)] ans = x^2 + 4
MATLAB
- MATLAB : Aperçu complet de l'environnement de calcul numérique de référence
- Maîtriser les bases de MATLAB : Syntaxe et commandes essentielles
- Comprendre les variables dans MATLAB : Bases et exemples
- Commandes MATLAB essentielles pour un calcul efficace
- Types de données MATLAB : Guide complet
- Maîtriser les opérateurs MATLAB : Arithmétiques, Logiques, Bitwise et Ensemblistes
- Maîtriser les vecteurs MATLAB : Bases des vecteurs ligne et colonne
- Maîtriser les matrices MATLAB : Création, indexation et manipulation
- MATLAB : Maîtriser les tableaux multidimensionnels et spéciaux