Import TD_maple

This commit is contained in:
2019-05-05 09:28:34 +02:00
parent b1c1027299
commit acd9bf5c5c
53 changed files with 2336 additions and 0 deletions

10
TD_maple/DS1/99027.tex Normal file
View File

@@ -0,0 +1,10 @@
Soit $n$ un entier naturel non nul. On appelle somme des diviseurs propres de $n$ la somme des entiers naturels $k$ \textbf{différents de $n$} divisant $n$. Par exemple la somme des diviseurs propres de $12$ est $16$ ($1+2+3+4+6$).
On dit qu'un entier $n$ est parfait si la somme de ses diviseurs propres est égale à lui-même. Par exemple $6$ est parfait.
On dit que deux entiers naturels non nuls $a$ et $b$ distincts sont des nombres amis (ou aimables ou amicaux ou amiables) si la somme des diviseurs propres de $a$ est $b$ et que la somme des diviseurs propres de $b$ est $a$. Par exemple $220$ et $284$ sont amis.
\begin{enumerate}
\item Écrire une fonction calculant et affichant tous les nombres parfaits compris entre $1$ et $10000$.
\item Écrire une fonction calculant et affichant toutes les paires nombres amicaux compris entre $1$ et $6000$. On essaiera de n'afficher qu'une fois chaque paire (par exemple on affichera le couple $(220, 284)$ mais pas le couple $(284,220)$).
\end{enumerate}

9
TD_maple/DS1/99028.tex Normal file
View File

@@ -0,0 +1,9 @@
Écrire une procédure maple médiane prenant en argument une liste $l$
et retournant \textbf{une} médiane de la liste. On rappelle qu'une
médiane d'une liste $l$ est tout nombre $x$ tel qu'au moins la moitié
des éléments de $l$ soit supérieur ou égal à $x$ et au moins la moitié
des éléments de la liste soit inférieur ou égal à $x$. Ainsi $10$,
$14$, $20$, et $10,6$ sont des médianes de la liste
\texttt{[10, 7, 42, 20]}.

13
TD_maple/DS1/99029.tex Normal file
View File

@@ -0,0 +1,13 @@
Pour tout $a\in\R$, on note $f_{a} :
\fct{[1,+\infty[}{\R}{x}{x^{4}+7 x^{3}+2 x^{2}+x-\frac{7}{x} - a }$.
Pour tout $a\in\R$,
on note $n_{a}$ le plus petit entier naturel non nul $n$ vérifiant
$f_{a}(n)\geq 0$.
\begin{enumerate}
\item Écrire une application \texttt{cherche} qui, prend en argument un réel
$a$ et retourne le plus petit entier naturel $n$ vérifiant
$f_{a}(n)\geq 0$.
\item Que vaut \texttt{cherche(42)}~?
\item Que vaut \texttt{cherche(42\^42)}~?
\end{enumerate}

13
TD_maple/DS1/99030.tex Normal file
View File

@@ -0,0 +1,13 @@
On définit la suite $u$ comme suit par $u_{0}=1$ et pour tout
$n\in\N$, $u_{n+1}=\sin u_{n}$. On peut montrer que cette suite $u$ tend
vers $0$.
\begin{enumerate}
\item Écrire une procédure \texttt{valeuru} prenant en argument un
entier naturel $n$ et retournant la valeur de $u_{n}$ (on calculera
avec des valeurs numériques approchées, on rappelle que
\texttt{evalf} calcule des valeurs approchées).
\item Écrire une procédure \texttt{cherche\_rang} prenant en
argument un réel strictement positif $\epsilon$ et retournant le
plus petit entier $n$ vérifiant $u_{n}\leq \epsilon$.
\item Que vaut \texttt{cherche\_rang(0.007)}~?
\end{enumerate}

23
TD_maple/DS1/99031.tex Normal file
View File

@@ -0,0 +1,23 @@
On définit la suite $(u_n)_n$, la suite de Syracuse, de la manière suivante (avec $N \in \N$ fixé):
\begin{eqnarray*}
u_0 & = & N //
u_{n+1} & = & \franc{u_n}{2} \mbox{ si $u_n$ est pair}//
& & 3u_n + 1 \mbox{ Si $u_n$ est impaire}
\end{eqnarray*}
La conjecture affirme que pour tout $N > 0$, il existe un $n$ tel que $u_n = 1$. Nous allons écrire quelques algorithmes pour nous rendre compte du caractère chaotique de cette suite.
\begin{itemize}
\item Écrire une procédure \texttt{syra} qui prend pour argument \texttt{N} et \texttt{n} et qui renvoie la valeur de $u_n$ avec $u_0 = N$.
\item Écrire une procédure \texttt{tempsDeVol} qui prend pour argument \texttt{N} et qui renvoie le premier $n$ tel que $u_n = 1$.
\item Tracer le résultat de cette fonction pour $N$ variant de 1 à 20. \note{Vérifier que ça ne prenne pas trop de temps!}
\item Écrire une procédure \texttt{tempsDeVolAltitude} qui prend pour argument \texttt{N} et qui renvoie le premier $n$ tel que $u_n < u_0$.
\item Écrire une procédure \texttt{tempsVolAltitudeBis} qui prend pour argument \texttt{N} et qui renvoie le nombre de fois que $u_n$ est strictement plus grand que $u_0$ avant d'atteindre pour la première fois 1.
\item Écrire une procédire \texttt{AltitudeMax} qui prend pour argument \texttt{N} et qui renvoie la valeur maximale de $(u_n)$.
\end{itemize}
\note{On peut aussi faire cet exercice avec Syracuse compressée (on divise par 2 le cas impaire)}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

10
TD_maple/DS1/99032.tex Normal file
View File

@@ -0,0 +1,10 @@
Le but de cet exercice va être de convertir un temps en $ms$ en temps ``habituel'' $(h, m, s, m)$.
\begin{itemize}
\item Écrire une procédure \texttt{FromMS} qui transforme un temps en $ms$ en un temps ``habituel''.
\item Écrire la procédure inverse \texttt{ToMS}, qui transforme un temps $(h, m, s, ms)$ en $ms$.
\end{itemize}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

19
TD_maple/DS1/99033.tex Normal file
View File

@@ -0,0 +1,19 @@
On cherche les nombres entiers, $a,b,c \in \N$ qui vérifient la relation de pythagore
\begin{eqnarray*}
a^2 + b^2 &=& c^2
\end{eqnarray*}
\begin{itemize}
\item Écrire une procédure \texttt{pythagore} qui prend comme argument \texttt{c} et qui renvoie $0$ si $c^2$ n'est pas somme de 2 carrés ou la liste des couples $(a,b)$ (avec $a<b$) tel que $a^2 + b^2 = c^2$.
\item Écire une procédure \texttt{fermat} qui fait la même chose en remplaçant 2 par 3.
\item Tester \texttt{pythagore} et \texttt{fermat} pour tout les $c$ variant de 1 à 50. Faire une conjecture sur les entiers tel que
\begin{eqnarray*}
a^3 + b^3 = c^3
\end{eqnarray*}
\end{itemize}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

32
TD_maple/DS1/99034.tex Normal file
View File

@@ -0,0 +1,32 @@
Si les biologistes savaient faire des mesures, on le saurait. En attendant, leurs mesures présentent une grande imprecision. Pour dégager des profils exploitables, ils peuvent tricher en lissant les courbes.
Aidons les!
Voici les relevés de la fréquence cardiaque d'un rat en attente d'un choc éléctrique.
\begin{verbatim}
L = [ 101.04 104.4 123 128.58 153.5 147.94 168.92 176.7 181.25
182.84 166 166.95 165.87 171.69 145.32 136.96 130.18 133.3
99.3 81.98]
\end{verbatim}
\begin{itemize}
\item Tracez la courbe
\end{itemize}
Une technique de lissage consiste à considerer que chaque point est la moyenne de trois points consécutifs : lui-même, le précédent et le suivant.
\begin{itemize}
\item Proposez une solution pour les points extremaux.
\item Écrire une procédure \texttt{lissage} qui prend en argument une liste et qui renvoie la courbe correspondante lissée.
\item L'appliquer au relevé de la fréquence cardiaque du rat.
\item On se propose d'augmenter le fenêtre de lissage. Pour cela la moyenne sera faite des deux précedents, de lui-même et des deux suivants. Écrire la procédure \texttt{lissageBis} correspondante.
\end{itemize}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

BIN
TD_maple/DS1/DSmaple.pdf Normal file

Binary file not shown.

27
TD_maple/DS1/DSmaple.tex Normal file
View File

@@ -0,0 +1,27 @@
\documentclass[10pt,a4paper]{article}
\usepackage{/media/documents/Cours/Prof/TD_maple/2012_2013/style}
% Title Page
\title{DS d'informatique}
\author{}
\date{}
\begin{document}
\maketitle
\thispagestyle{fancy}
\begin{Exo}(Lissage de courbe)\\
\input{99034}
\end{Exo}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master"
%%% End:

190
TD_maple/DS1/correction.py Normal file
View File

@@ -0,0 +1,190 @@
#!/usr/bin/env python
#-*- coding:utf8-*-
# ------------------------------
# Imports
# ------------------------------
from math import sqrt, sin
# ------------------------------
# Fonctions
# ------------------------------
# --------------------------
# Exo 1
#
def divProp(n):
""" divProp
Renvoie les diviseurs propres de n
"""
divP = []
for i in range(int(n/2)):
if not (n%(i+1)):
divP += [(i+1)]
return divP
def divPropBis(n):
""" divProp
Renvoie les diviseurs propres de n
a
"""
divP = []
for i in range(int(sqrt(n))):
if not (n%(i+1)):
divP += [(i+1), (int(n/(i+1)))]
return divP
def SumDivProp(n):
""" SumDivProp
Retourne la somme des diviseurs propres
"""
return sum(divProp(n))
def nbrParfait(n):
""" nbrParfait
Retourne les nombres parfaits inferieur à n
"""
nbrParf = []
for i in range(n):
if SumDivProp((i+1)) == (i+1):
nbrParf += [(i+1)]
return nbrParf
def nbrAmis(n):
""" nbrAmis
Retourne les nombres amis inferieurs à n
"""
L = set()
for i in range(n):
I = SumDivProp((i+1))
if ((i+1) == SumDivProp(I)):
L = L.union({(max((i+1),I), min((i+1),I))})
return L
# --------------------------
# Exo 2
#
def calf(x, a):
""" calf
Return value of f at x
"""
val = x**4 + 7*x**3 + 2*x**2 + x - 7/x - a
return val
def cherche0(a, pas, start = 1):
""" cherche0
Cherche le n tel que la fonction x^4 + 7x^3 + 2x^2 + x - 7 - 1/x - a passe de negatif à positif
@param a: le parametre
@param pas: la puissance de 10 pour les pas
@param start: à partir d'ou commencer la recherche
"""
# print("New")
# print("Pas: ", pas)
step = calf(start, a)
i = 0
while step < 0:
i += 1
step = calf((start + 10**pas * i), a)
# print(step)
# print(calf((start + 10**pas * (i-1)), a))
# print('i: ', str(i))
if pas == 0:
return i
else:
return 10**pas * (i-1) + cherche0(a, (pas-1), start + 10**pas * (i-1))
# --------------------------
# Exo 3
#
def evalu(n):
""" evalu
Fonction récurcive qui calcul u_n définie par u_n = sin (u_n{n-1}) et u_0 = 1
"""
if n == 0:
return 1
else:
return sin(evalu(n-1))
def cherche_rang(e):
""" cherche_rang
Determine le n minimal pour que u_n < e
"""
u = 1
i = 0
while (u > e):
u = sin(u)
i += 1
return i
# ------------------------------
# Bloc principal
# ------------------------------
if __name__ == '__main__':
#n = 21236789
#print(divProp(100))
#print(divPropBis(n))
#print(SumDivProp(30))
#print(nbrParfait(10000))
#print(nbrAmis(6000))
#print(cherche0(42, 1, 1))
print(cherche0(42**42, 17, 1))
a = 42**42
# n = cherche0(a, 17, 1)
# print(n)
# print(calf(n-1,a))
# print(calf(n,a))
# for i in range(10):
# print(n+i)
# print(calf(n+i,a))
n = 110692335104026962
print(n)
print(calf(n-5,a))
print(calf(n-1,a))
print(calf(n,a))
print(calf(n+1,a))
#print(evalu(1))
#print(cherche_rang(0.007))
# ------------------------------
# Fin du programme
# ------------------------------
# -----------------------------
# Reglages pour 'vim'
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
# cursor: 16 del

48
TD_maple/DS1/notes.csv Normal file
View File

@@ -0,0 +1,48 @@
Nom, Exo1, Exo2, Exo3, Exo4, Exo5
Pan Shnegxiong, 5 , 0 , 0 , 0 , 0
Harvatopoulos Andreas, 1 , 0 , 0 , 1 , 0
Azzarone Alexandre, 2 , 0 , 0 , 0 , 0
Cattelle Thomas, 7 , 0 , 7 , 3 , 0
Douma Nejmenddine, 8 , 8 , 7 , 8 , 0
Bennaiem Mohammed, 7 , 0 , 0 , 8 , 0
Mandica Nicalas, 3 , 0 , 0 , 8 , 0
Rageot Simon, 2 , 0 , 5 , 10 , 0
Quercia Bruno, 10 , 7 , 7 , 8 , 0
Vaudaine Remi, 5 , 0 , 0 , 1 , 0
Mathias Hugo, 5 , 0 , 7 , 7 , 0
Verrier Sacha, 3 , 0 , 0 , 7 , 0
Baraillon Joris, 1 , 0 , 7 , 7 , 0
Joseph Elio, 8 , 10 , 7 , 6 , 0
Besiers Faustin, 3 , 0 , 0 , 0 , 0
Perrin Paul, 0 , 0 , 0 , 7 , 0
Scozzari Adrien, 8 , 10 , 7 , 10 , 0
Bebon Ludovic, 5 , 10 , 7 , 9 , 0
Boyadjian Antoine, 8 , 7 , 5 , 0 , 0
Gross Aurore, 4 , 0 , 6 , 1 , 0
Lecomte Alice, 8 , 0 , 0 , 0 , 0
Rouland Honore, 6 , 0 , 6 , 9 , 0
Blondot Victor, 0 , 0 , 7 , 7 , 0
Belcadi Amine, 2 , 0 , 0 , 1 , 0
Cocchi Elian, 7 , 4 , 7 , 10 , 0
Michon Lucie, 2 , 10 , 7 , 7 , 0
Vaile Nicalas, 2 , 0 , 4 , 7 , 0
Marin Julie, 4 , 0 , 6 , 0 , 0
Berat Juline, 2 , 0 , 0 , 0 , 0
Cremy Julien, 4 , 0 , 0 , 6 , 0
Commune Laurent, 6 , 0 , 7 , 2 , 0
Mottal Gabin, 1 , 5 , 5 , 2 , 0
Matray Pierre, 1 , 0 , 7 , 1 , 0
Walter Clement, 4 , 0 , 7 , 7 , 0
Berne Aurore, 1 , 0 , 0 , 2 , 0
Sebbagh Simon, 3 , 5 , 7 , 8 , 0
Leonet Cindy, 6 , 0 , 0 , 2 , 0
Vernot Rochey Charlie, 0 , 0 , 7 , 5 , 0
Meyet Tiphaine, 0 , 0 , 6 , 5 , 0
Groleaz Lucas, 1 , 0 , 7 , 10 , 0
Neveu Remy, 0 , 0 , 5 , 2 , 0
Roiron Coline, 2 , 0 , 7 , 4 , 0
Bayon Sebastien, 6 , 10 , 10 , 2 , 2
Cindy Planys, ? , ? , ? , ? , ?
1 Nom Exo1 Exo2 Exo3 Exo4 Exo5
2 Pan Shnegxiong 5 0 0 0 0
3 Harvatopoulos Andreas 1 0 0 1 0
4 Azzarone Alexandre 2 0 0 0 0
5 Cattelle Thomas 7 0 7 3 0
6 Douma Nejmenddine 8 8 7 8 0
7 Bennaiem Mohammed 7 0 0 8 0
8 Mandica Nicalas 3 0 0 8 0
9 Rageot Simon 2 0 5 10 0
10 Quercia Bruno 10 7 7 8 0
11 Vaudaine Remi 5 0 0 1 0
12 Mathias Hugo 5 0 7 7 0
13 Verrier Sacha 3 0 0 7 0
14 Baraillon Joris 1 0 7 7 0
15 Joseph Elio 8 10 7 6 0
16 Besiers Faustin 3 0 0 0 0
17 Perrin Paul 0 0 0 7 0
18 Scozzari Adrien 8 10 7 10 0
19 Bebon Ludovic 5 10 7 9 0
20 Boyadjian Antoine 8 7 5 0 0
21 Gross Aurore 4 0 6 1 0
22 Lecomte Alice 8 0 0 0 0
23 Rouland Honore 6 0 6 9 0
24 Blondot Victor 0 0 7 7 0
25 Belcadi Amine 2 0 0 1 0
26 Cocchi Elian 7 4 7 10 0
27 Michon Lucie 2 10 7 7 0
28 Vaile Nicalas 2 0 4 7 0
29 Marin Julie 4 0 6 0 0
30 Berat Juline 2 0 0 0 0
31 Cremy Julien 4 0 0 6 0
32 Commune Laurent 6 0 7 2 0
33 Mottal Gabin 1 5 5 2 0
34 Matray Pierre 1 0 7 1 0
35 Walter Clement 4 0 7 7 0
36 Berne Aurore 1 0 0 2 0
37 Sebbagh Simon 3 5 7 8 0
38 Leonet Cindy 6 0 0 2 0
39 Vernot Rochey Charlie 0 0 7 5 0
40 Meyet Tiphaine 0 0 6 5 0
41 Groleaz Lucas 1 0 7 10 0
42 Neveu Remy 0 0 5 2 0
43 Roiron Coline 2 0 7 4 0
44 Bayon Sebastien 6 10 10 2 2
45 Cindy Planys ? ? ? ? ?

57
TD_maple/DS1/test.py Normal file
View File

@@ -0,0 +1,57 @@
#!/usr/bin/env python
#-*- coding:utf8-*-
# ------------------------------
# Imports
# ------------------------------
import matplotlib.pyplot as plt
import numpy as np
# ------------------------------
# Classes
# ------------------------------
# ------------------------------
# Fonctions
# ------------------------------
def lissage(L):
""" lissage
"""
D = [0 for l in L]
D[0] = L[0]
for i in range(len(L) - 2):
D[i+1] = sum(L[i:i+3])/3
D[-1] = L[-1]
return D
# ------------------------------
# Bloc principal
# ------------------------------
if __name__ == '__main__':
X = np.linspace(0,1, 20)
A = -320 * X * (X-1) + 25*np.random.random(20)
L = [float(int(A[i]*100))/100 for i in range(len(A))] + np.array([80]*20)
print L
# L = [ 83.68, 103.54, 119.28, 124.75, 136.37, 142.3, 158.33, 157.94, 162.86, 168.11, 162.01, 167.05, 164,149.95, 149.03, 142.29, 124.51, 111.61, 98.7, 87.23]
D = lissage(L)
plt.plot(X,L)
plt.plot(X,D)
plt.show()
# ------------------------------
# Fin du programme
# ------------------------------
# -----------------------------
# Reglages pour 'vim'
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
# cursor: 16 del