Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
693 views

Thème 2 : suites et séries, programmation, représentation graphique.


Documentation : tutoriel-fr sagemath programmation, listes python, duckduckgo "sagemath suites" "sagemath sequences",...

Une suite finie peut être donnée par la liste de ses valeurs. Voir la documentation sur les listes Python ou tutorial-fr programmation.

Ex.1. Construire la liste des 10 premiers carrés d'entiers impairs. Représenter la graphiquement. Donner le 5ème terme.

l=[(2*n+1)^2 for n in range(10)] #cf google "sagemath listes par compréhention" print l print l[5] #affiche le 6ème terme ! print l[4]
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361] 121 81
list_plot(l) #cf google "sagemath plot list"
#Alternative : "google sagemath point" puis point? point([(i,l[i]) for i in range(len(l))])

Ex.2. Soient k et l les listes données par

k=[3, 2, 11, 10, 11, 11, 1, 14, 5, 7, 0, 14, 7, 7, 4, 4, 7, 3, 2, 4, 7, 9, 6, 14, 17, 14, 16, 7, 4, 1, 19, 11, 19, 13, 1, 15, 0, 1, 16, 7, 1, 16, 13, 11, 0, 8, 4, 8, 14, 11] l=[9, 11, 14, 5, 19, 5, 2, 16, 12, 16, 14, 17, 14, 15, 4, 5, 4, 1, 14, 11, 11, 8, 9, 3, 10, 1, 2, 19, 5, 17, 15, 0, 17, 11, 5, 14, 3, 1, 16, 2, 5, 9, 18, 10, 0, 6, 4, 17, 12, 11]

Construire la liste sans répétition des éléments communs de k et l.

#Plusieurs réponses possibles m=[i for i in k if i in l];print m #liste avec répétition print list(set(m))#cf google "sagemath liste sans répétition" ou bien "sagemath list unique" print uniq(m)
[3, 2, 11, 10, 11, 11, 1, 14, 5, 0, 14, 4, 4, 3, 2, 4, 9, 6, 14, 17, 14, 16, 4, 1, 19, 11, 19, 1, 15, 0, 1, 16, 1, 16, 11, 0, 8, 4, 8, 14, 11] [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 19] [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 19]
#Alternative : script m=[] for i in k: if i in l and not i in m:m=m+[i] print m m.sort();print m
[3, 2, 11, 10, 1, 14, 5, 0, 4, 9, 6, 17, 16, 19, 15, 8] [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 19]

Une suite peut être donnée par une expression.

ex.3. Calculer la limite qd n+n\to+\infty de log(2n+1)log(n)\log(2n+1)-log(n). Représenter graphiqement les 100 premiers termes de la suite.

#google "sagemath limit" puis limit? limit(log(2*n+1)-log(n),n=oo)
log(19) - 2*log(3)
#Ce n'est pas correct ! Que se passe t-il ? print n var('n');limit(log(2*n+1)-log(n),n=oo)#conflit entre variable locale et globale !
9 n log(2)

Une suite peut être définie par une relation récursive.

Ex.4. Soit (un)(u_n) la suite définie par : u0=0u_0=0, u1=1u_1=1, un+2=un+1+unu_{n+2}=u_{n+1}+u_{n}. Calculer u10u_{10}. Représenter graphiquement les 100 premiers termes de log(un)\log(u_n). Conjecture sur le comportement ?


Plus généralement une fonction définie sur un ensemble muni d'une relation bien fondée peut être définie de façon récursive

Ex.5. Soit (cn,k)n,kN(c_{n,k})_{n,k\in\mathbb{N}} défini par cn,0=1c_{n,0}=1, cn,k=0c_{n,k}=0 si k>nk>n et par cn+1,k+1=cn,k+1+cn,kc_{n+1,k+1}=c_{n,k+1}+c_{n,k} pour tout n,kn,k. Calculer c10,5c_{10,5}

#méthode itérative a=0;b=1 for i in range(9): c=b;b=a+b;a=c print b
55
#dessin a=0;b=1;l=[(1,log(b))] for i in range(99): c=b;b=a+b;a=c;l=l+[(i+2,log(b))] point(l)
#On observe une progression linéaire de log(u_n) de pente ((l[99][1]-l[49][1])/50).n()
0.481211825059604
#Méthode récursive : def u(n): if n==0:return(0) elif n==1:return(1) else:return(u(n-2)+u(n-1)) print u(10)
55
#c(n,k) définition récursive def c(n,k): if k>n:return(0) elif k==0:return(1) else:return(c(n-1,k-1)+c(n-1,k)) print c(10,5) print binomial(10,5)
252 252
#définition itérative : on construit le triangle de Pascal entier sous forme de liste de listes c=[];n=10 for i in range(n+1): c=c+[[1]+[c[i-1][k]+c[i-1][k-1] for k in range(1,i+1)]+[0]] print c[i] print(c[10][5])
[1, 0] [1, 1, 0] [1, 2, 1, 0] [1, 3, 3, 1, 0] [1, 4, 6, 4, 1, 0] [1, 5, 10, 10, 5, 1, 0] [1, 6, 15, 20, 15, 6, 1, 0] [1, 7, 21, 35, 35, 21, 7, 1, 0] [1, 8, 28, 56, 70, 56, 28, 8, 1, 0] [1, 9, 36, 84, 126, 126, 84, 36, 9, 1, 0] [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0] 252

Séries

Ex.6. Calculer le 100ème terme de la série 11+n2\sum \frac{1}{1+n^2}. Ordre de grandeur ? Calculer la somme de cette série.

S=sum(1/(1+n^2) for n in range(100)) print S print S.n()
1517024186778157128796852308091605406927992714443593192519549105603832112972065524497764524650026411946559956055721211528846639270782001602613505018759605436350145357886376985973299822229153/734059038271153602151391138846042145929882964724705953756202742727630169515041415417201983798063903104233254116883755940194590005545931033017987307218746292663489155184000258256242931637125 2.06662421915141
var('n');S=sum(1/(1+n^2),n,0,oo) #cf sum? print S print S.n()
n -1/2*I*psi(I) + 1/2*I*psi(-I) 2.07667404746858
#le résultat fait intervenir le nombre I et la fonction psi (qu'on ne connaît probablement pas) #psi? #difficile d'obtenir une documentation sur l'objet I I^2
-1

Méthodes itératives pour la recherche d'un zéro ou d'un point fixe d'une fonction

Méthode itérative un+1=f(un)u_{n+1}=f(u_n) pour la recherche d'un point fixe de ff. Essayer avec la fonction f(x)=x+1f(x)=\sqrt{x+1} puis avec g(x)=x21g(x)=x^2-1. Représenter sur le graphe de la fonction les segments [(un,un),(un,un+1)][(u_n,u_n),(u_n,u_{n+1})] et [(un,un+1),(un+1,un+1)][(u_n,u_{n+1}),(u_{n+1},u_{n+1})] pour n{0..10}n\in\{0..10\}.

Programmer la recherche par dichotomie du (des ?) zéro d'une fonction, illustration graphique

Méthode de Newton (documentation ?). Illustration graphique de la méthode.

Projet : recherche du maximum d'une fonction ; applications

p=point((1,1)) p=p+point((2,2)) show(p)