<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Programme_optimis%C3%A9</id>
	<title>Programme optimisé - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Programme_optimis%C3%A9"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Programme_optimis%C3%A9&amp;action=history"/>
	<updated>2026-05-21T06:20:48Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Programme_optimis%C3%A9&amp;diff=13225&amp;oldid=prev</id>
		<title>Andrien Montmayeur : Page créée avec « &lt;pre&gt; import datetime import pandas as pd import numpy as np from random import randint from time import time  import plotly.offline as pyo import plotly.express as px  py... »</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Programme_optimis%C3%A9&amp;diff=13225&amp;oldid=prev"/>
		<updated>2021-05-12T13:52:51Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;pre&amp;gt; import datetime import pandas as pd import numpy as np from random import randint from time import time  import plotly.offline as pyo import plotly.express as px  py... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
import datetime&lt;br /&gt;
import pandas as pd&lt;br /&gt;
import numpy as np&lt;br /&gt;
from random import randint&lt;br /&gt;
from time import time&lt;br /&gt;
&lt;br /&gt;
import plotly.offline as pyo&lt;br /&gt;
import plotly.express as px&lt;br /&gt;
&lt;br /&gt;
pyo.init_notebook_mode()&lt;br /&gt;
&lt;br /&gt;
import cufflinks as cf&lt;br /&gt;
cf.go_offline()&lt;br /&gt;
#import cmath&lt;br /&gt;
from math import log&lt;br /&gt;
&lt;br /&gt;
def intervalle(min, max, nbInter):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Renvoie des tableaux contenant des valeurs pour x et y&lt;br /&gt;
    En entrée : min et max, les limites de l&amp;#039;espace et nbInter, le nombre de découpages voulus sur l&amp;#039;intervalle min-max&lt;br /&gt;
    En sortie : deux tableaux, tabx et taby, contenant les différentes valeurs de x et y selon le découpage&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    inter = (max-min)/(nbInter-1)&lt;br /&gt;
    tab = [min]*(nbInter)&lt;br /&gt;
    for i in range (0,nbInter):&lt;br /&gt;
        tab[i] = min + (inter*i)&lt;br /&gt;
    return tab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def periodicity(précision, x,y,max_iteration):&lt;br /&gt;
    xold = 0&lt;br /&gt;
    yold = 0&lt;br /&gt;
    period = 0&lt;br /&gt;
    i = 0&lt;br /&gt;
    while (x*x + y*y &amp;lt;= 2*2 and i &amp;lt; max_iteration) :&lt;br /&gt;
        xtemp = x*x -y*y + x&lt;br /&gt;
        y = 2*x*x +y&lt;br /&gt;
        x = xtemp&lt;br /&gt;
        if abs(x-xold) &amp;lt; précision and abs(y-yold) &amp;lt; précision:&lt;br /&gt;
            i = max_iteration&lt;br /&gt;
        period += 1&lt;br /&gt;
        if period &amp;gt; 20 :&lt;br /&gt;
            period = 0&lt;br /&gt;
            xold = x&lt;br /&gt;
            yold = y&lt;br /&gt;
        i += 1&lt;br /&gt;
    return i&lt;br /&gt;
&lt;br /&gt;
def Mandelbrot(x,y,nbIteration,noOpti):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Indique si un nombre complexe fait partie de l&amp;#039;ensemble de Mandelbrot ou non&lt;br /&gt;
    En entrée : x et y, deux coordonées, nbIteration, le nombre de répétitions de la formule et ModuleMax, le module à ne pas dépasser&lt;br /&gt;
    En sortie : un entier, indiquant si le complexe appartient à l&amp;#039;ensemble ou non &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    nombre = complex(x,y)&lt;br /&gt;
    z= nombre&lt;br /&gt;
    c=nombre&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    x0 =x&lt;br /&gt;
    y0 =y&lt;br /&gt;
    x2 = 0&lt;br /&gt;
    y2 = 0&lt;br /&gt;
    &lt;br /&gt;
    i = 1&lt;br /&gt;
    appartient = True&lt;br /&gt;
    while i&amp;lt;=nbIteration and appartient == True:&lt;br /&gt;
        &lt;br /&gt;
        if noOpti == 1:&lt;br /&gt;
            if abs(z.real)&amp;gt;2 or abs(z.imag)&amp;gt;2 :&lt;br /&gt;
                appartient = False&lt;br /&gt;
            z = z*z+c&lt;br /&gt;
        if noOpti == 2:&lt;br /&gt;
            if x2+y2 &amp;gt;= 4 :&lt;br /&gt;
                appartient = False&lt;br /&gt;
            y = (x+x)*y+y0&lt;br /&gt;
            x = x2-y2+x0&lt;br /&gt;
            x2 = x*x&lt;br /&gt;
            y2 = y*y&lt;br /&gt;
        i += 1&lt;br /&gt;
    if appartient==True :&lt;br /&gt;
        return 0&lt;br /&gt;
    else :&lt;br /&gt;
        return log(log(i))&lt;br /&gt;
&lt;br /&gt;
def mandelbrot_boundary_tracing(tabx, taby, max_iter,noOpti):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Permet de réaliser l&amp;#039;ensemble de Mandelbrot en utilisant les frontières&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    grid_size = len(tabx)&lt;br /&gt;
    Todo = set()&lt;br /&gt;
    for i in range(grid_size):&lt;br /&gt;
        Todo.add((i, 0))&lt;br /&gt;
        Todo.add((i, grid_size-1))&lt;br /&gt;
    for i in range(grid_size):&lt;br /&gt;
        Todo.add((0, i))&lt;br /&gt;
        Todo.add((grid_size-1, i))&lt;br /&gt;
&lt;br /&gt;
    Mem = [[-1 for _ in range(grid_size)] for _ in range(grid_size)]&lt;br /&gt;
    Done = [[False for _ in range(grid_size)] for _ in range(grid_size)]&lt;br /&gt;
&lt;br /&gt;
    def value(i, j):&lt;br /&gt;
        n = Mem[j][i]&lt;br /&gt;
        if n &amp;gt;= 0:&lt;br /&gt;
            return n&lt;br /&gt;
        n = compute(i, j)&lt;br /&gt;
        Mem[j][i] = n&lt;br /&gt;
        return n&lt;br /&gt;
    &lt;br /&gt;
    def compute(i, j):&lt;br /&gt;
        n = Mandelbrot(tabx[i], taby[j], max_iter,noOpti)&lt;br /&gt;
        #print(i,j)&lt;br /&gt;
        return n&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    while Todo:&lt;br /&gt;
        i, j = Todo.pop()&lt;br /&gt;
        c = value(i, j)&lt;br /&gt;
        Done[i][j] = True&lt;br /&gt;
&lt;br /&gt;
        if i &amp;gt; 0:&lt;br /&gt;
            cc = value(i-1, j)&lt;br /&gt;
            if cc != c and not Done[i-1][j]:&lt;br /&gt;
                Todo.add((i-1, j))&lt;br /&gt;
&lt;br /&gt;
        if i &amp;lt; grid_size-1:&lt;br /&gt;
            cc = value(i+1, j)&lt;br /&gt;
            if cc != c and not Done[i+1][j]:&lt;br /&gt;
                Todo.add((i+1, j))&lt;br /&gt;
&lt;br /&gt;
        if j &amp;gt; 0:&lt;br /&gt;
            cc = value(i, j-1)&lt;br /&gt;
            if cc != c and not Done[i][j-1]:&lt;br /&gt;
                Todo.add((i, j-1))&lt;br /&gt;
&lt;br /&gt;
        if j &amp;lt; grid_size-1:&lt;br /&gt;
            cc = value(i, j+1)&lt;br /&gt;
            if cc != c and not Done[i][j+1]:&lt;br /&gt;
                Todo.add((i, j+1))&lt;br /&gt;
&lt;br /&gt;
        if i &amp;gt; 0 and j &amp;gt; 0:&lt;br /&gt;
            cc = value(i-1, j-1)&lt;br /&gt;
            if cc != c and not Done[i-1][j-1]:&lt;br /&gt;
                Todo.add((i-1, j-1))&lt;br /&gt;
&lt;br /&gt;
        if i &amp;lt; grid_size-1 and j &amp;gt; 0:&lt;br /&gt;
            cc = value(i+1, j-1)&lt;br /&gt;
            if cc != c and not Done[i+1][j-1]:&lt;br /&gt;
                Todo.add((i+1, j-1))&lt;br /&gt;
&lt;br /&gt;
        if i &amp;gt; 0 and j &amp;lt; grid_size-1:&lt;br /&gt;
            cc = value(i-1, j+1)&lt;br /&gt;
            if cc != c and not Done[i-1][j+1]:&lt;br /&gt;
                Todo.add((i-1, j+1))&lt;br /&gt;
&lt;br /&gt;
        if i &amp;lt; grid_size-1 and j &amp;lt; grid_size-1:&lt;br /&gt;
            cc = value(i+1, j+1)&lt;br /&gt;
            if cc != c and not Done[i+1][j+1]:&lt;br /&gt;
                Todo.add((i+1, j+1))&lt;br /&gt;
    return Mem&lt;br /&gt;
&lt;br /&gt;
def ensembleMandelbrot(Xmin,Xmax,Ymin,Ymax,largeur,hauteur,nbIteration,typeCalcul,noOpti=0,précision=0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Retourne le tableau permettant d&amp;#039;afficher l&amp;#039;ensemble de Mandelbrot&lt;br /&gt;
    En entrée : min et max, les bornes, nbInter, le nombre de découpages voulus, nbIteration, le nombre de répétitions et ModuleMax, le module à ne pas dépasser&lt;br /&gt;
    En sortie : trois tableaux, le tableau des x, le tableau des y, et le tableau d&amp;#039;affichage de l&amp;#039;ensemble de Mandelbrot&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tabx = intervalle(Xmin,Xmax,largeur)&lt;br /&gt;
    taby = intervalle(Ymin,Ymax,hauteur)&lt;br /&gt;
    if typeCalcul == &amp;quot;boundary&amp;quot;:&lt;br /&gt;
        img_nb1 = mandelbrot_boundary_tracing(tabx,taby,nbIteration,noOpti)&lt;br /&gt;
    if typeCalcul == &amp;quot;classic&amp;quot;:&lt;br /&gt;
        img_nb1 = [[0]*len(taby) for i in range (len(tabx))]&lt;br /&gt;
        for j in range (len(taby)//2):&lt;br /&gt;
            for i in range (len(tabx)):&lt;br /&gt;
                img_nb1[-1-j][i] = Mandelbrot(tabx[i],taby[j],nbIteration,noOpti)&lt;br /&gt;
                img_nb1[j][i] = img_nb1[-1-j][i]&lt;br /&gt;
    if typeCalcul == &amp;quot;periodicity&amp;quot;:&lt;br /&gt;
        img_nb1 = [[0]*len(taby) for i in range (len(tabx))]&lt;br /&gt;
        for j in range (len(taby)//2):&lt;br /&gt;
            for i in range (len(tabx)):&lt;br /&gt;
                img_nb1[-1-j][i] = periodicity(précision,i,j,nbIteration)&lt;br /&gt;
                img_nb1[j][i] = img_nb1[-1-j][i]&lt;br /&gt;
    return (tabx, taby, img_nb1)&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
def afficheMandelbrot(tab,tab2,tab3):&lt;br /&gt;
    fig = px.imshow(tab,origin=&amp;quot;lower&amp;quot;,color_continuous_scale=&amp;quot;edge&amp;quot;)#regarder min max&lt;br /&gt;
    fig.show()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrien Montmayeur</name></author>
	</entry>
</feed>