Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 Re : Programmation » Algorithmes » 06-05-2012 14:45:41

Tu peux utiliser l'interpolation de Lagrange puis calculer ses coefficients par la méthodes des différences divisées .Tu peux aller ici

#2 Re : Programmation » équation différentielle du second ordre non linéaire » 06-05-2012 14:10:16

Si les conditions aux limites sont : f(0)=f(1)=1 . Il faut utiliser le polynôme d'interpolation de Lagrange sous forme d'Hermite.
va lire cela ici:
--> link 1
-->link 2

#3 Re : Programmation » c++ pour ceux qui veulent! » 06-05-2012 13:52:29

Si on en parle via le Framework C++ Qt 4.x clique ici et regarde mon commentaire (ngatilio)

#4 Re : Programmation » Corrélation par SAD( somme des différences absolues) » 05-05-2012 18:13:47

+--------------------------------------------------+
+                Essaie avec Qt 4.x               +
+--------------------------------------------------+
// --> supposons que ton image est codée  sur 32 bits


#include <QtGui>
#include <SAD.h>
#include <math.h>
#include <iostream>


//taille maxi des images
int x =0x190 ,y =0x258;

QPoint taille_image(x,y);
// l'image est mis sous un format de 32 bits a la taille taille_image

QImage pixmap1(taille_image,QImage::Format_RGB32);
QImage pixmap2(taille_image,QImage::Format_RGB32);

// création du constructeur SAD qui prend en entrée la taille de la région sur les images ou l'on veut calculer le SAD et les deux images

qreal SAD::SAD (int m_value, int n_value, QImage *im1, *im2)

