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/22 13:17] – [Énoncé] villersdteaching:exos:sequences_brins_adn [2018/10/22 10:12] (Version actuelle) villersd
Ligne 12: Ligne 12:
     * 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é 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.1411384670.txt.gz
  • Dernière modification : 2014/09/22 13:17
  • de villersd