begin process at 2012 02 09 07:40:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Algorithme

 > 

Maths

 > 

Simplifier une équation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Simplifier une équation

mercredi 29 avril 2009 à 03:42:25 | Simplifier une équation

f0xi

Membre Club Administrateur CodeS-SourceS

Salut, c'est pas souvent ... mais ça arrive, j'aurais besoin qu'un matheux se penche la dessus :

est-il possible de simplifier ceci :

J = (3 * (X div 3)) + (Y div 3)
N = (3 * (X mod 3)) + (Y mod 3)

sincerement, les equations ... c'est vachement loin (scolairement parlant) ... et je me souviens plus comment on les simplifie...
j'ai bien essayé de "tripoter" dans tout les sens ... mais ... ça donne rien, exemple :
J = (3*(X+Y)) div 9 = gros caca qui pue.

dans le contexte : X et Y vont de 0 a 8
soit
for X := 0 to 8 do
  for Y := 0 to 8 do
  begin
   J[X,Y] := (3*(X div 3))+(Y div 3);
   N[X,Y] := (3*(X mod 3))+(Y mod 3);
  end;

la sequence que j'obtiens etant :
pour J :
  X
Y   0 1 2 3 4 5 6 7 8
  0 0,0,0,1,1,1,2,2,2,
  1 0,0,0,1,1,1,2,2,2,
  2 0,0,0,1,1,1,2,2,2,
  3 3,3,3,4,4,4,5,5,5,
  4 3,3,3,4,4,4,5,5,5,
  5 3,3,3,4,4,4,5,5,5,
  6 6,6,6,7,7,7,8,8,8,
  7 6,6,6,7,7,7,8,8,8,
  8 6,6,6,7,7,7,8,8,8

pour N :
  X
Y   0 1 2 3 4 5 6 7 8
 
0 0,1,2,0,1,2,0,1,2,
 
1 3,4,5,3,4,5,3,4,5,
 
2 6,7,8,6,7,8,6,7,8,
 
3 0,1,2,0,1,2,0,1,2,
 
4 3,4,5,3,4,5,3,4,5,
 
5 6,7,8,6,7,8,6,7,8,
 
6 0,1,2,0,1,2,0,1,2,
 
7 3,4,5,3,4,5,3,4,5,
 
8 6,7,8,6,7,8,6,7,8

Il me semble que je ne puisse simplifier plus les deux equations ... mais dans le doute, je pose la question.

merci a tous pour vos futures réflexions sur ce sujet.
un peu de glucose pour votre cerveau ?



mercredi 29 avril 2009 à 08:49:10 | Re : Simplifier une équation

Francky23012301

Membre Club
Réponse acceptée !
Salut f0xi

Désolé mais ce n'est pas simplifiable .

1)Un petit rappel  :
a*(b+c)=a*b+a*c

Ton sentiment de simplification vient d'ici. Sauf que 3 n'est le facteur que de (X div 3)et non (Y div 3).

Il aurait fallut que tu es :
(3 * (X div 3)) + (3 *(Y div 3))=3*(X div 3+Y div 3)

2)La division :

m/a+n/a = (m+n)/a et non
(m+n)/(a*a)

Par contre (m/a)*(n/a)=(m*n)/a*a)

Par contre s'il y a autre chose apres (systeme d'équation, dérivée ect ect), il y a peut etre moyen de simplifier des calculs intermédiaires.
mercredi 29 avril 2009 à 13:37:17 | Re : Simplifier une équation

Bacterius

Membre Club
"
J = (3 * (X div 3)) + (Y div 3)
N = (3 * (X mod 3)) + (Y mod 3)
"

Pour les mod je ne sais pas du tout, mais pour le div ... moi je vois ceci :

3 * (X div 3)

Ca revient à diviser X par 3, puis multiplier ce résultat par 3 ... autant faire X !

3 * (X / 3) = X
X / 3 = X / 3

L'égalité est justifiée, donc 3 * (X div 3) équivaut à X ...

Tout ce que vois pour l'instant ...

Cordialement, Bacterius !
mercredi 29 avril 2009 à 13:50:15 | Re : Simplifier une équation

Francky23012301

Membre Club
Bacterius :  (15 Div 2)*2 = 14 et non 15 ;
mercredi 29 avril 2009 à 13:55:40 | Re : Simplifier une équation

Bacterius

Membre Club
Arf zut oui j'ai trop pensé mathématiques et pas assez "nombre entiers".
Ca ne marche que pour les nombres pairs ...
C'est bête ^^
Mais au fond, je me demande si ça ne serait pas plus rapide de travailler en Single et d'utiliser la division décimale (/) plutôt que d'effectuer (en nombre entier, certes) une division puis une multiplication ? Je ne crois pas au fond ...

Cordialement, Bacterius !
mercredi 29 avril 2009 à 14:06:16 | Re : Simplifier une équation

f0xi

Membre Club Administrateur CodeS-SourceS

meci francky, c'est un peu plus clair.

en fait, pour generer les 81 chiffres, cela ne prend que 12 a 15 cycles. pas enorme.

j'ai simplifié en utilisant 4 tableaux et 2 additions. je descend a 5 a 7 cycles, ce qui est pas mal.





mercredi 29 avril 2009 à 14:09:38 | Re : Simplifier une équation

Caribensila

Membre Club
Réponse acceptée !

Salut,

Y'a ça aussi :

type
  TTab = array[0..8,0..8] of byte;

const J : TTab =
((0,0,0,1,1,1,2,2,2),
 (0,0,0,1,1,1,2,2,2),
 (0,0,0,1,1,1,2,2,2),
 (3,3,3,4,4,4,5,5,5),
 (3,3,3,4,4,4,5,5,5),
 (3,3,3,4,4,4,5,5,5),
 (6,6,6,7,7,7,8,8,8),
 (6,6,6,7,7,7,8,8,8),
 (6,6,6,7,7,7,8,8,8));


mercredi 29 avril 2009 à 14:29:47 | Re : Simplifier une équation

cantador

Membre Club Administrateur CodeS-SourceS
Salut,
dans le contexte : X et Y vont de 0 a 8
et si le contexte change ?

cantador
mercredi 29 avril 2009 à 14:39:51 | Re : Simplifier une équation

Francky23012301

Membre Club
Réponse acceptée !
Salut

Si on regarde de plus près on constate des redondances
 
X
Y   0 1 2 3 4 5 6 7 8
 
0 0,0,0,1,1,1,2,2,2,
 
1 0,0,0,1,1,1,2,2,2,
 
2 0,0,0,1,1,1,2,2,2,
 
3 3,3,3,4,4,4,5,5,5,
 
4 3,3,3,4,4,4,5,5,5,
 
5 3,3,3,4,4,4,5,5,5,
 
6 6,6,6,7,7,7,8,8,8,
 
7 6,6,6,7,7,7,8,8,8,
 
8 6,6,6,7,7,7,8,8,8

Pourquoi ne pas faire un tableau de J et utiliser cette redondance:

Var
  X,Y:Integer;
Begin
  For Y:=0 To 8 Do
  If Y Mod 3 =0 Then
    Begin
      For X:=0 To 8 Do
        Begin
          J[X,Y]:=(3*(X div 3))+(Y div 3);
          move(J[X,Y],J[X,Y+1],1);
          move(J[X,Y],J[X,Y+2],1);
        End;
    End;
End;

Je me trompe peut etre mais copier des octets est plus rapide que de refaire un J[X,Y]:=(3*(X div 3))+(Y div 3). Puis en plus tu pourrais utiliser des pointeurs

mercredi 29 avril 2009 à 14:59:58 | Re : Simplifier une équation

Francky23012301

Membre Club
Réponse acceptée !
Arfff le boulet : Y doit alors etre compris entre 0 et 6 sinon aie aie aie

Rectification :

Arfff le boulet :

Var
  X,Y:Integer;
Begin
  For Y:=0 To 6 Do
  If Y Mod 3 =0 Then
    Begin
      For X:=0 To 8 Do
        Begin
          J[X,Y]:=(3*(X div 3))+(Y div 3);
          move(J[X,Y],J[X,Y+1],1);
          move(J[X,Y],J[X,Y+2],1);
        End;
    End;
End;

1 2

Cette discussion est classée dans : mod, div, équation, simplifier, equations


Répondre à ce message

Sujets en rapport avec ce message

equation [ par koko ] Je voudrais que mon prog puisse résoudre un équation du genre : on a 2 pt, avec leurs coordonnées imaginons le pt A et BA (1,2) B(3,1). Il existe une comment jouer une music [ par takak ] bonjour,je cherche désepérément comment jouer une music dans un programme en delphi, qui s' ouvrirait et se jouerait en boucle dès l'ouverture du prog Systéme de 3 equations et 3 inconnus [ par ryadus ] y'aurait it un moyen de résoudre un systéme à 3 equations et 3 inconnusmerci DBGrids de ... :'( [ par TheShAmAn ] Bon voila ma requete ki marche (testée sur ACCESS):CorpsQuerry := 'SELECT id_mat, nom_mat, nom_typmat, nom_m Résolution d'équation et java [ par bitschies ] Coucou, j'essai d'apprendre les bases du langage java, non sans difficultés!! :oops: J'ai un cours comprenant un exemple de résolution d'équation du Systeme equations [ par Noddles ] Bonjour, je veux résoudre un systeme equations : n equations à n inconnues, du type ax+by+cz = S a1x+b1y+c1z = S a2x+b2y+c2z = S J'ai voulu uti équation [ par zibong ] Je sais que sa a pas beaucoup a voir avec delphi mais j'ai besoins dans l'un de mes programme de ressoudre une équation du type suivant: tan(a)=(cos(a pb de scintillement [ par jace1975 ] bonjour à touspour une appli que j'écris en ce moment, j'utilise le code suivant pour changer l'apparence de l'horloge windows :dans un timer je mets calculer une équation dans un TEdit... [ par Crocodile306 ] Tout est dans le titre !Je me demandais seulement si il y aurais pas un moyen de calculer le contenu d'un TEdit...Par exemple :Edit1.Text := '3*sqrt(1


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales