Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2014, à 15:55

OL9245

[Résolu] Démarrer avec wxMaxima

Bonjour,

C'est ma première utilisation de wxMaximfa. Je cherche à résoudre un problème relatif à un montage électronique en cours de développement.
Information annexe : Rx. sont des résistance. U.. sont les tensions aux bornes.
Mes équations sont celles ci : Les notes en italiques (edit : entre les balises et ) sont les explications du problème à titre d'information. Elle ne sont pas strictement nécessaires pour m'aider.

e1 : R10/U10=R2/U20; [i](loi d'hom mesure 1)[/i]
e2 : R11/U11=R2/U21; [i](loi d'hom mesure 2)[/i]
e3 : U10+U20=1023; [i](somme des tensions aux bornes des résistances en série mesure 1)[/i]
e4 : U11+U21=1023; [i](somme des tensions aux bornes des résistances en série mesure 1)[/i]
e6 : R1=(R10+R11)/2; (R1 mesuré = moyenne des deux mesures)
e7 : K=R1/R2; (équation finale qui donne la mesure de R1. De e1 et e2 on trouve à la main : K = 1/2 (U10/U20 + U11/U21). )

Seuls R2, U10, U21 et epsilon sont connus.
La solution est donc :

K=1/2(U10/(1023-U10) + (1023-U21)/U21)

.
R10 et R11 sont proches (mesurées à 1 ms d'intervalle). On écrit :

e5 : R11=R10+epsilon; [i](changement faible de R1 entre mesure 1 et mesure 2)[/i]

1/ Je veux d'abord calculer K. en fonction de U10, U21 et epsilon.

2/ Une approximation de K est K=U10/U21. Je veux montrer que cette approximation est vraie au premier ordre. Pour cela, j'ai besoin de développer K précédemment trouvé en séries de Taylor.

J'ai à peu près résolu tout ça à la main. Je veux le vérifier avec WxMaxima et en profiter pour sortir un fichier Latex des calculs.

Je vous remercie de votre aide.
Encore une fois c'est ma première utilisation de wxMaxima. Je suis devant comme une poule qui a trouvé un cure-dent... (j'utilisasi Maple par le passé).

Dernière modification par OL9245 (Le 08/03/2014, à 20:58)


La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)

Hors ligne

#2 Le 24/02/2014, à 16:11

Braun

Re : [Résolu] Démarrer avec wxMaxima

Bonjour,
Je ne dois pas comprendre grand chose, mais si tu veux faire un développement de Taylor il eut fallu que définisses des fonctions et non des constantes.

Hors ligne

#3 Le 24/02/2014, à 19:55

OL9245

Re : [Résolu] Démarrer avec wxMaxima

Braun a écrit :

Bonjour,
Je ne dois pas comprendre grand chose, mais si tu veux faire un développement de Taylor il eut fallu que définisses des fonctions et non des constantes.

un problème simple du même genre :

données :
A = B/2 ;
C = A+1 ;

question :
exprimer C en fonction de B ; avec une fonction du style solve (C, B)

Dernière modification par OL9245 (Le 24/02/2014, à 20:25)


La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)

Hors ligne

#4 Le 24/02/2014, à 20:35

gigiair

Re : [Résolu] Démarrer avec wxMaxima

Le signe de l'affectation en Maxima n'est pas =, mais :.
Tu devrais écrire
A: B/2;
C:A+1

A= B/2 est une expression booléenne, vraie si et seulement si A et B/2 sont évalués à une même valeur.


--
JJR.

Hors ligne

#5 Le 24/02/2014, à 21:36

OL9245

Re : [Résolu] Démarrer avec wxMaxima

gigiair a écrit :

Le signe de l'affectation en Maxima n'est pas =, mais :.
Tu devrais écrire
A: B/2;
C:A+1

A= B/2 est une expression booléenne, vraie si et seulement si A et B/2 sont évalués à une même valeur.

OK. Merci.
Pour moi, ce ne sont pas des affectations mais des équations.
comme apr exeple dans le post d'origine : R10/U10=R2/U20

et comment je résous le système ? (pour obtenir C=B/2 + 1)
c'est en fait ça ma question principale...

merci pour l'aide smile

Dernière modification par OL9245 (Le 24/02/2014, à 21:38)


La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)

Hors ligne

#6 Le 24/02/2014, à 22:10

Braun

Re : [Résolu] Démarrer avec wxMaxima

Tu peux essayer:

solve([A = B/2, C= A+1],[A,C]) ;

Hors ligne

#7 Le 24/02/2014, à 22:23

gigiair

Re : [Résolu] Démarrer avec wxMaxima

Pour résoudre un système, c'est la fonction SOLVE qu'il faut utiliser.

solve([ a * x - 5 * y = 17, b * x + 3 * y = 29],[x,y]);


--
JJR.

Hors ligne

#8 Le 25/02/2014, à 20:53

Domeee

Re : [Résolu] Démarrer avec wxMaxima

Bonjour OL9245,
pour résoudre ton pb simple du post #3, la réponse de Braun est la bonne.
Par contre, une commande de ce type ne va pas résoudre ton pb d'élec…
Si je fais le compte, tu as 7 éq, et 6 inconnues : R1, R10, R11, U11, U20, K.
Donc soit il y a 1 éq qui est combinaison des autres, soit ton système n'admet pas de solution.
Tu peux tenter un truc du genre :

solve([e1,e2,e3,e4,e5,e6,e7],[R10,R11,U11,U20,R1,K])

Je l'ai fait dans Xcas, il te revoie [ ] : pas de solution. De toutes façons, un système non linéaire comme celui là va laisser des cheveux blancs au meilleur moteur de calcul formel.
En fait, je crains que ton pb soit mal posé. Tu dis dans ton énoncé que R10 et R11 sont proches (mesurés à 1ms) : tu ne serais pas en train de mesurer une thermistance qui varie dans le temps des fois ? => je pense que dans ce cas ton système d'éq n'est pas trop adapté => certains de tes paramètres devraient en fait être des fonctions (du temps ?)
Et pour ce que tu décris (une résolution par étapes), la commande "subst" doit te permettre de mieux arriver à tes fins

a:=(3b+5)/b  —> (3*b+5)/b
b:=c^2+3  —> c^2+3
subst(a,b=b)   —>  (3*(c^2+3)+5)/(c^2+3)

(NB : code Xcas, ça doit être quif dans WxMaxima, sauf que l'assignation dans Xcas est toujours := idem celle de Wxmaxima pour déclarer une fonction)

Et la minute de prosélytisme : si tu débutes avec ce logiciel, et en plus avec une expérience Maple, tournes toi plutôt vers Xcas : moteur de calcul (Giac) plus robuste et plus puissant, et surtout, en calcul formel, tu as une aide omniprésente : tu tapes le début d'une commande, la touche "tab" t'ouvre le dictionnaire des commandes, avec des exemples de syntaxe, des synonymes, des explications => tu te sens moins seul !!
Et cerise sur le gâteau, tu peux choisir une syntaxe Mapple. De plus, tu peux te créer tes fonctions (style : résistances en // avec 2 résistances en paramètres, ou la formule d'un pont diviseur) et les utiliser dans ta feuille de calcul.
Domeee

Dernière modification par Domeee (Le 26/02/2014, à 22:56)

Hors ligne

#9 Le 26/02/2014, à 23:07

Domeee

Re : [Résolu] Démarrer avec wxMaxima

En fait, erreur de ma part : il y a bien 7 inconnues, j'avais oublié epsilon qui ne sert à rien ici
Si on rentre la commande suivante dans Xcas :

solve([e1,e2,e3,e4,e6,e7],[R10,R11,U11,U20,R1,K])

La réponse suivante est donnée :

[[-R2*U10/(U10-1023),
(-R2*U21+1023*R2)/U21,
-U21+1023,
-U10+1023,
(-2*R2*U10*U21+1023*R2*U10+1023*R2*U21-1046529*R2)/(2*U10*U21-2046*U21),
(-2*U10*U21+1023*U10+1023*U21-1046529)/(2*U10*U21-2046*U21)]]

Pardon Xcas d'avoir douté !
Par contre, OL9245 semble parti d'ici, mais ce truc m'a permis de me pencher sur les problèmes de résolution d'équation par substitution avec Xcas. Ceux que ça intéresse peuvent voir ce que j'ai fait en mode pas à pas pour résoudre ce pb :
voilà le fichier Xcas.
Ca doit être faisable avec Wxmaxima mais avec plus de douleur…

Hors ligne

#10 Le 26/02/2014, à 23:45

Braun

Re : [Résolu] Démarrer avec wxMaxima

Bonsoir,
Sans être complètement masochiste, voila un programme Maxima:

/* [wxMaxima: input   start ] */
e1: R10/U10=R2/U20 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e2: R11/U11=R2/U21 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e3:U10+U20=1023 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e4:U11+U21=1023 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e5: R11=R10+epsilon ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e6: R1=(R10+R11)/2 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
e7: K=R1/R2 ;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
solve([e1,e2,e3,e4,e6,e7],[R10,R11,U11,U20,R1,K]) ;
/* [wxMaxima: input   end   ] */

/* Maxima can't load/batch files which end with a comment! */
"Created with wxMaxima"$

smile

Hors ligne

#11 Le 27/02/2014, à 10:41

Domeee

Re : [Résolu] Démarrer avec wxMaxima

Hello Braun,
ça marche pareil qu'Xcas, par contre, j'ai fait un copier-coller de ton code et mis dans un fichier en UTF8 avec extension .wxm, ça ne marche pas.
Il faut apparemment rajouter ça en en-tête :

/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/

Et là, ça marche.

Question : as-tu essayé le mode pas à pas en Maxima (cf mon fichier Xcas) => j'ai abandonné ce logiciel à un niveau trop faible pour avoir envie de m'y recoller, donc si t'as vraiment envie d'être maso… big_smile big_smile

Hors ligne

#12 Le 27/02/2014, à 11:13

Braun

Re : [Résolu] Démarrer avec wxMaxima

Au temps pour moi, j'ai loupé une ligne dans le coupé collé, mais quant à faire on peut aussi se limiter à la partie active:

e1: R10/U10=R2/U20 ;
e2: R11/U11=R2/U21 ;
e3:U10+U20=1023 ;
e4:U11+U21=1023 ;
e5: R11=R10+epsilon ;
e6: R1=(R10+R11)/2 ;
e7: K=R1/R2 ;
solve([e1,e2,e3,e4,e6,e7],[R10,R11,U11,U20,R1,K]) ;

Que l'on colle bêtement dans la fenêtre Maxima.
Ceci mis à part et bien que ce soit un peu hors sujet j'utilise aussi Xcas pour lequel j'apprécie particulièrement la réactivité de l'équipe de Grenoble.

Hors ligne

#13 Le 08/03/2014, à 20:57

OL9245

Re : [Résolu] Démarrer avec wxMaxima

Bonjour à vous tous,
merci beaucoup pour l'aide.
(J'avais fait un tour par la case crash disque et bon, ... le temps de tout remettre. Bref, je n'ai pas oublié que j'avais des réponses à regarder ici) smile

Voila grâce à votre aide le système final et sa solution :

/* U10 connue mesurée aux bornes de R10, inconnue. */ 
e1: R10/U10=R2/U20 ;

/* U21 connue mesurée aux bornes de R2, connue. */
e2: R11/U11=R2/U21 ;

/* U10 est connue. U20 l'est donc aussi par e3 */
e3:U10+U20=1023 ;

/* U21 est connue. U11 l'est donc aussi par e4 */
e4:U11+U21=1023 ;

/* e5 e6 et e7 : changement de système d'inconnues : on passe de R11 R12 à K et epsilon
e5: R11=R10+epsilon ;
e6: R1=(R10+R11)/2 ;
e7: K=R1/R2 ;

solve([e1,e2,e3,e4,e5,e6,e7],[R10, R11, U20, U11, R1, epsilon, K]) ;
R10=−(R2*U10)/U10−1023
R11=−(R2*U21−1023*R2)/U21
U20=1023−U10,U11=1023−U21
R1=−((2*R2*U10−1023*R2)*U21−1023*R2*U10+1046529*R2)/((2*U10−2046)*U21)
epsilon=(1023*R2*U21+1023*R2*U10−1046529*R2)/((U10−1023)*U21)
K=−((2*U10−1023)*U21−1023*U10+1046529)/((2*U10−2046)*U21)

sinon, c'est pas loin en effet d'une résistance qui varie dans les temps. Je mesure la salinité d'une eau (donc résistance entre deux électrodes) avec des électrodes en cuivre donc polarisable. Pour contourner le pb de polarisation, je mesure une fois avec le courant dans un sens (polarisation) et une autre fois avec le courant en sens contraire (dépolarisation).
Entre les deux, je veux vérifier que le changement epsilon de conductivité de mon eau est au deuxième ordre en epsilon.

Merci encore, et merci pour le tuyau Xcas

Dernière modification par OL9245 (Le 08/03/2014, à 22:49)


La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)

Hors ligne