Réarrangement décroissant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Réarrangement décroissant

Message  Eric Kouris le Mar 28 Oct - 16:48

J'ai maintenant un problème pour obtenir une courbe à partir d'une autre.
J'ai une fonction f donnée et je souhaite tracer sur le même graphique son réarrangement décroissant. (et bien sur les exemples numériques fournis dans le bouquins sont triviaux)



En gros (dans le cas d'une fonction d'une variable réelle), on range les images en ordre décroissant (en éliminant les points double de la liste).
As-tu implémenté un algorithme de tri dans Texgraph ?

Ensuite, je vois la chose comme suit : on récupère les points de la courbe initial, on tri les ordonnées, on supprime les doublons et on divise l'intervalle par le nombre de points restants pour affecter les abscisses et tracer une nouvelle courbe.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Mar 28 Oct - 17:41

Voilà, j'ai suivi ton idée:

Code:

[
view(-3,3,-4,3.5), Marges(0.25,0.25,0.25,0.25), size(12),
tMin:=-1, tMax:=2.5, NbPoints:=150,
{on récupère les points de la courbe}
L:=Get(Cartesienne(3-x^2,0)),
{on trie les ordonnées}
Y:=for z in L do Im(z) od, Sort(Y,1),
{on élimine les doublons}
Y:= [last:=Y[1], last, for y in Y[2,0] do
    if y<last-0.0001 then y fi od],
{on répartit régulièrement les y sur [tMin, tMax]}
pas:=(tMax - tMin)/(Nops(Y)-1), x:=tMin,
L':= for y in Y do x+i*y, Inc(x,pas) od,
{on dessine}
Arrows:=1, Width:=6, Axes(0,1+i), Arrows:=0,
Width:=8, Ligne(L,0),
Color:=gray, LineStyle:=dashed, Ligne(L',0)
]             



Dernière édition par P.Fradin le Mer 29 Oct - 11:53, édité 1 fois

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Mer 29 Oct - 2:26

Je te remercie et je vais regarder ça de près demain. J'ai juste l'impression d'avoir dit une ânerie et que les deux courbes devraient être collées sur la partie où il n'y a pas de doublons. Faut que j'y réfléchisse.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Mer 29 Oct - 11:02

Le code a un problème, il manque un fi et les crochets ne sont pas équilibrés.

Sinon, j'ai réfléchi à ce qu'il faut obtenir et les deux courbes devraient être l'une sur l'autre dans la partie où il n'y a pas de doublons.

Donc, avant d'éliminer les doublons, il faut récupérer l'indice du dernier élément de la liste qui subit une permutation dans le tri.
On affecte à tous les éléments qui se trouvent au-delà de cet indice l'abscisse qu'ils avaient dans la liste originale. Pour les autres, on répartit les points (après avoir éliminé les doublons) sur le reste de l'intervalle.

Ça commence à devenir passablement compliqué ...

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Mer 29 Oct - 11:55

Bonjour Eric,

Effectivement, il y a un bout de code qui s'est volatilisé dans le copier-coller. J'ai rectifé dans mon précédent message. Avec 150 points on obtient ceci:


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Mer 29 Oct - 12:05

Superbe !

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  F.Couvreur le Jeu 30 Oct - 3:15

Bonjour Patrick,
Je suis avec beaucoup d'intérêt le travail que vous faites, toi et Eric (que ces exercices sont difficiles !).
J'analyse les codes que tu proposes, toujours en vue de progresser dans l'utilisation de TeXgraph.
Aussi, peux-tu m'expliquer le bout de code suivant :
Code:
Y:= [last:=Y[1], last, for y in Y[2,0] do
    if y<last-0.0001 then y fi od]
La liste Y contient les ordonnées triées de façon décroissante, donc l'instruction last:=Y[1] contient l'ordonnée la plus grande ?
Pourquoi répéter last ensuite ?
Que veut dire Y[2,0] ? On commence le test à la deuxième ordonnée ? Pourquoi un "0" après le 2 ?
Merci.

F.Couvreur

Nombre de messages : 137
Age : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Jeu 30 Oct - 11:31

Bonjour Fabrice,

Y est effectivement déjà triée, il faut en éliminer les doublons, pour cela on garde la première valeur de la liste: Y[1], puis à partir de la deuxième, chaque valeur doit être comparée à la dernière valeur convervée, donc au départ last:=Y[1] et on garde Y[1], d'où le début:

Code:

[last:=Y[1], last,

Le premier crochet indique que l'on est en train de construire une liste. Quand TeXgraph va évaluer cette liste, l'affectation donnera Nil et last donnera sa valeur donc la liste commencera en réalité par [last, ...

Ensuite c'est la boucle for où y parcourt Y[2,0] ce qui est la même chose que Copy(Y,2,0) et cela représente tous les éléments de Y à partir du deuxième, chaque valeur est comparée à la dernière retenue (qui est dans last) à cause des arrondis j'ai mis y < last-0.0001 (encore faudrait-il tester de manière approfondie le bien-fondé...), si les test positif on garde y et last prend la valeur de y. Et là je me rend compte qu'il manque cette partie! Le code devrait être:

Code:

Y:= [last:=Y[1], last, for y in Y[2,0] do if y<last-0.0001 then y, last:=y fi od]

à chaque fois que le test est positif l'évaluation donnera la valeur de y (l'affectation qui suit donne Nil).

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  F.Couvreur le Jeu 30 Oct - 12:20

Bonjour Patrick,
Merci pour toutes ses explications.
si les test positif on garde y et last prend la valeur de y. Et là je me rend compte qu'il manque cette partie!
C'est en fait cela que je ne comprenais pas, car selon moi, last aller contenir la dernière valeur testée, et ainsi de suite.
@+

F.Couvreur

Nombre de messages : 137
Age : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Jeu 30 Oct - 12:32

Du coup j'ai regardé si cela change beaucoup ou pas le graphique pour Eric, car c'est comme si on n' avait pas enlever les doublons. En fait cela ne change rien, après quelques tests il me semble que numériquement il est plutôt rare de tomber sur un doublon, même si dans la théorie il y a en a!

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Jeu 30 Oct - 12:34

Le problème se pose si la fonction est constante sur un sous-intervalle.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Jeu 30 Oct - 12:38

Voila la définition propre du réarrangement décroissant

On pose d'abord $E(f>t)=\{x\in E:f(x)>t\}$.

Soit $E\subset\mathbb{R}^{m}$ et $f\in\mathscr{L}^{0}(E)$. On pose
\begin{equation*}
f^{*}(\tau)=\inf\left\{t:\lambda_{m}\left(E(f>t)\right)\leq\tau\right\}\quad\text{pour}\quad\tau\geq0
\end{equation*}
($\lambda_m$ est la mesure de Lebesgue). La fonction $f^{*}$ est appelée le réarrangement décroissant de la fonction~$f$.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Jeu 30 Oct - 15:16

J'ai refait un fichier pour tracer f* en utilisant la défnition et cela me parait mieux!

Code:

% TeXgraph version 1.94 beta-7.2
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-1#5#-1#5#1#1##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0.5#0.5#0.5#0.5#0#1#5##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#xmin#0##
15#xmax#3##
15#courbe#1/0##
15#Max#3.99989587671803##
15#Min#7.105427357601E-15##
15#nbEtapes#16##
% Déclaration des Macros
16#f#4-(%1-1)^2##
16#Ef#{Ef(t): calcule la mesure de E(f>t)}
[$I:=[[Xmin+i*%1,Xmax+i*%1] InterL courbe, xmax+i*%1],
 $L:=if I<>Nil then
      $last:= xmin+i*%1,
      for $z in I do
          $y:=f(Re((last+z)/2)),
          if y>%1 then Re(z-last) fi,
          last:=z
      od
    fi,
sum(L)
]##
16#fEtoile#{fEtoile(x): réarrangement calculé en x>=0}
[$tmax:=Max, $tmin:=Min,  $Ef1:=Ef(Max),
 for k from 1 to nbEtapes do
    $milieu:=(tmax+tmin)/2, $Efm:=Ef(milieu),
    if Efm > %1 then tmin:=milieu
                else tmax:=milieu, Ef1:=Efm
    fi
 od,
 (tmax+tmin)/2
]##
% Déclaration des Eléments graphiques
% objet1 (Utilisateur)
18##[tMin:=-5]##
14#objet1#[
view(-1,5,-1,5),
tMin:=xmin, tMax:=xmax, courbe:=Get(Cartesienne(f(x))),
r:=rectangle(courbe), Max:=Im(r[1]), Min:=Im(r[2]),
nbEtapes:=1+Ent( (4*ln(10)+ln(Max-Min))/ln(2) ),

Width:=4, Arrows:=1, Axes(0,1+i), Arrows:=0,
Width:=8, Ligne(courbe,0),
Color:=gray, LineStyle:=dashed, Cartesienne(fEtoile(x)),
courbe:=Nil
]#-1##

ce qui me donne:

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  F.Couvreur le Jeu 30 Oct - 16:43

Salut Patrick,
Il y a encore quelque chose qui me chagrine Very Happy
Les listes étant essentielles dans TeXgraph, je veux être sûr d'avoir compris.
Si nous omettons last dans la liste, TeXgraph évaluera la liste Y :=[last:=Y[1]] à Nil, autrement dit, cette liste est vide. L'instruction last:=Y[1] affecte à la variable last la première valeur de Y, mais ne crée pas le premier élément de la liste.
Ensuite, on affecte à last la valeur testée y à l'aide de l'instruction last:=y. Ce que je ne comprends pas, c'est que le premier contenu de last devrait être remplacé par y, et donc la liste Y ne devrait à chaque fois ne contenir qu' un élément !
A moins que la liste Y soit du type[last,last,last,...] ?
Merci pour ton aide.

F.Couvreur

Nombre de messages : 137
Age : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Jeu 30 Oct - 17:02

F.Couvreur a écrit:Salut Patrick,

Re,


Il y a encore quelque chose qui me chagrine Very Happy
Les listes étant essentielles dans TeXgraph, je veux être sûr d'avoir compris.
Si nous omettons last dans la liste, TeXgraph évaluera la liste Y :=[last:=Y[1]] à Nil, autrement dit, cette liste est vide.

Tu oublies que la liste ne s'arrête pas là! La boucle for est dans la liste et le résultat de chaque "tour de boucle" est ajouté à la liste.


L'instruction last:=Y[1] affecte à la variable last la première valeur de Y, mais ne crée pas le premier élément de la liste.
C'est ça, d'ailleurs on aurait très bien pu mettre last:=Y[1] en dehors de la liste, avant Y:=[...


Ensuite, on affecte à last la valeur testée y à l'aide de l'instruction last:=y. Ce que je ne comprends pas, c'est que le premier contenu de last devrait être remplacé par y, et donc la liste Y ne devrait à chaque fois ne contenir qu' un élément !

Non car on a do y, last:=y od, il y a donc aussi l'évaluation de y qui elle renvoie la valeur de y.

Par exemple, si tu exécutes dans la ligne de commandes en bas de la fenêtre:

Code:

[0, for z from 1 to 10 do z^2 od]

tu verras s'afficher:[0,1,4,9,16,25,36,49,64,81,100], la boucle for génère une liste qui est concaténée à ce qui précède.

Merci pour ton aide.

Pas de quoi. Il est vrai que la programmation dite fonctionnelle est un peu particulière au début. En fait tout est fonction, et exécuter veut dire évaluer.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Mar 4 Nov - 13:14

Je viens d'intégrer ta nouvelle version du réarrangement décroissant dans mon projet (en changeant un peu la fonction)

Code:

% TeXgraph version 1.94 beta-7.2
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-0.25#3.5#-0.25#3.5#1#1##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#9##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.5236, phi:=1.0472,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Variables Globales
15#xmin#0##
15#xmax#(2.4+sqrt(15))/2##
15#courbe#1/0##
15#Max#2.99979992460376##
15#Min#0##
15#nbEtapes#15##
% Déclaration des Macros
16#f#3-0.8*(%1-1.2)^2##
16#Ef#{Ef(t): calcule la mesure de E(f>t)}
[$I:=[[Xmin+i*%1,Xmax+i*%1] InterL courbe, xmax+i*%1],
 $L:=if I<>Nil then
      $last:= xmin+i*%1,
      for $z in I do
          $y:=f(Re((last+z)/2)),
          if y>%1 then Re(z-last) fi,
          last:=z
      od
    fi,
sum(L)
]##
16#fEtoile#{fEtoile(x): réarrangement calculé en x>=0}
[$tmax:=Max, $tmin:=Min,  $Ef1:=Ef(Max),
 for k from 1 to nbEtapes do
    $milieu:=(tmax+tmin)/2, $Efm:=Ef(milieu),
    if Efm > %1 then tmin:=milieu
                else tmax:=milieu, Ef1:=Efm
    fi
 od,
 (tmax+tmin)/2
]##
% Déclaration des Eléments graphiques
% objet1 (Utilisateur)
18##[tMin:=-5,tMax:=5]##
14#objet1#[
view(-0.25,3.5,-0.25,3.5),
tMin:=xmin, tMax:=xmax, courbe:=Get(Cartesienne(f(x))),
r:=rectangle(courbe), Max:=Im(r[1]), Min:=Im(r[2]),
nbEtapes:=1+Ent( (4*ln(10)+ln(Max-Min))/ln(2) ),

Width:=3, Arrows:=1, Axes(0,0), Arrows:=0,
Width:=5, Ligne(courbe,0),
Width:=8, Color:=gray, LineStyle:=dashed, Cartesienne(fEtoile(x)),
courbe:=Nil
]#-1##
% objet6 (Label)
18##[LabelStyle:=4,LabelSize:=2]##
8#objet6#[ 3.4-0.1*i ]#$x$##
% objet7 (Label)
18##[LabelStyle:=2]##
8#objet7#[ 3.4*i-0.1 ]#$y$##
% objet8 (Label)
18##[LabelStyle:=0]##
8#objet8#[ 2.1+2.8*i ]#$f$##
% objet9 (Label)
8#objet9#[ 1.1+2.4*i ]#$f^{*}$##

Il ne me reste plus qu'à éliminer les ?? du manuscrit ...

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Mar 4 Nov - 13:26

Salut Eric,

Cela sera mieux ainsi car quand on zoomait les tirets avaient l'air ondulés alors que là ce n'est plus le cas. Et pour les figures 3D tu prends la version fil de fer finalement?

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Eric Kouris le Mar 4 Nov - 14:56

P.Fradin a écrit:Salut Eric,

Cela sera mieux ainsi car quand on zoomait les tirets avaient l'air ondulés alors que là ce n'est plus le cas. Et pour les figures 3D tu prends la version fil de fer finalement?

Pour la 3D, je vais certainement donné les différentes versions à l'éditeur et il va choisir ce qui lui convient le mieux (puisque maintenant le livre a un éditeur qui veut même envoyer le bouquin chez l'imprimeur avant la fin de l'année pour qu'il puisse être utilisé à l'oral de l'agreg dès juillet prochain).

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  P.Fradin le Mar 4 Nov - 15:25

Eric Kouris a écrit:
Pour la 3D, je vais certainement donné les différentes versions à l'éditeur et il va choisir ce qui lui convient le mieux (puisque maintenant le livre a un éditeur qui veut même envoyer le bouquin chez l'imprimeur avant la fin de l'année pour qu'il puisse être utilisé à l'oral de l'agreg dès juillet prochain).

Et bien, toutes mes félicitations!

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Réarrangement décroissant

Message  Contenu sponsorisé Aujourd'hui à 11:52


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum