1

bonjour, alors je voudrai faire un programme qui pourrait me calculer à ma place avec millman, une tension en volt (bon okay ça on s'en fout)
théorème de millman :

sur chaque branche du circuit il y a une resistance (qu'on appellera R suivit d'un chiffre) avec une tension Ur
Ce théorème permet de calculer la tension en un point donné du circuit (qu'on appelera "p")

donc il faut regarder le nombre de branche qui arrive au point "P" (ici disons qu'il y en ai 3) donc on a :
149f655afeeb3e6b2a6eb540e6c8c9da.png

Je voudrai que le programme me mette autant de V/R et de 1/R qu'il y a de branche (et bien sur sous la forme R1 ,R2, R3, R4...)
c'est surtout pour cette partie du programme que j'ai un problème

J'espère que vous pourrier m'aider^^

++

2

Bon si j'ai bien compris, tu veux un programme de calcul de ce type :

On entre les valeurs --> Affichage du résultat

Effectivement, avec des outils de calcul classiques, c'est impossible de faire un calcul général.

Si tu veux savoir comment créer ce genre de programme, tu peux lire la suite du post, sinon télécharge mon programme ici.

:Input "BRANCHES:",A // Le nombre de branches défini par l'utilisateur est stocké dans la variable A
:A->dim(L1 // On crée une liste qui contiendra les Vn
:Ans->dim(L2 // Idem pour les Rn

:For(Z,1,Ans // On répète A fois les commandes qui vont suivre

:sub("123456789",Z,1)+"= // Ca c'est juste pour faire joli (et que tu t'y retrouves)
:Input "V"+Ans,I // On demande la valeur de Vn
:Input "R"+Ans,J // Idem pour Rn
:I->L1(Z // On stocke la valeur de Vn dans L1
:J->L2(Z // On stocke Rn dans L2

:End

:sum(L1/L2)/sum(L2^-1 // On affiche Vab et cette valeur est contenue dans Ans

3

donc la ce que tu m'as mit c'est le programme en entier merci c'est bien sympa, je vais test ça et je te tient au courant

4

C'est cool ça marche impec top
For(Z,1,Ans // On répète A fois les commandes qui vont suivre

:sub("123456789",Z,1)+"= // Ca c'est juste pour faire joli (et que tu t'y retrouves)


pourrait tu m'epliquer plus en detail ces lignes si ça ne te derange pas

5

(1) Alors ça :

For(Z,1,Ans
...
End

C'est une boucle. C'est-à-dire que toutes les commandes contenues entre le For et le End sont répétées plusieurs fois sous certaines conditions.

Ce type de boucle marche comme ceci :

Pour une boucle For(A,X,Y) :

La variable A prend la valeur de X, puis à chaque "tour", A est incrémenté (A+1->A). Quand A=Y, la boucle s'arrête.


Dans notre exemple, on a For(Z,1,A) (car Ans=A)

Donc si A=3, la boucle est répétée 3 fois, et donc Z prend les valeurs successives 1,2,3.




(2) sub("123456789",Z,1)+"=

Ca c'est une opération (+) entre 2 chaînes de caractères (un type d'objet particulier, qui permet de retenir du texte).
L'opérateur + marche en effet pour les chaînes de caractères, et permet de concaténer 2 chaînes. Par exemple, "ABC"+"DEF"="ABCDEF"


Le membre de droite "= n'a pas de guillemets à la fin car il sont facultatifs et augmentent la taille du programme (donc il est toujours préférable de les supprimer).


Le membre de gauche est plus complexe, il est le résultat d'une fonction, sub().
Cette fonction permet de "découper" une chaîne, et de ne prendre qu'une partie de celle-ci.

En termes ésotériques, la syntaxe est : sub( [chaîne à découper] , [le rang à partir duquel il faut découper] , [la taille du morceau à découper] )

Donc ici, sub("123456789",Z,1) permet ceci :

Si Z=1, on obtient "1"
Si Z=2, on obtient "2"
...etc


Donc finalement, sub("123456789",Z,1)+"= permet ceci :

Si Z=1, on obtient "1="
Si Z=2, on obtient "2="
...etc

Je rappelle que toute opération stocke forcément le résultat dans la variable Ans (quel que soit le type de variable).

Tu peux voir qu'ensuite j'utilise 2 fois la variable Ans, et donc j'ai utilisé un calcul pour 2 commandes (donc économie de temps et de taille).


Il y a pas mal de trucs différents dans ce programme, donc n'hésite pas à demander d'autres explications.