[Matlab] Multiples solutions avec solve/vpasolve ?

Tout ce qui concerne les différents logiciels mathématiques (Matlab, Maxima, Scilab, R, Maple, Mathematica, ...) et les calculatrices scientifiques.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.
> Préciser le nom du logiciel concerné dans le titre de votre message.

[Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar Maxinquaye » Jeudi 01 Octobre 2015, 15:34

Bonjour,

J'ai besoin de calculer la valeur nulle du déterminant d'une matrice 6x6 avec Matlab, dont l'équation dépend de deux variables. J'ai donc fait mon code en utilisant les variables et fonctions symboliques, j'ai tapé ma matrice à la main et demandé le calcul du déterminant via la fonction det :

Code: Tout sélectionner
A = det(M) == 0;


Celui ci me ressort une expression qui me semble cohérente dans la forme (je n'ai pas eu le courage de calculer le déterminant à la main ...), dépendant donc de mes variables k et V.

Cependant, lorsque je demande à Matlab d'utiliser les fonctions solve ou vpasolve pour calculer les solutions de A, celui-ci ne me ressort qu'une seule solution pour le couple (k,V) alors que je suis censé en avoir plusieurs (du genre une infinité ...).

Je voulais donc savoir si j'utilisais mal la fonction vpasolve ou solve (les deux fonctions me donne les mêmes solutions), ou si il existait une fonction qui me donnerait plusieurs solutions et si il était possible de demander un nombre de solution précis (par exemple prendre les 200 premières solutions).

Voici mon code et la solution :

Code: Tout sélectionner
S = vpasolve(A,k,V);


S =

    k: [1x1 sym]
    V: [1x1 sym]

>> S.k
 
ans =
 
32.201772109820644873788838300434
 
>> S.V
 
ans =
 
1239.0


Merci d'avance aux personnes qui me répondront !
Maxinquaye
Déca-utilisateur
 
Messages: 17
Inscription: Lundi 22 Avril 2013, 18:02
Localisation: Valenciennes
Statut actuel: Post-bac | Doctorat

Publicité

Re: [Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar nirosis » Dimanche 04 Octobre 2015, 09:12

Tu peux au moins essayer différents "initial guess" dans vpasolve et voir si tu trouves toujours les mêmes solutions.

Code: Tout sélectionner
S = vpasolve(eqn,var,init_guess)


Sinon, tu obtiens normalement un polynôme des variables k et V (de degré 6 au max non?)
Tu peux fixer une variable et résoudre en en fonction de l'autre pour voir si tu trouves d'autres solutions (avec roots() ou solve).

Autre solution, tu peux aussi passer en totalement numérique, une fois que tu as l'équation de ta fonction à résoudre : tu peux utiliser des fonctions type fsolve() (idem varier le ini guess te permettra théoriquement de trouver différentes solutions si elles existent).

peut-être que la forme explicite des solutions est trop compliquée à établir ou à écrire, et que c'est pour ça que matlab ne te la donne pas. Essaie avec le même type de problème pour une matrice 2x2 ou 3x3 au max. Dans ce cas, as-tu des solutions explicites et matlab te montre-t-il qu'il y en a une infinité ?
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Re: [Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar Maxinquaye » Lundi 05 Octobre 2015, 13:26

Ton idée semble marcher, merci beaucoup !

J'ai fixé k, et j'ai défini V comme une variable, et j'ai fais la recherche des 0 en incrémentant la valeur dans le champ "init_guess" pour plusieurs valeurs de k.

Quand une solution est présente aux alentours de la valeur donnée à V, vpasolve me retourne la solution.

Je crois que j'ai de plus compris pourquoi je n'obtenais qu'une solution, vpasolve retourne toutes les solutions d'un polynôme, mais uniquement la première solution dans le cas de l'application à un autre type d'équation. Je n'avais pas vu cette mention dans la doc de la fonction avant de venir poster ici.

Or, je ne pense pas que mon équation obtenue par calcul du déterminant soit un polynôme puisqu'elle comporte des exponentielles en fonction de k et de V. Pas la peine de tester avec des matrices plus petites, il me semble que ça soit la cause de mon problème.

Quoi qu'il en soit, ton idée semble marcher très bien encore merci :)
Maxinquaye
Déca-utilisateur
 
Messages: 17
Inscription: Lundi 22 Avril 2013, 18:02
Localisation: Valenciennes
Statut actuel: Post-bac | Doctorat

Re: [Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar rebouxo » Lundi 05 Octobre 2015, 16:22

Ben, je pense que si, c'est une bonne idée de tester du $2 \times 2$ ou $3 \times 3$, parce que cela permet de tester ton programme et de le comparer à des calculs à la main.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6690
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: [Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar nirosis » Mardi 06 Octobre 2015, 21:50

tant mieux si tu as avancé sur ton problème !
Traiter le cas 2x2 ou 3x3 reste intéressant pour la compréhension comme le dit Olivier.
c'est d'ailleurs une démarche à garder en mémoire (si tu es en doctorat, ça peut servir) : toujours essayer de comprendre un cas simplifié avant de traiter le problème réel souvent bien plus compliqué (et pour lequel des méthodes numériques sont nécessaires).
Mine de rien, faire des calculs à la main avant de lancer des grosses routines Matlab hyper poussées est formateur et peut éviter quelques déconvenues :-)
Bonne continuation.
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Re: [Matlab] Multiples solutions avec solve/vpasolve ?

Messagepar Maxinquaye » Mercredi 07 Octobre 2015, 12:42

J'ai suivi vos conseils et j'ai essayé avec une matrice 2x2 pour un cas avec et sans exponentielle. Le déterminant calculé est bien le même que celui que j'obtiens à la main dans les deux cas, mais le nombre de solution est différents.

Dans le cas avec exponentielles, quelque soit la forme des termes qui composent la matrice, je n'obtiens qu'une solution, alors que j'en obtiens un nombre égale au degré du polynôme qui constitue le déterminant de la matrice lorsque j'enlève les exponentielle.

Il semble donc que ça soit belle et bien le problème, le déterminant de ma matrice n'est pas un polynôme et la fonction me retourne donc uniquement la première solution.

Quoiqu'il en soit la méthode proposée par Nirosis fonctionne très bien, j'ai réussi a obtenir les graphiques que je voulais. Si d'autres personnes ont le même problème que moi il me semble donc que c'est une des solutions possibles à étudier.

Merci encore pour vos idées !
Maxinquaye
Déca-utilisateur
 
Messages: 17
Inscription: Lundi 22 Avril 2013, 18:02
Localisation: Valenciennes
Statut actuel: Post-bac | Doctorat


Retourner vers Logiciels mathématiques

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités