Import TD_maple
This commit is contained in:
10
TD_maple/DS1/99027.tex
Normal file
10
TD_maple/DS1/99027.tex
Normal 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
9
TD_maple/DS1/99028.tex
Normal 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
13
TD_maple/DS1/99029.tex
Normal 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
13
TD_maple/DS1/99030.tex
Normal 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
23
TD_maple/DS1/99031.tex
Normal 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
10
TD_maple/DS1/99032.tex
Normal 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
19
TD_maple/DS1/99033.tex
Normal 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
32
TD_maple/DS1/99034.tex
Normal 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
BIN
TD_maple/DS1/DSmaple.pdf
Normal file
Binary file not shown.
27
TD_maple/DS1/DSmaple.tex
Normal file
27
TD_maple/DS1/DSmaple.tex
Normal 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
190
TD_maple/DS1/correction.py
Normal 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
48
TD_maple/DS1/notes.csv
Normal 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, ? , ? , ? , ? , ?
|
||||
|
||||
|
||||
|
||||
|
57
TD_maple/DS1/test.py
Normal file
57
TD_maple/DS1/test.py
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user