Bonjour à tous,

J'essaye de construire le fractal de Mandel Brot mais un problème se pose à moi :

Il ne reconnait pas vraiment si le point 'a' est dans l'ensemble ou pas.

Merci d'avance pour votre aide :

main.c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
 
#include "complex.h"
#include "mandel.h"
 
int main()
{
    complex a = {0.25, 0.25};
    complex res = add(a, a);
    print_complex("a + a = ", res);
    res = mul(a, a);
    print_complex("a x a = ", res);
    printf("|a| = %f et |a^2| = %f\n", mod(a), mod(res));
 
    if(is_in_mandelbrot(a)) printf("a est dans Mandelbrot !\n");
    else printf("a n'est pas dans Mandelbrot ");
 
    if(is_in_mandelbrot(res)) printf("a^2 est dans Mandelbrot !\n");
    else printf("a^2 n'est pas dans Mandelbrot");
 
    ///fopen, fputc
 
    return 0;
 
 
}
mandel.c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "mandel.h"
 
#define MAX 100
#define EPS 0.0001
 
///return 1 si c est dans l'enssemble de mandelbrot, 0 si non
int is_in_mandelbrot(complex c){
    /**
     n <- 0 ///compteur de boucle
     z <- 0 /// terme courant de la suite complexe ‡ calculer
     faire
     z_prec <- z
     z <- z^2 + c
     n <- n + 1
     tant que |z| < 2 et n < MAX et |z - z_prec| > EPS
     
     si(|z| >= 2) alors return 0
     si |z - z_prec| <= EPS alors return 1
     sinon return 1
     **/
    int n = 0;
    complex z, z_prec;
    do {
        z_prec = z;
        z = add(mul(z, z), c);
        n++;
    } while (mod(z) < 2 && n < MAX && mod(sou(z, z_prec)) > EPS);
 
    if(mod(z) >= 2) return 0;
    else if(mod(sou(z, z_prec)) <= EPS) return 1;
    else return 1;
}
merci pour votre aide