Sujet : Re: fonctions
De : samuel_dot_devulder (at) *nospam* laposte_dot_net.invalid (Samuel DEVULDER)
Groupes : fr.sci.mathsDate : 20. May 2022, 20:15:32
Autres entêtes
Organisation : Aioe.org NNTP Server
Message-ID : <t68ls3$1jb5$1@gioia.aioe.org>
References : 1 2 3 4 5
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0
Le 20/05/2022 à 15:16, HB a écrit :
En fait, oui, je voudrais disposer d'un processus "aléatoire" me permettant de pondre des familles de n fonctions pour, ensuite,
obtenir des "images aléatoires" utilisant le principe de la toile
(vue au MOMA) dont j'ai transmis l'image à 10h22 ce matin.
Alors voilà ce que je propose. Ce n'est pas trop des maths mais de la cuisine de procédural graphic.
1) Les fonctions à utiliser seront des courbes de Bezier assurant ainsi leur classe C-infini, c'est à dire qu'elles seront bien lisses et pas trop "artificielles". Elles ont aussi le bon goût d'être représentables par un polynôme, donc un tableaux de réels, et de ce fait être facilement manipulable formellement en restant dans le même formalisme.
2) Je définis une "procédure" de génération qui retourne une courbe de Bézier définie entre 0 et 1 et dont l'image est entre 0 et 1.
Pour ce faire, on choisit un entier aléatoire 3<=r<=10 (environ), puis N-2 valeurs x_i entre 0 et 1 que l'on complète avec x_0=0 et x_r=1 (on ordonne les x_i suivant le sens croissant). Puis pour chaque x_i, on choisit un y_i au pif entre 0 et 1. Cela nous donne N points de contrôles dans le carré unité. On retourne alors le polynôme de Bézier de degré r associé à ces r points de contrôles tirés au pif.
Les propriétés des courbes de Bézier sont telles que la courbe reste dans l'enveloppe convexe des points de contrôles, donc ne sort pas du carré unité.
On se génère ainsi une première fonction f1.
Soit k fonctions générés f_1 .. f_k, on appelle S_k la courbe représentant le volume restant au dessus de la somme de ces fonctions:
R_k = 1 - somme(j=1..k, f_j)
3) pour i=2..N-1 on appelle la procédure du point 2) qui nous retourne une
courbe "aléatoire" B_i dans le carré unité. On définit alors
f_i(x) = B_i(x) * R_i-1(x) + (1 - R_i-1(x))
Bref on multiplie ce qui reste du carré d'origine par le Bézier entre 0 et 1 et on s'ajoute au dessus des fonctions précédentes.
4) enfin on définit
f_N(x) = (1 - R_i-1(x))
On aura ainsi 5N fonctions "aléatoires" ne se croisant pas, et donc la somme vaut, de par la définition de F_N, exactement 1.
Note: on manipule des polynômes de bout en bout par ici, donc rien d'insurmontable à programmer ou en taille de données (F_N sera de degré N*N si je ne m'abuse, donc un tableau de 100 réels au max).
Ca devrait ressembler aux courbes du MOMA je suppose, à un détail près: je ne sais pas si la distribution des courbes sera la même. En effet comme le tirage suivant "pince" la prochaine courbe dans ce qu'il reste d'espace libre au dessus. Possiblement que les oscillations en seront réduites. Après avec N autour de 5 courbes, peut-être que cela ne se verra pas. Je ne sais pas, il faut expérimenter.
En tout cas c'est une idée..
sam.