Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse Page: 1,      >>
résolution de x equations à x inconues
Auteur Message
sandro
Avatar

Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 27 Mai 2011, 21:12   Citer 

Bonjour/bonsoir
Voici un programme que je viens de créer à l'instant qui permet de résoudre un système linéaire de x équations à x inconues (x n'est limité que par la mémoire disponnible (enfin x ne peut pas dépasser 98 mais bon))

L'affichage n'est pas génial donc je suis ouvert à toute suggestion sur ce point (aussi sur d'autres points mais plus spécialement sur celui-ci).

Voici le code du programme SYSTEMEX (215 octés + ram nécésaire pour le fonctionnement dépendent du nombre d'inconues/équations

Code
:Input "NB D'EQ/DE VARS:",N
:{N,N+1 -> dim([A]


:For(A,1,N
:For(B,1,N
:ClrHome
:Output(1,1,"EQ N°
:Output(1,6,A
:Output(2,1,"+VAR N°  *
:Output(2,8,B
:Disp "","
:Input "",C
:C -> [A](A,B
:End
:ClrHome
:Input "=",C
:C -> [A](A,N+1
:End
:Gauss-Jordan([A] -> [A]
:For(A,1,N
:ClrHome
:Output(1,1,"VAR N°  =
:Output(1,8,A
:Output(1,10,[A](A,N+1
:Pause
:End
:DelVar [A] ClrHome



Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 27 Mai 2011, 23:17   Citer 

Perso je préfère taper le système à la main dans les matrices.
---

Gauss-Jordan comporte l'inconvénient de retourner à l'utilisateur une matrice qu'un débutant ne comprend pas forcément.
Je te proposes l'inversion de matrice, plus adaptée aux systèmes qui ont autant d'inconnues que d'équations. (mais qui ne sert qu'à celles-ci)

Découpe ta matrice à la verticale en la matrice [A] des coefficients et la matrice [C] des constantes.
Soit la matrice des inconnues (non définie) [ B ] à la verticale.

Code
// [A]*[B]=[C] Donc [B]=[A]^-1*[C]   // "^-1" avec la touche [x^-1]
// C'est-à-dire :

[A]^-1*[C]->[B]
Pause [B]


Mais le déterminant det([A]) ne doit pas être nul c'est-à dire qu'il doit y avoir une et une seule solution.
L'inversion ne fonctionne pas si la matrice n'est pas carrée (autant d'inconnues que d'équations)


=>Cela a pour avantage de permettre de parcourir la matrice solution à sa guise, même si on ne comprend pas le sens d'une matrice. On consulte plus facilement les solutions qu'avec une boucle d'affichage.

EDIT : Car on allonge la ligne de calcul mais remplace toute la suite par Pause [B]


------

Pour info, Gauss-Jordan est très utile pour les systèmes sans solution (mise en évidence sans plantage) et les systèmes à plus d'inconnues que d'équations.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro
Avatar

Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 27 Mai 2011, 23:36   Citer 

excuse moi linkakro mais pour la compréention des matrices, c'est inutile: la TI affiche toute les solutions les unes après les autres :

Code
:For(A,1,N
:ClrHome
:Output(1,1,"VAR N°  =
:Output(1,8,A
:Output(1,10,[A](A,N+1
:Pause
:End



Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 28 Mai 2011, 0:00   Citer 

Mais tu t'ennuies à faire cette mise en forme avec des pauses. Je suis plutôt adepte des affichages qu'on parcourt dans tous les sens.
L'inversion allonge la ligne de calcul et remplace toute la suite par
Pause [B]

Ma suggestion avait aussi pour but de partager une connaissance de plus.

EDIT : résultat
rappel: cette version ne peut donner de solution que s'il y en a une seule.
Code
:Input "NB D'EQ/DE VARS:",N
:{N,N->dim([A]
:{N,1->dim([C]
:For(A,1,N
:For(B,1,N
:ClrHome
:Output(1,1,"EQ N°
:Output(1,6,A
:Output(2,1,"+VAR N°  *
:Output(2,8,B
:Disp "","
:Input "",C
:C -> [A](A,B
:End
:ClrHome
:Input "=",C
:C -> [C](A,1
:End

   // si vous savez remplir une matrice à la main, vous pouvez vous passer du début

:ClrHome
:Pause [A]^-1*[C]     // saisissez "^-1" avec la touche "x^-1"
:DelVar [A]DelVar [C]ClrHome



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro
Avatar

Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 28 Mai 2011, 0:11   Citer 

merci, les maths ça m'intérresse toujour à codition que les explications soit compréhensibles avec mes connaissances (1erS + quelque petits trucks +algorithmique sur TI)

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Jeu 27 Nov 2014, 20:51   Citer 

Bonjour , je suis nouveau sur ce forum et je programme beaucoup sauf que je n'utilise pas les choses qui dépasse l'arithmétique avec juste des if , while , imput , disp et -) (sto)

"
Code
:Input "NB D'EQ/DE VARS:",N
:{N,N+1 -> dim([A]


:For(A,1,N
:For(B,1,N
:ClrHome
:Output(1,1,"EQ N°
:Output(1,6,A
:Output(2,1,"+VAR N°  *
:Output(2,8,B
:Disp "","
:Input "",C
:C -> [A](A,B
:End
:ClrHome
:Input "=",C
:C -> [A](A,N+1
:End
:Gauss-Jordan([A] -> [A]
:For(A,1,N
:ClrHome
:Output(1,1,"VAR N°  =
:Output(1,8,A
:Output(1,10,[A](A,N+1
:Pause
:End
:DelVar [A] ClrHome



Primo je ne vois pas où est "DelVar" sur la Ti 82 stats fr
secondo on doit entrer quoi dans les "équations" ? J'ai essayé de metre des "2x-7" , cela sous entends "2x=7" ?

PS : je m'inscrit parce que j'en ai un peu marre de traduire tout le chinois ...
Personnellement je ressens que dans tout les programmes qu'il y a , vous n'avez jamais expliqué ce que fait votre programme.
Vos explication ne sont que quelques manip' que vous soumettez .

Bref certes je suis assez sévère mais dites moi ce qu'est le résultat ? car moi je l'ai tapé et j'obtient un "1.........5.026911708E^89" et puis un "2.......0" . avec "."-) "espace"
quelqu'un peu m'éclairé leurs signification ?
excusez moi si je suis assez de mauvaise humeur c'est l'effet que ça fait généralement quand je ne comprends pas

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 27 Nov 2014, 21:49   Citer 

Toute demande d'explication doit être satisfaite, c'est mon objectif.
On ne peut pas t'en vouloir de demander des explications sur l'utilisation (ou même le fonctionnement).

Tu peux utiliser la balise code pour forcer l'affichage des espaces sur le forum.

Delvar se nomme EffVar dans une TI82statsfr. Elle est dansle menu prgm.
Le catalogue fourni via ma signature contient les traductions et emplacements des fonctions et variables.

L'interface du programme de sandro numérote les variables. Peu importe leur nom dans ton problème.
Lors de la saisie, le programme indique un numéro d'équation et un numéro de variable. Tu saisis les valeurs des coefficients associés aux variables. Pas de saisie des noms et des opérateurs. A la fin de chaque équation tu saisis la constante.
Lors de l'affichage des résultats, chaque ligne donne la valeur trouvée d'une variable. Le numéro de la variable est affichée au début de la ligne.

Le signe des constantes dépend de ta convention. Il suffit d'être cohérent entre l'écriture et la lecture.
2x=7 (saisis 7) répond x=7/2 en affichant 7/2
2x=-7 (saisis -7) répond x=-7/2 en affichant -7/2
2x-7=0 (saisis -7) répond x-7/2=0 en affichant -7/2
2x+7=0 (saisis 7) répond x+7/2=0 en affichant 7/2.
Le principe est de laisser la constante à sa place d'origine.

La convention des constantes doit être la même entre toutes les équations du système.

Le programme avec Gauss-Jordan ne sait pas vérifier que la solution existe et est unique. Des valeurs zéro en partant des inconnues de la fin peuvent apparaître dans ce cas là.
Si la solution est unique, alors le programme la trouve. Sinon ce n'est pas certain.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Mar 02 Déc 2014, 20:07   Citer 

Je repars d'attaque car ça me semble ... Bizarre ...

Car ce ne peut être qu'utile que pour une des représentation paramètrique d'une droite pour trouver qu'il y a bien un point d'intersection s'il n'y a qu'une seule solution


Je pense que la faiblesse du programme c'est que d'abord :
je ne comprends pas quoi entrer car j'ai l'impression que ça suggère d'entrer "3x=5" avec qu'une et une seule variable par équation car justement j'ai pas l'impression qu'il y des quelconques variables qui sont différents de x ...
(je connais pas Guauss - Jourdan)


Ainsi peut on l'améliorer ? (Pour rendre son utilité pour ):
- Bilan des actions
- intersection de 2 droites paramétriques pour l'intersection
- conjecture par rapport au théorème de Bézout ( 11u+26v=1)
- intersection de 2 plans par une droite ( ou par un point à une je pense certaine condition particulière que je suis en train de chercher)

Vous croyez que c'est possible à partir d'une espèce de dérivé de ce programme d'obtenir tous ces utilités ?

Déjà de tête je trouve ça méga compliqué de faire un programme contenant toutes les variables de l'alphabet moins quelques uns qu'on utilisent pour le programme ; et donc faire au moins 30 inconnus dans une équations ...

Peut être se limiter à 6 voire 3 ...

Peut être pourra- on utiliser la propriétés des solutions des polynômes ?
Perso je trouve ça très compliqué mais je trouve ce programme un peu obsolète au niveau de l'utilité qu'elle peut avoir ...(ou peut être que j'ai une vision restreint)

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 02 Déc 2014, 23:34   Citer 


Citer
Peut être pourra- on utiliser la propriétés des solutions des polynômes ?



Je ne vois pas le rapport entre les N racines complexes d'un polynôme de degré N et tes systèmes d'équation.

En revanche il existe des modèles de représentation des polynômes utilisant les espaces vectoriels et les matrices. Je ne maîtrise pas ces modèles.

En soit les matrices sont des tableaux, seulement leur utilisation pour contenir des systèmes d'équation n'est pas l'utilisation des espaces vectoriels.
Par exemple mon inversion de matrice plus tôt dans le sujet est purement une opération matricielle, pas un système. En plus cela ne supporte que les problèmes de N équations à N inconnues.


Citer
Perso je trouve ça très compliqué mais je trouve ce programme un peu obsolète au niveau de l'utilité qu'elle peut avoir ...(ou peut être que j'ai une vision restreint)
Déjà de tête je trouve ça méga compliqué de faire un programme contenant toutes les variables de l'alphabet moins quelques uns qu'on utilisent pour le programme ; et donc faire au moins 30 inconnus dans une équations ...

Peut être se limiter à 6 voire 3 ...

Bah non ce n'est pas si difficile avec les 82stats à 84plus puisqu'on a des chaînes de caractères.
Pour une TI82 basique par contre cela demandera beaucoup d'alternatives comme tu sembles imaginer.


Citer
Car ce ne peut être qu'utile que pour une des représentation paramètrique d'une droite pour trouver qu'il y a bien un point d'intersection s'il n'y a qu'une seule solution

La fonction Gauss-Jordan simplifie les systèmes d'équation LINEAIRES stockés dans les matrices. Elle ne donne pas les solutions. C'est à nous d'interpréter les systèmes.

Il se trouve qu'on a système linéaire carré (n équations, n inconnues) et on espère que les équations ne sont pas redondantes, donc on a un unique n-uplet solution (couple si 2 champs, triplet si 3, n-uplet si n).

Seul ce cas permet au programme déjà posté dans ce sujet de lire la solution unique directement.
En effet quand le système est carré alors sa simplification revient à poser l'égalité de chaque inconnue à une constante.

Pour tout système, si la solution est un ensemble ou est absente, il faudra détecter les dimensions et les équations redondantes par le programme ou se placer dans des cas particuliers.
On reparlera de cas particulier avec ta requête d'amélioration/extension.

Détecter les équations nulles en fin de système et les dimensions des ensembles est relativement difficile. Je considère cela comme un défi inutilement complexe en TI-Basic.

------

Je te propose la solution universelle : apprendre à remplir les matrices à la main dans ton éditeur de matrices. Tu comprendras ce que fait le programme et tu pourras lire les systèmes résultats toi-même.

Voici un exemple montrant bien les données entrées par le programme et le système correspondant.

Code

[[A,B,C,D     Ax+By+Cz=D
  E,F,G,H]]   Ex+Fy+Gz=H




Citer
Ainsi peut on l'améliorer ? (Pour rendre son utilité pour ):
- Bilan des actions
- intersection de 2 droites paramétriques pour l'intersection
- conjecture par rapport au théorème de Bézout ( 11u+26v=1)
- intersection de 2 plans par une droite ( ou par un point à une je pense certaine condition particulière que je suis en train de chercher)

Oui nous pouvons améliorer la gestion des variables de la saisie et oui nous pouvons créer des programmes spécialisés.

Par exemple mon programme d'équilibrage des équations chimiques déduit un système d'équations à partir de l'équation chimique puis résout le système.

J'ai déjà écrit quelques programmes de calcul d'intersection de plans et droites. Je ne sais plus si j'en ai déjà parlé sur le forum mais c'est depuis longtemps dans mon espace mediafire. Suit ma signature à la recherche de INTER,INTER2D,INTER3D. https://www.mediafire.com/folder/hv0i98j4atq95/progs_un_par_un

Je n'ai plus envie de me pencher sur les cas particuliers des systèmes de droites et plans dont tu parles. Apprends à lire et écrire tes systèmes et matrices.

J'utiliserai les chaînes de caractères pour nommer les inconnues et satisfaire ton besoin de limpidité de l'interface.

EDIT- codes achevé à une heure du matin. Pas encore testé.
Code
Input "EQUATIONS:",M
Input "INCONNUES",N
{M,N+1}->dim([A]

Disp "NOM DES VARIABLE"  // désolé pour le pluriel, seulement 16 caractères
"*    // initialisation de la variable Rép
For(I,1,N
Input "NOM:",Chaîne1
  // veuillez utiliser un seul caractère pour chacune,
  //car je n'ai pas implémenté de traitement plus poussé des noms
Rép+Chaîne1+"*"
  // j'ai choisi de stocker des étoiles plutôt que d'ajouter aux affichages
End
Rép->Chaîne1
  // Rép permet de récupérer le calcul précédent, on a donc "*A*B*C*..."

Disp "COEFFICIENTS
For(J,1,M)  // ligne
Disp "EQUATION NUM",M
For(I,1,N)  // colonne
Input sous-Chaîne(Chaîne1,2I,2),C
  // saisie du coefficient d'une variable X, avec l'invité "X*"
C->[A](J,I
End
Input "CONSTANTE:",C
C->[A](J,N+1)
End
Gauss-Jordan([A])
  // Affiche le système simplifié
  // pressez les flèches pour parcourir ce qui dépasse
  // Placez bien le calcul sur la dernière ligne du programme ou utilisez
  // la Pause pour l'afficher

Voici un complément du programme précédent pour interpréter les systèmes simplifiés. Copiez le code à la fin de l'autre.
Technique de conversion des nombres en texte : j'utilise la régression pour générer facilement des chaînes de caractères contenant les nombres. C'est bien lourd et encore c'est la méthode la plus simple en TI-Basic.

Code
Gauss-Jordan([A])->[A]
Pause [A]
{0,1}->L1  // abscisse de régression
{0,0}->L2  // ordonnée de régression, on utilisera {0,A}
  // Chaîne1 contient déjà la liste des inconnues "*A*B*C*" etc
For(J,1,M)
" "->Chaîne2  // initialise le texte d'équation avec un espace
For(I,1,N)
If [A](J,I)  // coefficient non-nul
Then
[A](J,I)->L2(2)  // on a donc {0,A} pour A la valeur extraite de la matrice
Réglin(ax+b) Y1  // utilise par défaut L1,L2, et on demande de stocker dans Y1
Equ>Chaîne(Y1,Chaîne3)  // stocke l'équation de Y1 dans Chaîne3
sous-Chaîne(Chaîne3,1,carChaîne(Chaîne3,"X")-1)->Chaîne3
 // extrait le nombre du début de l'équation de régression "A" dans "AX+B"
Chaîne2+"+"+sousChaîne(Chaîne1,2I,2)+Chaîne3->Chaîne2
 // ajoute "+X*A"
End
End
  // condition : tous coefficients sont nuls puisque Chaîne est un espace
If Chaîne2=" "
"0"->Chaîne2
 // début régression
[A](J,N+1)->L2(2)
Réglin(ax+b) Y1
Equ>Chaîne(Y1,Chaîne3)
sous-Chaîne(Chaîne3,1,carChaîne(Chaîne3,"X")-1)->Chaîne3
 // stockage dans le texte d'équation
Chaîne2+"="+Chaîne3->Chaîne2
 // affichage de l'équation
Pause Chaîne2
End

EDIT 6/12/2014 : programmes testés et validés

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Mer 03 Déc 2014, 19:56   Citer 

J'ai vu ton partage mediafire ;
je redouble ma terminale S et ça fait du bien d'apprendre enfin d'autres choses ^^

et j'ai l'impression que j'aurais la grosse tête avec ça ^^ ...
(franchement j'adore ton code sur les plans qui se coupent : au moins 10 lignes pas plus ! XD) et sur les droites : 4 lignes XD ...


"J'utiliserai les chaînes de caractères pour nommer les inconnues et satisfaire ton besoin de limpidité de l'interface."

Ps : il y a une erreur de "dimension invalide" à [A](J,N+1)

c'est hyper sympa merci ... happy.gif

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 04 Déc 2014, 1:31   Citer 

Corrige l'initialisation pour éviter l'erreur dim invalide. Utilise M à la place de N.
{M,N+1}->dim([A]
J'ai déjà modifié le message.

Par ailleurs, je ne te l'ai pas dit mais Gauss-Jordan ne supporte pas les matrices qui sont plus hautes que larges.

------

Je m'intéresse aux autres cas particuliers que tu as proposé.
-bilan des actions en mécanique : ce ne sont que rarement des systèmes linéaires. Pas adapté.
-équation de diophante et théorème de bézout : je ne vois pas quelle manipulation tu veux en faire pour conjecturer un couple principal, je suis très curieux

Si quelque chose de spécial existe pour Bézout, alors ce sera plus amusant que mes programmes passés sur Bézout et l'autre algorithme. (J'en connais deux et n'en comprend qu'un.)

EDIT 12/12/2014: désolé cela a entrainé un hors sujet...

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Jeu 04 Déc 2014, 11:32   Citer 

En faite c'est pour trouver des couples de solution qui se succède comme

(je vais dire n'importe quoi ( pourvut que c'est juste , ça fait un baille que j'en ai pas fait)
prenons le problème à l'envers :
considérons le résultats finale {7k+1 ; -3k }

Ainsi la calculatrice affichera les solution premièrement pour
(k=0)
ainsi il affichera {1;0}


Ainsi la calculatrice affichera les solution en second pour
(k=1)
ainsi il affichera {8;-3}

et en dernier lieu
(k=3)
ainsi il affichera {15;-9}

Le plus difficile je pense c'est de faire en sorte qu'il repère bien le minimum .
Car on peut dire que aussi {7k+8 ;-3k-3} est solution ( on décale d'une boucle , enfin c'est un peu comme les congruences)

J'ai pensé à Bézout car c'est une somme de 2 inconnus qui sont tout 2 égaux à une constante .
Mais c'est complexe puisque tu le dis si bien :
il ne repère qu'une solution .


Une petite critique de ton programme :
est ce que si on utilise les variables J,M,N et C , il y aura t il un incident ?
Ps : Erreur type de donnée à L2+
"+" : c'est le marqueur de ma calculette qui indique cette endroit .

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 04 Déc 2014, 12:54   Citer 

Je peux stocker les équations de l'ensemble, mais je n'ai aucune idée d'une manière de les calculer matriciellement ou par système. C'est ça qui serait intéressant.

Mon programme BEZOUT fait déjà tout. (le couple principal, l'ensemble, le tableau)
au+bv=n et pgcd(a,b)=n
un couple solution est (u0,v0), facile à trouver avec l'algorithme d'Euclide du pgcd et quelques équations. Un autre algorithme que je ne comprend pas existe.
L'ensemble des couples solutions est (u0+kb,v0-ka) pour tout k relatif et n'importe quel couple (u0,v0) lui même de l'ensemble.

Je préfère parler de cycle (voire même de période) plutôt que de boucle.

Citer
on décale d'une boucle , enfin c'est un peu comme les congruences



-----

Je n'ai pas le temps de tester et corriger mon programme.
N'oublie pas de bien utiliser 2nde+2 pour saisir L2.
Tu n'as pas dit quelle ligne précisément, alors je ne peux pas t'aider plus.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Ven 05 Déc 2014, 15:23   Citer 

J'espère que ça te dérange pas que je mette le code (sincère , pas de sous entendus)

EDIT 10/12/2014 par Linkakro : ci-dessous ce n'est plus la version 5, mais la version corrigée 5.2.
Code
//programme BEZOUT 5.2 par Linkakro forum tout82

Disp "AU+BV=Z
Prompt A,B,Z
 // abs retire les signes pour manipuler correctement l'algorithme d'Euclide
abs(A->S           
abs(B->T
gcd(S,T->P
If fPart(Z/P   // Z n'est pas multiple de P
Then
Disp "IMPOSSIBLE
Stop
End
 //algorithme d'Euclide du pgcd. Mémorise les coefficients des équations.
{S,T->L1
{0,0->L2
2->W
While P-L1(W
W+1->W
int(L1(W-2)/L1(W-1->L2(W
L1(W-2)-AnsL1(W-1->L1(W
End
 //fin de l'algorithme d'euclide, début de manipulation des équations
1->I
{1,L2(W->L1
For(N,1,W-3
L1(I)+L1(3-I)L2(W-N->L1(I
3-I->I
End
 // conclusion des équations en remettant les signes
1-4fPart(W.5->G
 // G vaut 1 pour W pair et -1 pour impair ((1-2*reste) de division)
 // G ajuste le signe selon le nombre d'itérations de la boucle
 // S/A vaut -1 si A est négatif, idem T/B selon B
~GS/AL1(I)->U
GT/BL1(3-I->V
 // couple particulier de solution
Disp "PARTICULIERES :
Disp "AU+BV=gcd(A,B)
Disp U,V
Disp "AU+BV=Z
Disp UZ/P,VZ/P
Pause
Disp "GENERALES :
Disp "AX+BY=Z
 // annonce de la table pour l'utilisateur
Disp "X={Y1}","Y={Y2}
 // configuration de la table
IndpntAuto  // ValeursAuto
DependAuto  // CalculsAuto
0->TblStart
1->DeltaTbl
 // stockage des équations {Y1}=Y1 {Y2}=Y2
 // X est l'indice des cycles de congruence
"UZ/P+XB/P->{Y1}
"VZ/P-XA/p->{Y2}
Pause
DispTable  // affiche la table des solutions (U;V)



gcd-> probablement PGCD
fPart -> ?
~ -> Arrondi ?
TblStart -> ?
DeltaTbl -> ?
DependAuto -> ?
IndpntAuto -> ?


J'ai eu ce code avec Cemetech (SourceCoder)
Probablement parce que c'est une ti plus évolué ...

Ps: j'ai une question : si on transfère un programme de ti82stats.fr à un ti nesprire cx cas (imaginons ^^ ) , ça marcherais ? probablement non ?

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 05 Déc 2014, 21:01   Citer 

J'envisage d'ajouter des commentaires au code copié dans ton message. (drôlement pratique les droits de modération)

Non la tinSpire ne fonctionne pas du tout comme la ti82statsfr.

--- ton problème de traduction :

Utilise le catalogue de tout82 ou le manuel de ti82statsfr pour toutes les traductions des mots-clés de TI.
Ou bien il te faut une TokenMap française de l'éditeur TokenIDE de Merthsoft sur Cemetech.

Normalement ma signature et une page du nouveau tout82 pointent vers le catalogue, mais je fais des mises à jours du catalogue depuis quelques semaines.
Par ailleurs j'ai récemment partagé une traduction française des tokenMap de TokenIDE, que je te recommande autant que SourceCoder.

Voici le sujet dans lequel je présentes mes mises à jour du catalogue et des TokenMaps http://www.tout82.org/t278-catalogue-et-tokenmaps

SourceCoder de Cemetech utilise les même TokenMap que TokenIDE de Merthsoft sur Cemetech, enfin je crois.
Les symboles spéciaux qui nécessiteraient de l'unicode ou une police particulière sont remplacées par des codes simples et compatibles ascii.
Tout ce qui existe dans les 82stats est inclus dans les 84plus avec osMathPrint. La traduction française est un autre problème.
Donc tu peux ouvrir des 83p sans crainte et les particularités ne viennent pas du modèle de calculatrice.

Par contre je constate à l'instant des ambiguïtés françaises des variables et options de la Table. (82statsfr versus application)

gcd = pgcd
fPart = partDéc
~ = négatif "( - )" // attention au smily du forum sans les espaces cupsmiley.gif
TblStart = DébTable // variable de table, dans var+6 et 2nde+fenêtre
DeltaTbl = PasTable // variable de table
DependAuto = CalculsAuto // config de table
IndpntAuto = ValeursAuto // config de table

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Sam 06 Déc 2014, 12:53   Citer 

Merci c'est encore fois hyper sympa de ta part ^^ ...
J'envisagerais par la suite à faire référence à ton catalogue .

PS : juste une petite question :

"If fPart(Z/P
Then"

tu ne mets pas de condition ?

PS' : "UZ+XB" ->{Y1} (erreur de syntaxe) et en plus je ne vois même pas ce que tu veux vraiment faire ...

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 06 Déc 2014, 16:59   Citer 

Tout nombre non-nul est vrai et zéro est faux.
If fPart(Z/P) détecte la partie décimal non-nulle donc détecte la non-divisibilité.

"UZ+XB" ->{Y1}
SourceCoder utilise "{Y1}" pour nommer l'équation de courbe Y1 sans confondre avec la lettre Y et le chiffre 1.

#######

Il y a un défaut de calcul que je n'avais jamais remarqué avant. Personne ne l'a signalé en quelques années, peut-être même que personne ne l'a rencontré.
Je créerai une nouvelle version et je la mettrai à la place des anciennes. (j'ai plein de trucs à éditer pour faire un résultat propre)
Je corrigerai donc le bug (oubli de la division P du couple initial). De plus, j'en profite pour mettre à jour le programme en améliorant la routine de calcul (utiliser une matrice, c'est plus clair qu'alterner des cases d'une liste). Et je complète l'ensemble des solutions que j'avais trouvé tout seul avec ce que j'ai lu dans un article mathématique qui est plus complet.

Je suis vraiment désolé pour le bug, par contre je ne regrette pas d'avoir bidouillé seul les équations quitte à avoir oublié une partie de l'ensemble des solutions.

Synthèse pour mémoire
au+bv=1 et pgcd(a,b)=1 >> (u0+k*b;v0-k*a)
au+bv=Z et pgcd(a,b)=1 >> (u0*Z+k*b;v0*Z-k*a)
au+bv=P et pgcd(a,b)=P >> (u0+k*b/P;v0-k*a/P)
au+bv=Z et pgcd(a,b)=P et Z multiple de P >> (u0*Z/P+k*b/P;v0*Z/P-k*a/P)
(diviser k par P est ce que je n'ai pas inventé, et diviser u0 et v0 par P est ce que j'avais oublié)

edit:
Voici ce que j'ai créé pour corriger. La version 5-2 est la correction des bugs sans modification de l'algorithme, et la version 6 est ce que j'ai mis à jour sur de nombreux aspects.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Mer 10 Déc 2014, 20:14   Citer 

C'est pas grave , ça m'apprendra à ne pas vérifier ton programme sur papier ;

sinon là je suis en train d'apprendre le pivot de gauss ;
car comme même de ne rien comprendre à se qu'on code est un peu idiot (et merci d'avoir éveiller ma curiosité mathématiques) (je suis sincère) .

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 10 Déc 2014, 21:58   Citer 

Tant mieux. Partager les connaissances me fait plaisir.

Voici ce que j'ai créé pour corriger mon programme BEZOUT. La version 5-2 est la correction des bugs sans modification de l'algorithme, et la version 6 est ce que j'ai mis à jour sur de nombreux aspects.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
DragonLaBelette



Autorisation : Membre
Nb de messages : 31
Inscrit le : Jeu 27 Nov 2014, 20:16
Posté le : Sam 13 Déc 2014, 11:10   Citer 


Citer
int(L1(W-2)/L1(W-1->L2(W
L1(W-2)-AnsL1(W-1->L1(W



Il y a un problème car il souligne qu'on ne doit pas diviser par 0 .
J'ai essayer de chercher ... Mais je ne vois pas trop où est l'erreur ...

j'ai effacé le "int" et toujours l'erreur qui persiste ;

Le marqueur est sur le "->" ... beer.gif

----------------------
Toujours plus haut , toujours plus fort !
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2016 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa