Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1544 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Aide JAVA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide JAVA

n°1928677
mysty57
Posté le 03-10-2009 à 13:20:11  profilanswer
 

Bonjour,
 
 j'ai un problème, je dois créer un programme permettant de trouver les racines d'un polynome de degré 3. Pour trouver la première racine, je dois utiliser la dichotomie. La méthode que j'ai faite fonctionne, mais seulement quand je définis les coefficients du polynome dans la méthode P3. Si je rentre les coefficients dans la console, je renconte une erreur et j'aimerai bien savoir pourquoi.
 
Voici ma méthode dichotomie:  
 
 
 

Citation :

public class Polynôme {
 
 public static double P7 (double X){
  double P7 = Math. pow(X, 7) - 64  ; // On définit ici le polynôme P7(X)
  return P7;  
 }
 
 public static  double dichotomie(double a,double b,int compteur){
 
  if (P7(a) * P7(b)< 0){
  double m = (a+b)/2; //m est le milieu de [a,b]  
  double epsilon= 0.00001; //pour la précision
  System.out.println("\n\t Appel récursif numéro "+compteur );
  System.out.println("\t On considère à présent l'intervalle : ["+a+" , "+b+"]" ) ; // on affiche un résultat intermédiaire afin de voir si l'intervalle choisi est bon
   
   if(Math.abs(P7(m))<epsilon){ // Math.abs() permet de prendre la valeur absolue  
   return m;
   }
   else  if (P7(a)*P7(m)>0){
      compteur ++;
      return dichotomie (m,b,compteur);
      }
         else compteur ++;
        return dichotomie (a,m,compteur);
  }
  else System.out.println("\t Erreur !! L'intervalle ["+a+" , "+b+"] ne contient aucune solution !!!" );
  return 0; // 0 équivalent à l'ensemble vide
  }
 
 public static void main (String[]args){
   
   double res = dichotomie(-1, 2 ,0); // Il faut choisir ici un intervalle où il y a une solution sinon erreur.
   System.out.print("\n\t La racine réelle de P7(X) est X* = " +res);
  }
}


 
 
 
 
et voici ma classe équation de degré 3:
 

Citation :


import static java.lang.System.out;
 
public class Rac3 {
 
 public static double P3 (double X){
   
   
  String txt1 = es.LireCh("coeff A = " );
  double a3 = Double.valueOf(txt1).doubleValue();  // pour JDK 1.1
 
  String txt2 = es.LireCh("coeff B = " );
  double a2 = Double.valueOf(txt2).doubleValue();
 
  String txt3 = es.LireCh("coeff C = " );
  double a1 = Double.valueOf(txt3).doubleValue();
   
  String txt4 = es.LireCh("coeff D = " );
  double a0 = Double.valueOf(txt4).doubleValue();
   
   
  double P3 =  a3 * Math.pow(X, 3) + a2*  Math.pow(X, 2) + a1 * X + a0;// On définit ici le polynôme P3(X)
  return P3;
 }
 
 public static  double dichotomie(double a,double b,int compteur){
   
   if (P3(a) * P3(b)< 0){
   double m = (a+b)/2; //m est le milieu de [a,b]  
   double epsilon= 0.00001; //pour la précision
   System.out.println("\n\t Appel récursif numéro "+compteur );
   System.out.println("\t On considère à présent l'intervalle : ["+a+" , "+b+"]" ) ; // on affiche un résultat intermédiaire afin de voir si l'intervalle choisi est bon
   
    if(Math.abs(P3(m))<epsilon){ // Math.abs() permet de prendre la valeur absolue  
    return m;
    }
    else  if (P3(a)*P3(m)>0){
       compteur ++;
       return dichotomie (m,b,compteur);
       }
          else compteur ++;
         return dichotomie (a,m,compteur);
   }
   else System.out.println("\t Erreur !! L'intervalle ["+a+" , "+b+"] ne contient aucune solution !!!" );
   return 0; // 0 équivalent à l'ensemble vide  
 }
 
 public static void main(String[]args){
   
   out.println("\n\n" );
   out.println ("\t ------------------------------------------------------------------------ " );
   out.println ("\t|                                                                        |" );
   out.println ("\t|  TPP 02: Résolution de polynôme type a3 X^3 + a2 X^2 + a1 X + a0 = 0   |" );
   out.println ("\t|                                                                        |" );
   out.println ("\t ------------------------------------------------------------------------ " );
   
   double res = dichotomie(-1,2,0);
   System.out.println(res);
   
   
 
   
  /* Suite du TPP
 System.out.println(" Le polynôme à résoudre est : " +a3+" X^3 + "+a2+ " X^2 + " +a1+" X + "+a0+ "= 0" );
   double rac1, rac2, rac3;
   out.println();
   double delta= b*b - 4*a*c;
   if (a == 0){
    rac1 = (-c/b);
    out.printf("Le polynome admet une racine reelle: \nx= "+rac1);
   }
    else if (delta>0) {
    rac1 = (-b-sqrt(delta))/(2*a);
    rac2 = (-b+sqrt(delta))/(2*a);
  out.println("l'equation admet deux solutions reelles: \nx1= "+rac1+" et x2= "+rac2);
   } else  
    if (delta==0) {
     rac1 = -b/(2*a);
     out.printf("Le polynome a donc une racine reelle double qui est :  %e \n", rac1);
    }
    else  {
     rac1 = -b/2*a;
     delta = abs(delta);  /*  Pourqoui l'emploi  de la val. absolue  de 'delta' ici ?  
     rac2 = sqrt(delta)/2*a;
     out.println("Le polynome admet deux racines complexes qui sont: \nx1= "+rac1+" -i "+ rac2+" et x2= "+rac1+" +i "+ rac2);  
    }
   
   }
  es.attente();
  }
 */
  }
 }


 
Merci de m'aider à faire cela


Message édité par mysty57 le 03-10-2009 à 13:36:41
mood
Publicité
Posté le 03-10-2009 à 13:20:11  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Aide JAVA

 

Sujets relatifs
Aide pour un chat RMI en Javaaide pour un programme JAVA (débutante)
besoin d'aide pb JAVA declaration impots + videos SVPbesoin d'aide pour debutant java
stp j'ai besoin d'aide sur les évènements dans javaAide programmation java;: modeliser une blibliotheque urgent svp
besoin d'aide en java ?Aide pour installer une applet java...
Java Mysql besoin d'aideBesoin d'aide, conseil Jsp, java
Plus de sujets relatifs à : Aide JAVA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR