# -*- coding: utf-8 -*-
"""
Created on Wed Sep 30 23:32:12 2020

@author: utilisateur
"""

import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

def g(x,r):
    return (r+1)*x*(1-x)
    
def suite(r, u0, N):
    u = np.zeros(N)
    u[0] = u0
    for n in range(N-1):
        u[n+1] = g(u[n],r)
    plt.figure()
    plt.plot(np.arange(N),u,'.-')
    plt.ylim(0,1)
    plt.xlabel(r'$n$')
    plt.ylabel(r'$u_n$')
    
def logistique(r, u0, N):
    plt.figure()
    t = np.linspace(0,1,200)
    plt.plot(t, g(t,r))
    plt.plot(t,t,'r')
    u = np.zeros(N)
    x = np.zeros(2*N-1)
    y = np.zeros(2*N-1)
    u[0] = u0
    x[0] = u0
    for n in range(N-1):
        temp = g(u[n],r)
        u[n+1] = temp
        y[2*n] = temp
        y[2*n+1] = temp
        x[2*n+1] = temp
        x[2*n+2] = temp
    plt.plot(x[:-1],y[:-1],'black')

r = 1.8
u0 = 0.9
N = 30
suite(r, u0, N)
logistique(r, u0, N)
        
def diagramme(rmin, rmax, rpas, Nmin, Nmax, u0):
    u = np.zeros(Nmax)
    N = Nmax - Nmin
    u[0] = u0
    plt.figure()
    for r in np.arange(rmin, rmax + rpas, rpas):
        for n in range(Nmax-1):
            u[n+1] = g(u[n],r)
        plt.plot(r*np.ones(N) , u[Nmin:Nmax], marker=',', linestyle='')
    plt.xlabel(r'$r$')
    

rpas = 0.001
rmin = 1
rmax = 3
Nmin = 100
Nmax = 200 
u0 =0.9  
diagramme(rmin, rmax, rpas, Nmin, Nmax, u0)
#plt.savefig('suiteRec.png', dpi=300)
