Programme java de la methode de Regula-Falsi
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Programme java de la methode de Regula-Falsi



  1. #1
    Sam*

    Programme java de la methode de Regula-Falsi


    ------

    Bonjour, j'ai trouvé ce programme java qui calcule la racine d'une fonction par le procéde de Régula-Falsi, voici le code:
    Code:
    public class RegulaFalsi {
    	public static double RFalsi(double x,double y,double precision,double nb_iteration){
    		int n;
    		double r = 0;
    		for(n=1; n<=nb_iteration; n++){
    			r = y - f(y)*(x-y)/(f(x) - f(y));
    			if(f(r)< precision)
    				return r;
    				if(f(x) * f(r)< 0)
    					y = r;
    					else if(f(y) * f(r)< 0)
    							x = r;
    		}
    		return r;
    		}
    		
    	private static double f(double z){
    		return ((5-z)* Math.exp(z)- 5);
    	}
    }
    Ce que je n'ai pas compris se sont les 3 conditions IF , et aussi comment le programme arrive a utilisé la fonction f alors que celle-ci n'est meme pas déclaré .
    Dernier point c'est quoi "private static double f(double z) . Est ce que c'est la déclaration de f ?

    -----

  2. #2
    bzh_nicolas

    Re : Programme java de la methode de Regula-Falsi

    Citation Envoyé par Sam* Voir le message
    Dernier point c'est quoi "private static double f(double z) . Est ce que c'est la déclaration de f ?
    Oui, c'est la déclaration suivie de sa définition.

  3. #3
    Sam*

    Re : Programme java de la methode de Regula-Falsi

    Merci pour cette première réponse , mais je n'ai pas toujours compris le mécanisme des 3 conditions If ?

  4. #4
    bzh_nicolas

    Re : Programme java de la methode de Regula-Falsi

    Attention, déjà ton code est mal indenté, ce qui peut en compliquer la lecture.
    Code:
    public class RegulaFalsi {
    	public static double RFalsi(double x,double y,double precision,double nb_iteration){
    		int n;
    		double r = 0;
    		for(n=1; n<=nb_iteration; n++){
    			r = y - f(y)*(x-y)/(f(x) - f(y));
    			if(f(r)< precision)
    				return r;
    			if(f(x) * f(r)< 0)
    				y = r;
    			else if(f(y) * f(r)< 0)
    				x = r;
    		}
    		return r;
    	}
    	
    	private static double f(double z){
    		return ((5-z)* Math.exp(z)- 5);
    	}
    }
    Ensuite, qu'as-tu déjà compris et que ne comprends-tu pas exactement ?

  5. A voir en vidéo sur Futura
  6. #5
    Xoxopixo

    Re : Programme java de la methode de Regula-Falsi

    Bonjour,

    Cette fonction permet de trouver la valeur de x pour laquelle f(x)=0.
    La methode utilisée est un mixe de dichotomie et de secante.
    Wikipedia : http://fr.wikipedia.org/wiki/M%C3%A9...ausse_position

    Tu retrouve la dichotomie dans l'iteration.
    La valeur f(x) est calculée jusqu'à ce que f(x) equivaut à 0.
    Comme 0 ne sera jamais atteint, on donne la précision qui determine l'arret de l'iteration lorsqu'on considere que f(x) est suffisement proche de 0 (variable précision) ou que le nombre d'iteration est atteint (variable nb_iteration)

    Donc premiere condition IF
    if(f(r)< precision) return r;


    Je vois pourquoi tu semble avoir des soucis,
    c'est le fait d'avoir nommé tes bornes inferieur et supperieur de recherche x et y.
    Il aurait mieux valu les nommer a et b, car y n'est pas f(x), et le x de f(x) n'est pas le x que tu utilise....

    Pour les deux prochaines conditions (exclusives)
    le principe est de multiplier f(a) par f(r) ou f(b) par f(r)
    Si le resultat est inferieur à 0 ceci veut dire que f(a) et f(r) ou
    f(b) et f(r) sont de signe opposé (+*+=+, -*-=+ mais +*-=- et -*+=-)

    r etant le resultat, en cours d'approximation.

    if(f(x) * f(r)< 0) y = r;
    La borne superieur y vaut r, elle sera reprise à la prochaine iteration.
    que je nomme b, donc b=r (valeur en cours d'approximation)

    if(f(y) * f(r)< 0) x = r
    La borne inferieur x vaut r, elle sera reprise à la prochaine iteration
    que je nomme a, donc a=r (valeur en cours d'approximation)

    Ensuite on refait un tour de boucle etc..

    f est la fonction pour laquelle TU cherches la valeur telle que f(x)=0.
    La definition de celle-ci (le private en bas) est donc à remplacer par TA propre fonction, celle que tu etudie.

Discussions similaires

  1. installation du programme java sur windows 7!!!
    Par invite0da6e6b6 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/01/2011, 19h11
  2. programmation des résolutions numériques des équations f(x)=0 par la methode de regula falsi
    Par invite566f86b2 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 12/12/2010, 07h21
  3. Importer des sources DLL dans un programme java sous netbeans
    Par invitebac23ddd dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/06/2009, 10h24
  4. Méthode des moindres carrés: algo java
    Par invitef4dbb457 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 06/02/2009, 13h38
  5. Proxy pour aller sur programme en java
    Par invited8ae5367 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 04/08/2008, 05h53