#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 15 21:20:31 2024

@author: matthieu
"""

#%%sujet 1
import numpy.linalg as la
import numpy as np
def K(n):
    M=np.zeros([n+1,n+1])
    for i in range(0,n): # attention décalage
        M[i][i+1]=i+1

    for j in range(0,n):
        M[j+1][j]=-n-1+j+1
    return M

for n in range(1,11):
    print(la.eigvals(K(n)))
    
#%% Sujet 3
##
import numpy as np
import numpy.linalg as la
import matplotlib.pyplot as plt
A=np.array([[2,1,1],[1,2,1],[0,0,3]])
print(la.eig(A))
P=np.array([[1,0,1],[1,0,-1],[0,1,0]])
Pi=la.inv(P)           
a=0
b=1
Npas =100
x=np.linspace(a,b,Npas)
y=np.exp(3*x)
plt.plot(x,y,color='goldenrod')

##
#% sujet 4
import numpy.random as rd



def expo(lam):
    return -np.log(rd.random())/lam
def mini(lam,mu):
    return min(expo(lam),expo(mu))

def simulation(N):
    nbC2,nbC3=0,0
    for i in range(N):
        X1,X3=expo(1),expo(1)
        X2,X4=expo(2),expo(2)
        if X1>=X2 and X3>=X2:
            nbC2+=1
        if X2>=X3 and X4>=X3:
            nbC3+=1
    return nbC2/N,nbC3/N
        
##
#%% sujet 5
import random as rd
def binom(n,p):
    NbSucces=0
    for i in range(n):
        if rd.random()<p:
            NbSucces+=1
    return NbSucces

def Y(n):
    R=[]
    k=1
    for i in range(n):
        k=binom(3, k/3)
        R.append(k)
    return R
def EsperanceY(n,N):
    R=np.zeros(n)
    k=1
    for  e in range(N):
        k=1
        for i in range(n):
            k=binom(3, k/3)
            R[i]+=k
    return R/N


