begin process at 2010 02 10 11:21:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > RESOLUTION D'UN SYSTEME 3X3 EN RÉPONSE AU FORUM

RESOLUTION D'UN SYSTEME 3X3 EN RÉPONSE AU FORUM


 Information sur la source

Note :
Aucune note
Catégorie :Maths Niveau :Débutant Date de création :25/04/2003 Date de mise à jour :25/04/2003 14:03:03 Vu / téléchargé :2 411 / 109

Auteur : magicvinni

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Résolution par la methode de cramer, donne la reponse sous forme d'une fraction irréductible. Les coef doivent etre entiers.

Source

  • unit Unit1;
  • {Résolution d'un système de 3 équtions à 3 inconnnues à coeficients entiers.
  • Facilement modifiable pour travailler sur des réels. La méthode utilisée est
  • la méthode de Cramer ( je crois), ce n'est pas la plus rapide, mais la plus
  • simple à programmer}
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, StdCtrls;
  • type
  • TForm1 = class(TForm)
  • Label1: TLabel;
  • A11: TEdit;
  • A21: TEdit;
  • A31: TEdit;
  • A12: TEdit;
  • A32: TEdit;
  • A33: TEdit;
  • A23: TEdit;
  • A22: TEdit;
  • A13: TEdit;
  • R1: TEdit;
  • R2: TEdit;
  • R3: TEdit;
  • Label2: TLabel;
  • Label3: TLabel;
  • Label4: TLabel;
  • Button1: TButton;
  • Label5: TLabel;
  • procedure Button1Click(Sender: TObject);
  • private
  • { Déclarations privées }
  • public
  • { Déclarations publiques }
  • end;
  • var
  • Form1: TForm1;
  • implementation
  • {$R *.dfm}
  • // Calcule le PGCD de A et B
  • Function PGCD(A,B:Integer):Integer;
  • Begin
  • if B=0 then Result:=A
  • else Result:=PGCD(B,A mod B);
  • End;
  • // Ecris la fraction A/B sous forme irréductible
  • Function Fract(A,B:Integer):String;
  • Begin
  • Fract:=IntToStr(A div PGCD(A,B))+'/'+IntToStr(B div PGCD(A,B));
  • End;
  • // Renvoie le derterminant de la matrice (Cij)
  • Function Determinant(C11,C12,C13,C21,C22,C23,C31,C32,C33:Integer):Integer;
  • Begin
  • // On calcule le determinant à la babare
  • Result:=C11*(C22*C33-C32*C23)-C12*(C21*C33-C31*C23)+C13*(C21*C32-C31*C22);
  • End;
  • // Quand on clique sur résoudre
  • procedure TForm1.Button1Click(Sender: TObject);
  • var D,D1:integer;
  • nA11,nA12,nA13,nA21,nA22,nA23,nA31,nA32,nA33,nR1,nR2,nR3,R,RT:Integer;
  • begin
  • // Teste et convertit les valeurs
  • RT:=0;
  • Val(A11.Text,nA11,R);RT:=RT+R;
  • Val(A12.Text,nA12,R);RT:=RT+R;
  • Val(A13.Text,nA13,R);RT:=RT+R;
  • Val(A21.Text,nA21,R);RT:=RT+R;
  • Val(A22.Text,nA22,R);RT:=RT+R;
  • Val(A23.Text,nA23,R);RT:=RT+R;
  • Val(A31.Text,nA31,R);RT:=RT+R;
  • Val(A32.Text,nA32,R);RT:=RT+R;
  • Val(A33.Text,nA33,R);RT:=RT+R;
  • Val(R1.Text,nR1,R);RT:=RT+R;
  • Val(R2.Text,nR2,R);RT:=RT+R;
  • Val(R3.Text,nR3,R);RT:=RT+R;
  • if RT>0 then begin
  • // Si une case n'est pas un nombre
  • Showmessage('Vous devez entrer des NOMBRES entiers dans toutes les cases');
  • end else begin
  • D:=Determinant(nA11,nA12,nA13,nA21,nA22,nA23,nA31,nA32,nA33);
  • if D=0
  • then ShowMessage('Le système n''est pas de rang 3, je ne peux trouver les solutions')
  • else Begin
  • D1:=Determinant(nR1,nA12,nA13,nR2,nA22,nA23,nR3,nA32,nA33);
  • Label5.Caption:='x='+Fract(D1,D)+'='+FloatToStr(D1/D);
  • D1:=Determinant(nA11,nR1,nA13,nA21,nR2,nA23,nA31,nR3,nA33);
  • Label5.Caption:=Label5.Caption+#13+'y='+Fract(D1,D)+'='+FloatToStr(D1/D);
  • D1:=Determinant(nA11,nA12,nR1,nA21,nA22,nR2,nA31,nA32,nR3);
  • Label5.Caption:=Label5.Caption+#13+'z='+Fract(D1,D)+'='+FloatToStr(D1/D);
  • End;
  • end;
  • end;
  • end.
unit Unit1;

{Résolution d'un système de 3 équtions à 3 inconnnues à coeficients entiers.
Facilement modifiable pour travailler sur des réels. La méthode utilisée est
la méthode de Cramer ( je crois), ce n'est pas la plus rapide, mais la plus
simple à programmer}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    A11: TEdit;
    A21: TEdit;
    A31: TEdit;
    A12: TEdit;
    A32: TEdit;
    A33: TEdit;
    A23: TEdit;
    A22: TEdit;
    A13: TEdit;
    R1: TEdit;
    R2: TEdit;
    R3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Calcule le PGCD de A et B
Function PGCD(A,B:Integer):Integer;
Begin
  if B=0 then Result:=A
         else Result:=PGCD(B,A mod B);
End;

// Ecris la fraction A/B sous forme irréductible
Function Fract(A,B:Integer):String;
Begin
  Fract:=IntToStr(A div PGCD(A,B))+'/'+IntToStr(B div PGCD(A,B));
End;

// Renvoie le derterminant de la matrice (Cij)
Function Determinant(C11,C12,C13,C21,C22,C23,C31,C32,C33:Integer):Integer;
Begin
  // On calcule le determinant à la babare
  Result:=C11*(C22*C33-C32*C23)-C12*(C21*C33-C31*C23)+C13*(C21*C32-C31*C22);
End;

// Quand on clique sur résoudre
procedure TForm1.Button1Click(Sender: TObject);
var D,D1:integer;
    nA11,nA12,nA13,nA21,nA22,nA23,nA31,nA32,nA33,nR1,nR2,nR3,R,RT:Integer;
begin
  // Teste et convertit les valeurs
  RT:=0;
  Val(A11.Text,nA11,R);RT:=RT+R;
  Val(A12.Text,nA12,R);RT:=RT+R;
  Val(A13.Text,nA13,R);RT:=RT+R;
  Val(A21.Text,nA21,R);RT:=RT+R;
  Val(A22.Text,nA22,R);RT:=RT+R;
  Val(A23.Text,nA23,R);RT:=RT+R;
  Val(A31.Text,nA31,R);RT:=RT+R;
  Val(A32.Text,nA32,R);RT:=RT+R;
  Val(A33.Text,nA33,R);RT:=RT+R;
  Val(R1.Text,nR1,R);RT:=RT+R;
  Val(R2.Text,nR2,R);RT:=RT+R;
  Val(R3.Text,nR3,R);RT:=RT+R;
  if RT>0 then begin
    // Si une case n'est pas un nombre
    Showmessage('Vous devez entrer des NOMBRES entiers dans toutes les cases');
  end else begin
    D:=Determinant(nA11,nA12,nA13,nA21,nA22,nA23,nA31,nA32,nA33);
    if D=0
    then ShowMessage('Le système n''est pas de rang 3, je ne peux trouver les solutions')
    else Begin
      D1:=Determinant(nR1,nA12,nA13,nR2,nA22,nA23,nR3,nA32,nA33);
      Label5.Caption:='x='+Fract(D1,D)+'='+FloatToStr(D1/D);
      D1:=Determinant(nA11,nR1,nA13,nA21,nR2,nA23,nA31,nR3,nA33);
      Label5.Caption:=Label5.Caption+#13+'y='+Fract(D1,D)+'='+FloatToStr(D1/D);
      D1:=Determinant(nA11,nA12,nR1,nA21,nA22,nR2,nA31,nA32,nR3);
      Label5.Caption:=Label5.Caption+#13+'z='+Fract(D1,D)+'='+FloatToStr(D1/D);
    End;
  end;
end;

end.


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip DÉCOMPOSITION EN FACTEURS PREMIERS

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR D'UN NOMBRE DÉCIMAL EN BINAIRE ET HEXADECIMAL par ludokk
Source avec Zip Source avec une capture PREMIER OU PAS? par ludokk
Source avec Zip Source avec une capture CONJECTURE DU CARRÉ DES FACTEURS par Bacterius
Source avec Zip Source avec une capture GÉNÉRATEUR DE NOMBRES PSEUDO-ALÉATOIRES par Bacterius
Source avec Zip Source avec une capture ALGORITHME DE HASH LEA par Bacterius

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,749 sec (4)

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