teaching:exos:sequences_brins_adn

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
teaching:exos:sequences_brins_adn [2014/09/17 12:43] villersdteaching:exos:sequences_brins_adn [2018/10/22 10:12] (Version actuelle) villersd
Ligne 11: Ligne 11:
     * Avec 3 A, 3 C, 3 G et 3 T     * Avec 3 A, 3 C, 3 G et 3 T
     * Avec i A, i C, i G et i T (i étant grand)     * Avec i A, i C, i G et i T (i étant grand)
-  * Si on considère une synthèse artificielle d'un brin composés de n bases issue d'un grand réservoir comprenant un nombre équivalent de chacune des bases, quel est le nombre de brins possibles comprenant 4 bases, 8 bases, 12 bases, 4*i bases ?+  * Si on considère une synthèse artificielle d'un brin composé de n bases issue d'un grand réservoir comprenant un nombre équivalent de chacune des bases, quel est le nombre de brins possibles comprenant 4 bases, 8 bases, 12 bases, 4*i bases ? 
 + 
 +===== Programme Python ===== 
 +<code python ADN-combinatoire-01.py> 
 +#!/usr/bin/env python 
 +# -*- coding: UTF-8 -*- 
 +""" 
 +Petit programme destiné à calculer des nombres de séquences ADN possibles 
 +combien de brins différents est-il possible d'obtenir : 
 +    Avec 1 A, 1 C, 1 G et 1 T 
 +    Avec 2 A, 2 C, 2 G et 2 T 
 +    Avec 3 A, 3 C, 3 G et 3 T 
 +    Avec i A, i C, i G et i T (i étant grand) 
 +Variante : Si on considère une synthèse artificielle d'un brin composé 
 +de n bases issue d'un grand réservoir comprenant un nombre équivalent de 
 +chacune des bases, quel est le nombre de brins possibles comprenant 
 +4 bases, 8 bases, 12 bases, 4*i bases ? 
 +Comparaisons de 2 variantes pour des petits nombres et en utilisant 
 +la formule de Striling pour des grands nombres 
 +""" 
 +from math import * 
 +def logfactstir(j): 
 +    # approximation de Stirling pour le logarithme de la factorielle 
 +     
 + return j*log(j) - j + log(2.*pi*j)/2. 
 + 
 + 
 +n=101 
 +# petits nombres 
 +for i in range(1,n): 
 +    print(i,factorial(4*i)/factorial(i)**4, 4**(4*i)) 
 + 
 +# petits nombres, en log 
 +for i in range(1,n): 
 +    print(i,log(factorial(4*i)/factorial(i)**4), log(4**(4*i))) 
 + 
 +# grands nombres 
 +# calcul suivant la formule de Stirling (http://fr.wikipedia.org/wiki/Formule_de_Stirling) 
 +# formule de Stirling : ln(j!) ~= j ln(j) - j + 1/2 ln(2πj) 
 +# approximation fréquente en thermodynb : ln(j!) ~= j ln(j) - j 
 +print(pi) 
 +for i in range(100,100*n,100): 
 +    print(i,logfactstir(4*i)-4.*logfactstir(i), 4*i*log(4)) 
 + 
 +# très grands nombres 
 +print(pi) 
 +for i in range(10000,10000*n,10000): 
 +    print(i,logfactstir(4*i)-4.*logfactstir(i), 4*i*log(4)) 
 +</code>
  • teaching/exos/sequences_brins_adn.1410950605.txt.gz
  • Dernière modification : 2014/09/17 12:43
  • de villersd