Pages : 1
#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
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
Le signe de l'affectation en Maxima n'est pas =, mais :.
Tu devrais écrire
A: B/2;
C:A+1A= 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
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"$
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…
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)
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
Pages : 1