Pouknouki

Untitled

Dec 8th, 2016
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.01 KB | None | 0 0
  1. #Exercice 1
  2.  
  3. def premiereRecurrence(n):
  4.     return 2 if n == 0 else 4 * premiereRecurrence(n - 1) - 1
  5.  
  6. def secondeRecurrence(n):
  7.     return 4 if n == 1 else (n + secondeRecurrence(n - 1)) ** (1 / 2)
  8.    
  9. # Complexité du premier programme O(2^n)
  10. # Complexité du nouveau programme : O(n)
  11. def w(n):
  12.     if n == 0:
  13.         return 2
  14.     else:
  15.         w_ = w(n - 1)
  16.         return 0.5 * (w_ + 3 / w_)
  17.        
  18. print(w(100), 3 ** (1/2))
  19.  
  20. # Exercice 2
  21.  
  22. def pgcd(n, m):
  23.     #Cas de base
  24.     if n == 0 or m == 0:
  25.         return max(n, m)
  26.     if n == m:
  27.         return n
  28.     #Appels récursifs
  29.     if n > m:
  30.         return pgcd(n - m, m)
  31.     else:
  32.         return pgcd(m - n, n)
  33.        
  34. print(pgcd(6, 12))
  35.  
  36. # EXERCICE 2
  37.  
  38. # EXERCICE 3
  39.  
  40. from sympy import *
  41.  
  42. def fibo(n):
  43.     def aux(n):
  44.         A = Matrix([[1, 1], [1, 0]])
  45.         if n == 1:
  46.             return A
  47.         if n == 0:
  48.             return eye(2)
  49.         else:
  50.             if n % 2 == 0:
  51.                 return aux(n / 2) * aux(n / 2)
  52.             else:
  53.                 return aux((n - 1) / 2) * aux((n - 1) / 2) * A
  54.  
  55.     F0 = Matrix([[1], [0]])
  56.     return (aux(n) * F0)[0]
  57.    
  58. print(fibo(100))
  59.  
  60. # EXERCICE 4
  61.  
  62. def binom(n, p):
  63.     if n <= 0 or p <= 0 or p >= n:
  64.         return 1
  65.     return n / p * binom(n - 1, p - 1)
  66.    
  67. def binom2(n, p):
  68.     if n <= 0 or p <= 0 or p >= n:
  69.         return 1
  70.     return binom(n - 1, p) + binom(n - 1, p - 1)
  71.  
  72. # Complexité en n : O(2^n)
  73. # Si p est grand, le calcul risque d'être long.
  74.  
  75. n = 100
  76. triangle = [[-1 for i in range(n + 1)] for j in range(n + 1)]
  77.  
  78. def binomPascal(n, p):
  79.     if p == 0 or p == n:
  80.         triangle[n][p] == 1
  81.         return 1
  82.     assert n >= p, "n doit être >= p " + str(n) + " " + str(p)
  83.     if triangle[n][p] == -1:
  84.         triangle[n][p] = binomPascal(n - 1, p - 1) + binomPascal(n - 1, p)
  85.     return triangle[n][p]
  86.  
  87. def triangleGen(n):
  88.     for p in range(n + 1):
  89.         binomPascal(n, p)
  90. #
  91. # print(binomPascal(n, 50))
  92. # triangleGen(n)
  93. # print(triangle)
  94.  
  95. # EXERCICE 5
  96. import sys
  97. sys.setrecursionlimit = 9999
  98. def phiDeb(i, j):
  99.     return phiDeb(i - 1, j) + phiDeb(i, j - 1)
  100. # print(phiDeb(15, 10))
  101.  
  102. valeurs_chemins = [[1 if i == 0 or j == 0 else 0 for i in range(20)] for j in range(20)]
  103. def phi(i, j):
  104.     if valeurs_chemins[i][j] == 0:
  105.         valeurs_chemins[i][j] = phi(i - 1, j) + phi(i, j - 1)
  106.     return valeurs_chemins[i][j]
  107.    
  108. print(phi(15, 10))
  109.  
  110. # EXERCICE 6
  111.  
  112. npsi = 1001
  113. valeurspsi = [[-1 for i in range(npsi)] for j in range(npsi)]
  114.  
  115. def psi(n, m):
  116.     if valeurspsi[n][m] == -1:
  117.         if n == 0 and m == 0:
  118.             valeurspsi[n][m] = 1
  119.         elif m < 0:
  120.             valeurspsi[n][m] = 0
  121.         elif m == 0 and n > 0:
  122.             valeurspsi[n][m] = 0
  123.         elif n == 0 and m > 0:
  124.             valeurspsi[n][m] = 1
  125.         elif n > m:
  126.             valeurspsi[n][m] = psi(n - m, m) + psi(n, m - 1)
  127.         elif
  128.         return valeurspsi[n][m]
  129.     else:
  130.         return valeurspsi[n][m]
  131.        
  132. print(psi(1000, 1000))
Advertisement
Add Comment
Please, Sign In to add comment