{
   im1 = pixmap1; 
   im2 = pixmap2;
   if(m_value >= x || n_value >=y) // la position des pixels ne doit pas dépasser x et y(taille de l'image)
                              {                               
       QMessageBox::Erreur1(this, tr("Error Size"), tr("La position entrée est supérieure a   la taille de l'image"));
                              }
     for(int index1 = 0; index1 <m_value;index1++)
                             {
      for(int index2 = 0; index2 <n_value;index2++)
                                   {                       
                             Qrgb pix1 = im1->pixel(index1,index2);
                             Qrgb pix2 = im2->pixel(index1,index2);
                             QColor convert1 = fromRgb (pix1);
                             QColor convert2 = fromRgb (pix2);
                             int intens1 =0,intens2 =0;
                     bool testcolor1 =(convert1 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
                     bool testcolor2 =(convert2 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
                             if(testcolor1 == 1)
                                                       {
                                                           intens1++; // intensite du gris a la position (index1,index2) de l'image 1
                                                           int  I1[index1,index2] = intens1;
                                                        }
                             else if ( testcolor2 == 1)
                                                        {
                                                            intens2++; // intensite du gris a la position (index1,index2) de l'image 2
                                                            int I2[index1,index2] = intens2;
                                                          }
                             else  index1++;index2++; // on passe au pixel suivant lorsqu'on ne trouve pas le gris

                                       }                     
                             }
                             
                        // calcul du SAD
                      qreal  som = 0;
                      for(int index1 = 0; index1 <m_value;index1++)
                             {
                      for(int index2 = 0; index2 <n_value;index2++)
                                   {                       
                                      som = som +(1/(m_value+n_value))*fabs(I1(index1,index2) - I2(index1,index2));     
                                    // on somme de maniere iterative ecart moyen
                                    }
                              } 
                             return som;
}

SAD::~SAD()
{

}
//-----------------------------------------------------------------------------------------------------------------
// --> ou que tu charge une image a travers ton bureau

// utiliser la classe QPixmap


+--------------------------------------------------+
+                Essaie avec Qt 4.x               +
+--------------------------------------------------+
// --> supposons que ton image est codée  sur 32 bits

#include <QPixmap>
#include <QtGui>
#include <SAD.h>
#include <math.h>
#include <iostream>


//taille maxi des images
int x =0x190 ,y =0x258;

QPoint taille_image(x,y);

// definition des chemins des images
Qstring dir1 ="C:\Administrateur\image1.png";
Qstring dir2 = "D:\Administrateur\image2.png";

QPixmap pixmap1(dir1);
QPixmap pixmap2(dir2);

// l'image est un pixmap  a la taille taille_image
pixmap1.resize(taille_image);
pixmap2.resize(taille_image);

// création du constructeur SAD qui prend en entrée la taille de la région sur les images ou l'on veut calculer le SAD et les deux images

qreal SAD::SAD (int m_value, int n_value, QPixmap *im1, *im2)

{
   im1 = pixmap1; 
   im2 = pixmap2;
   if(m_value >= x || n_value >=y) // la position des pixels ne doit pas dépasser x et y(taille de l'image)
                              {                               
       QMessageBox::Erreur1(this, tr("Error Size"), tr("La position entrée est supérieure a   la taille de l'image"));
                              }
     for(int index1 = 0; index1 <m_value;index1++)
                             {
      for(int index2 = 0; index2 <n_value;index2++)
                                   {                       
                             Qrgb pix1 = im1->pixel(index1,index2);
                             Qrgb pix2 = im2->pixel(index1,index2);
                             QColor convert1 = fromRgb (pix1);
                             QColor convert2 = fromRgb (pix2);
                             int intens1 =0,intens2 =0;
                     bool testcolor1 =(convert1 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
                     bool testcolor2 =(convert2 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
                             if(testcolor1 == 1)
                                                       {
                                                           intens1++; // intensite du gris a la position (index1,index2) de l'image 1
                                                           int  I1[index1,index2] = intens1;
                                                        }
                             else if ( testcolor2 == 1)
                                                        {
                                                            intens2++; // intensite du gris a la position (index1,index2) de l'image 2
                                                            int I2[index1,index2] = intens2;
                                                          }
                             else  index1++;index2++; // on passe au pixel suivant lorsqu'on ne trouve pas le gris

                                       }                     
                             }
                             
                        // calcul du SAD
                      qreal  som = 0;
                      for(int index1 = 0; index1 <m_value;index1++)
                             {
                      for(int index2 = 0; index2 <n_value;index2++)
                                   {                       
                                      som = som +(1/(m_value+n_value))*fabs(I1(index1,index2) - I2(index1,index2));     
                                    // on somme de maniere iterative ecart moyen
                                    }
                              } 
                             return som;
}

SAD::~SAD()
{
    return 0;
}

// il est à noter que :
--> le choix de l'un de ces codes sources dependent de l'espace memoire en terme d'espace et graphique
soit 32 bits ou 64 bits

#5 Re : Programmation » [C++] Multiplication de deux matrices » 05-05-2012 14:45:13

C'est bien beau les codes mais faut gérer:
-->   la saisie (vous pouvez utiliser les MoveTo (j+x.pos(),i+y.pos()));
-->   gérer les erreurs . vous pouvez créer un classe  ErreurMatrice
//ou le constructeur  sera :

ErreurMatrice::ErreurMatrice(Int i)
{
   Switch(i)
    {
  Case 0 :  const char* message0 ="Ecrire le message d'erreur ici ";
              printf("%s",message);
             Break;
  Case 1: instructions 2;
             Break;
  etc...
    }

Int main()
{
if( booleen)
   {intructions;}
Else  Throw ErreurMatrice(0);

etc...
}

//pour gerer les erreurs( de taille , de mauvaise saisie , d'un caractere non reconnu etc...)
juste pour ameliorer vos codes
@++

#6 Re : Programmation » programmation » 05-05-2012 14:14:14

je connais une demo de source qui pourra beaucoup t'aider tu cherchera <<Evaluation Expression Mathematique>> cliquez-ici

#7 Programmation » creation d' unité ( pascal ou delphi) » 11-07-2011 11:09:26

ngatilio
Réponses : 0

-une unité c'est comme une personne qui a une tête , un tronc et les quatre membres.
-créer une unité c'est un programme à part entière qui nécessite des connaissances sur :
les déclarations,
const  max=10;
type NUM_CODE=record
       NOM : array['a'..'z'] of string[26];
       NUM : array[1..max] of integer;
       end;
       DATE_CODE=record
       JJ : 1..31;
       MM:1..12;
       AA:1800..2011;
       end;

var
       CODE: NUM_CODE;
       DATE:DATE_CODE;


les fonctions et procédures ,

procedure attribute ( var x,y : integer; value:boolean);
begin
       instructions;
end;
function RRotate ( x_top:longint;x_bottom:longint):longint;
begin
       instructions;
end;
des manipulations des directives,
mot reservé ASSIGN ,IORESULT
{I+}
instructions;
{I-}
ou encore {T+} ,...
des connaissances en language assembleur,
procedure safe ; external
asm
;bienvenue sur l'assembleur
instructions
;bye bye
end

et la mani du code ASCII

var regs:registers;
begin
         with regs do
         begin
                 instructions;
         end;
end;
revenons à la bête :
schema d'une unité:

UNIT name_unit;

INTERFACE
uses graph, strings,dos,crt...
var
     value: longint; etc...
declarations de certaines fonctions et procedures

IMPLEMENTATION

declarations des fonctions et procedures {dire ce que l'unité doit faire}
instructions;

BEGIN{initialisation des variables}
instructions;
  END.

#8 Programmation » Tri dichotomique(en pascal ou delphi) » 11-07-2011 10:29:09

ngatilio
Réponses : 1

je propose  un algorithme de tri dichotomique en pascal 7.0

program tri_dichotomique;
const max=100;
uses crt;
type vector : array [1..max] of integer;
var
    Tab , mot : vector;
    i , j : integer;
    inf ,  sup , position,Temp : longint;

procedure lire;
begin
        for i:=1 to max do
           begin
                   write ('Entrer un mot dans la liste');
                   read (Tab[i]);
            end;
end;
procedure Tri ;
begin
         For i:=1 to max-1 do
            begin
                 For j:=i+1 to max do
                   begin
                         while  Tab[i] > Tab[j] do
                             begin
                                    Tab[i]:= Temp;
                                    Tab[j]:=Tab[i];
                                    Temp:=Tab[j];
                             end;
                   end;
            end;
end;
procedure position ;
begin
       write ('Entrer le mot a chercher :');
       read (mot [i]);
       inf:=1; sup:=max;
       position:=(inf+sup+1) div 2 ;
       repeat
                while mot [i] <>Tab [position] and sup <>inf do
                begin
                if  inf := sup-1  then  inf := sup;
                if  inf = sup  then  exit ;
                while mot [i] <Tab [position] do
                     begin
                            if  inf < position do sup:= position
                           
                            else inf := position;
                            position:=(inf+sup+1) div 2 ;                     
                      end;
                  if sup<>inf then  position:=(inf+sup+1) div 2 write ('Le mot est a la position',position)
                  else  write ('Le mot n'existe pas dans la liste');
               end;       
        false;
        readln;
end;
                                                 {programme principal}
begin
        clrscr;
       Textbackground (2);
       gotoxy(40,20);
       lire;
       clrscr;
       Tri;
       clrscr;
       Textbackground (5);
       gotoxy(40,20);     
       position;
       read();
end.

#9 Re : Programmation » [Python] expo modulaire » 27-06-2011 20:18:52

On peut faire l'exponentiation modulaire avec le pascal 7.0

program exp_modu (input , output);
uses crt;
var
     emod , a , b , c : longint;

function exmod ( x , y , z : longint):longint ;

var p , q ,i: longint;

begin
        p:= x mod y ;
        for i:=1 to p do
            begin
                    q : = z * p ;
            end;
        exmod := q ;
end;
{appel de l'exponentiation modulaire}
begin
       clrscr;
       gotoxy(50,20);
       Textbackground (5);
       write ('on suppose qu'on fait a^(b mod c). Entrer les valeurs de a , b et c :' );
       read (a , b , c);
       emod : = exmod (b , c , a);
       gotoxy(50,20);
       write('l''exponentielle modulaire est de :', emod);
       read();
end.

#10 Re : Programmation » python, fonction produit » 27-06-2011 19:54:09

Je vais faire un exemple en pacal 7.0 ou Delphi


function product ( var x,y:real ):real ;
var p:real;
begin
        p:= x*y;
        product:= p;
end;
{appel produit}
begin
       write('entrer deux reels');
       read(a,b);
       s:=product (a,b);
       write('le produit est',s);
       readln();
end.
 

#11 Re : Programmation » C++ » 29-04-2011 21:43:54

Malheureusement j ne connais pas bien le C , on va le faire en pascal
Program matrix ;
         Label 1 ;
          Type  tab: array [1..Max,1..Max] of integer ;
                    keypressed : array ['A'..'Z'] of word ;
           uses  crt , Graph ;
           var   Gm , Gd , i , j , k,val : integer ;
                   C , D , E : tab ;
                    Quit : keypressed ;
           procedure  create_Interface ;
           begin
                    clrscr;
                    Gd := detect ;
                    InitGraph (Gm,Gd,'C:\tp\bgi ');
                    if GraphResult <> grOk then
                       begin
                                writeln ('erreur de l''initialisation en mode graphique');
                                halt (1);
                       end;
                       SetFillStyle (1,red);
                       Bar3D (20,30,100,40,20,false);
                       Bar3D(30,50,40,70,10,true);
                       readln;
                       CloseGraph;
          end;
          Procedure Display_Menu;
          begin
                  clrscr;
                  writeln ('choisir l''une des operations suivantes');
                  writeln ('1. produit de matrices');
                  writeln ('2. calcul du Determinant');
                  writeln ('3.Inverse');
                  readln (val);
                  readln;
          end;
          Procedure Submit_Menu;
           function prod_scalaire (A , B : tab ): tab ;
           begin
                           prod_scalaire:= 0;
                       for i:=1 to Max do
                               for j:=1 to Max do     
                                   for k:=1 to Max do   
                                        prod_scalaire:= A[i,k]*B[k,j] ;
           end;
          if (val=1) then
                  begin
                                    writeln ('entrer deux matrices');
                                    readln (C[i,j] , D[i,j]);
                                    E[i,j]:= prod_scalaire (C[i,j] , D[i,j]);
                                    writeln ('la matrice cherche est', E[i,j]);
                                    readln;
                 <b>end</b>;
              {pour calculer C^k utiliser la boucle repeat ----until }
              {pour les determinants , l''inverse utiliser la boucle for}
         procedure exit ;
             begin
                     if  Quit  then
                        begin
                                clrscr;
                                exit;
                                readln;
                        end
                        else goto 1 ;
                        readln;
            end.

#12 Re : Entraide (supérieur) » complexes » 18-09-2010 21:10:30

meme principe pour module de z' =2 lis bien la precedente correction.

#13 Re : Entraide (supérieur) » complexes » 18-09-2010 21:06:17

pour donc continuer la resolution a ton pb retient ces quelques principes:
-si z=-i alors arg<(z)=3pi/2 modulo2pi
ainsi tu as facilement arg(z')=3pi/2 modulo2pi=arg(z) et donc:
on en deduit que: arg(z')=arg(z) implique  cos(z)=0=cos(z') et sin(z)=-1=sin(z')  (1)
siv tu as cela la suite est tres facile; bon continuons:
on pose z=x+iy ainsi, z'=(x-3+i(y+1))/(-x+i(2-y))  par conjugaison  par:
-x-i(2-y) qui n'est autre que le conjugue du denominateur ,l'on a:
z'=[-x(x-3)+(y+1)(2-y)]/[x²+(2-y)²] +i[-(2-y)(x-3)-x(y+1)]/[x²+(2-y)²] (2)
ona d'apres (1) cos(z')=0 et on sait que: z'=cos(z')+isin(z')
ainsi en reunissant (2)et(1) on en deduit que:
-x(x-3)+(y+1)(2-y)=0 avec x²+(2-y)²#0
ainsi par simple developpement on obtient:
-x²-y²+3x+y+2=0 en simplifiant par (-1) l'on a:
x²+y²-3x-y-2=0 qui est bien l'equation d'un cercle
deja l'ensemble des pts M est 1 cercle maintenant caracterisons ce cercle:
par canonisation de l'equation l'on a:
c'est le cercle de centre u(3/2,1/2) et de rayon 3/racine carre de2.

Pied de page des forums