Source Latex: TP de mathématiques en Algorithmique et programmation: Terminale, BTS, Post-Bac


Fichier
Type: TP
File type: Latex, tex (source)
Télécharger le document pdf compilé pdficon
Description
TP sur les fractales - Fractales de Mandelbrot, Julia et Serpinski
Niveau
Algorithmique et programmation: Terminale, BTS, Post-Bac
Table des matières
  • Introduction aux fractales
  • Fractale de Mandelbrot
  • Fractale de Julia
  • Fractale, ou triangle, de Serpinski
Mots clé
fractales, Matlab, programmation, Mandelbrot, Julia, Serpinski
Voir aussi:

Documentation sur LaTeX
lien vers la documentation Latex
Source LaTex icone

Source Latex

\documentclass[12pt]{article}
%\usepackage{french}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{a4wide}
\usepackage{graphicx}
\usepackage{epsf}
\usepackage{pst-all}
\usepackage{ifthen}
\usepackage{calc}
\usepackage{pst-all}

\usepackage{hyperref}
\hypersetup{
    pdfauthor={Yoann Morel},
    pdfsubject={Matlab},
    pdftitle={Initiation et travaux pratiques en Matlab},
    pdfkeywords={fractales, Mandelbrot, julia, serpinski, Matlab,
      simulation, programmation, modélisation, mathématiques}
}
\hypersetup{
    colorlinks = true,
    linkcolor = red,
    anchorcolor = red,
    citecolor = blue,
    filecolor = red,
    urlcolor = red
}
\voffset=-1cm
% Raccourcis diverses:
\newcommand{\nwc}{\newcommand}
\nwc{\dsp}{\displaystyle}
\nwc{\bge}{\begin{equation}}\nwc{\ene}{\end{equation}}
\nwc{\bgar}{\begin{array}}\nwc{\enar}{\end{array}}
\nwc{\bgit}{\begin{itemize}}\nwc{\enit}{\end{itemize}}
\nwc{\bgen}{\begin{enumerate}}\nwc{\enen}{\end{enumerate}}
\nwc{\bgmp}{\begin{minipage}}\nwc{\enmp}{\end{minipage}}

\nwc{\ct}{\centerline}
\nwc{\V}[1]{\overrightarrow{#1}}


\nwc{\la}{\left\{}\nwc{\ra}{\right\}}
\nwc{\lp}{\left(}\nwc{\rp}{\right)}
\nwc{\lb}{\left[}\nwc{\rb}{\right]}

\nwc{\bgsk}{\bigskip}
\nwc{\vsp}{\vspace{0.1cm}}
\nwc{\vspd}{\vspace{0.2cm}}
\nwc{\vspt}{\vspace{0.3cm}}
\nwc{\vspq}{\vspace{0.4cm}}


\newcounter{ntp}%[section]
\setcounter{ntp}{1}
\newenvironment{TP}[1]{%
\setcounter{equation}{0}\setcounter{subsection}{0}
%\bgsk{\large {\bf Exercice }\arabic{nex}}\hspace{0.5cm}
\clearpage
%\if@openright\clearpage\else\cleardoublepage\fi 
% ...doublepage... necessite documentclass{book}...
\section*{ \underline{TP \arabic{ntp} :} #1}
\addcontentsline{toc}{section}{\underline{TP \arabic{ntp} :}\ #1}
\stepcounter{ntp}}{}

\nwc{\bgTP}{\begin{TP}}\nwc{\enTP}{\end{TP}}


\def\N{{\rm I\kern-.1567em N}}                              % Doppel-N
\def\No{\N_0}                                               % Doppel-N unten 0
\def\R{{\rm I\kern-.1567em R}}                              % Doppel R
\def\C{{\rm C\kern-4.7pt                                    % Doppel C
\vrule height 7.7pt width 0.4pt depth -0.5pt \phantom {.}}}
\def\Z{{\sf Z\kern-4.5pt Z}}                                % Doppel Z

% grec et autres
\nwc{\lbd}{\lambda}
\nwc{\vphi}{\varphi}
\nwc{\ga}{\gamma}
\def\epsi{\varepsilon}
\def\tht{\theta}

\nwc{\tm}{\times}

\nwc{\ul}{\underline}
\nwc{\scp}[1]{\scriptsize{#1}}

\newcommand{\TITLE}{Réseaux d'antennes \\ Synthèse de diagramme de rayonnement}
\newcommand{\TITLEfoot}{Réseaux et synthèse de diagramme d'antennes}

\author{Y. Morel}
\date{}

\headheight=0cm
\textheight=26cm
\topmargin=-1.8cm
\footskip=.8cm
\textwidth=17.6cm
\oddsidemargin=-1.cm
%\parindent=0.2cm

\usepackage{fancyhdr}

\newenvironment{centerpage}{\vspace*{\fill}}{
	\protect\vspace*{\fill}}

\begin{document}


\pagestyle{fancyplain}
\setlength{\headheight}{0cm}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.1pt}
\lhead{}\chead{}\rhead{}

\lfoot{Y. Morel - \url{https://xymaths.fr/Matlab/}}
\rfoot{Fractales de Mandelbrot, Julia et Sierpinski - \thepage/\pageref{LastPage}}
\cfoot{}


\nwc{\TPtop}{}
\newlength{\lgr}
\newlength{\TPtopLarge}
\newlength{\EXX}
\newlength{\Tlgr}
\newlength{\TopHeight}
\newlength{\TopTitleHeight}

\newcommand{\ChapTitle}[3]{
  \renewcommand{\TPtop}{{\LARGE\bf #1} {\Huge\bf#2}}
  \settowidth{\lgr}{\LARGE\bf #1}
  \settowidth{\TPtopLarge}{\TPtop}
  \settoheight{\EXX}{\LARGE X}
  \settowidth{\Tlgr}{\LARGE T}
  \setlength{\Tlgr}{0.5\Tlgr}
  \settototalheight{\TopHeight}{\fbox{\bgmp{\linewidth}\begin{center}{\LARGE\bf#3}\end{center}\enmp}}
  %%
  \noindent
  \bgmp{\linewidth}
  \psline(\lgr,\EXX)(1.1\lgr,\EXX)
  \psline(\TPtopLarge,\EXX)(\linewidth,\EXX)%
  (\linewidth,-1.\TopHeight)(\Tlgr,-1.\TopHeight)%
  (\Tlgr,-0.05)
  \TPtop
  \vspace{-0.5\EXX}
  \begin{center}
    {\LARGE\bf#3}
  \end{center}
  \enmp%
  \vspace{0.5cm}
}

\vspace*{.4cm}
\setcounter{ntp}{5}
\ChapTitle{TP}{\thentp}{Fractales de Mandelbrot, Julia et Sierpinski}
\addcontentsline{toc}{section}{\underline{TP \arabic{ntp} :}\ Fractales de Mandelbrot, Julia et Sierpinski}

\vspace{1cm}\hspace{-1.cm}
\begin{minipage}{11cm}
Les fractales sont des courbes ou surfaces de forme irrégulière ou
morcelée qui se crée en suivant des règles déterministes ou
stochastiques. 

Le terme "fractale" est un néologisme créé par Benoît Mandelbrot en
1974 à partir de la racine latine fractus, qui signifie brisé,
irrégulier. 

\vspd
Ces objets fractals, initialement objets purement mathématiques, ont
trouvé depuis de nombreux champs d'applications. 

Pour en citer quelques-uns: 
\end{minipage}
\hspace*{-0.2cm}
\begin{minipage}{3cm}\vspace{-1.3cm}
    \epsfxsize=7cm\epsfysize=8cm%\vspace{-8cm}%\hspace{-3cm}
    \epsfbox{./Julia_-0.414_-0.612.eps}
\end{minipage}

\vspt
\bgit
\item {\bf En informatique.} Les fractales (plus précisément dans ce cadre
  fractales IFS pour {\it Systèmes de Fonctions Itérées}) permettent de
  décrire des paysages naturels, des nuages \dots avec une grande
  fidélité. 
  On repère dans l'image les parties qui présentent une certaines
  similarité, c'est-à-dire des parties qui peuvent se dédurie les
  unes des autres par des transformations géométriques (changement
  d'échelle, rotation). En ne stockant que ces informations, la taille
  de l'image peut-être nettement réduite. 

  La compression fractale est très utilisée dans les animations en
  ``temps réel'' : images de synthèse, jeux vidéos \dots. 
\vspd
\item {\bf En biologie.} De nombreux exemples de géométrie fractale peuvent
  être trouvés dans la nature. 
  Chez les végétaux (d'où l'idée d'ailleurs de compression d'image
  fractale), voir le choux Romanesco pour s'en convaincre ! 
  Chez l'homme (ou autres animaux) dont les organes peuvent être
  modélisés efficacement en utilisant des géométries de type fractale. 

\vspd
\item {\bf En physique.} Les proprités d'auto-similarité (répétition à
  toutes les échelles de même motifs) des fractales ont aussi donné
  des idées aux physiciens: à grande échelle, l'Univers semble avoir
  une organisation fractale. 
  La structure de notre galaxie se retrouve à l'échelle supérieure des
  amas de galaxie, mais aussi dans d'autres structures stellaires
  telles que les étoiles, nuages de gaz\dots
\enit

\vspd
On se propose dans ce TP de générer trois types de géométrie
fractales, celle de Mandelbrot (initiateur même des fractales), de
Julia et enfin le triangle (ou éponge) de Sierpinski.

\section*{Fractale de Mandelbrot}
\addcontentsline{toc}{section}{Fractale de Mandelbrot}

Pour chaque point du plan $M(x;y)$, on note $z=x+iy$, et 
on définit la suite de nombres complexes $(u_n)$ par 
$\la\bgar{ll}u_0=0 \\ u_{n+1}=u_n^2 + z \enar\right.$. 

\vspd
Pour certains points $M$, donc certaines valeurs de $x$ et $y$, la
suite $(u_n)$ ainsi définie diverge. 
L'ensemble de Mandelbrot est justement l'ensemble des points $M$ tels
que la suite $(u_n)$ ne diverge pas, i.e.  
$\dsp \lim_{n\to\infty} |u_n|\not= +\infty$. 

\paragraph{Travail à réaliser.} 
Nous allons balayer le plan à la recherche des points appartenant à
l'ensemble de Mandelbrot. 
On fera varier les valeurs de $x$ et $y$ (deux boucles \verb+for+) de
$-2$ à $2$ par pas respectivement de $\delta_x$ et $\delta_y$. 


Pour chaque position du point $M$, donc chaque valeur de $x$ et $y$,
calculer jusqu'à {\it Nmax} termes de la suite $(u_n)$: 
$u_1$, $u_2$, $u_3$, \dots , $u_{Nmax}$.  
Après le calcul de chaque terme, verifier si $|u_n|$ est plus grand
que la valeur {\it Seuil}; si c'est le cas, on considèrera que la
suite diverge, et on pourra se passer du calcul des derniers termes de
la suite. 

Stocker alors dans une matrice {\it Mat} le nombre de termes calculés
pour cette 
suite (la valeur {\it Nmax} si la suite est toujours restée en deçà du
seuil, ou une valeur $n$ inférieur dans le cas contraire). 

\vspd
Représenter graphiquement le contenu de la matrice {\it Mat} (fonction
\verb+imagesc+). 

\vspt
On pourra prendre les valeurs numériques suivantes: 
$\delta_x=\delta_y=0.01$, {\it Nmax} $=30$, {\it Seuil} $=2$

\section*{Fractale de Julia}
\addcontentsline{toc}{section}{Fractale de Julia}

Soit $c$ un nombre complexe quelconque: $c\in\C$, et $M(x;y)$ un point
du plan. On note $z=x+iy$. 

On définit alors la suite de nombres complexes $(u_n)$ par 
$\la\bgar{ll} u_0=z \\ u_{n+1}=u_n^2+c \enar\right.$

\vspd
De même que pour la suite de Mandelbrot, cette suite peut diverger ou
non.
L'ensemble de Julia est justement l'ensemble des points $M$ du plan,
donc des valeurs de $z$, tels que la suite ne diverge pas, i.e. 
$\dsp \lim_{n\to\infty} |u_n|\not= +\infty$. 

\paragraph{Travail à réaliser.} Le principe est le même que pour
l'ensemble de Mandelbrot, seul le calcul des termes successifs de la
suite diffère quelque peu. 

\vspt
On pourra prendre les mêmes valeurs numériques pour précédemment, avec
de plus, pour le paramètre $c$ les valeurs suivantes: 
$c=-1$, $c=-1+0.2312i$, $c=0.112-0.64i$. 

\section*{Triangle de Sierpinski}
\addcontentsline{toc}{section}{Triangle de Sierpinski}

La construction du triangle de Sierpinski peut se faire de manière 
géométrique. 

Soit trois points $A(0;0)$, $B(1;0)$ et $C(0;1)$. 
L'algorithme permettant d'obtenir le triangle de Sierpinski est le
suivant: 
\vspd
\bgen
\item Chosisir un point $P$ au hasard à l'intérieur du triangle
  $ABC$ (à l'aide de la fonction \verb+rand+). 
\item Choisir un des trois sommets $A$, $B$ ou $C$ au hasard. 
  On nommera $S$ ce point par la suite. 
\item Calculer le point $M$ milieu du segment $[PS]$. 
\item Redéfinir le point $P$ par $P=M$. 
  Stocker dans une matrice $X$ l'abscisse de $P$, et dans une matrice
  $Y$ l'ordonnée de $P$. 
\item Réitérer {\it N} fois à partir de l'étape 2 ($N=20\,000$
  par exemple).
\enen

\medskip
Finalement, afficher l'ensemble des points obtenus. 

\label{LastPage}
\end{document}

Télécharger le fichier source Latex