arthur99 a écrit:Bonjour,
Aussi bizarre que cela puisse sembler, j'ai depuis longtemps buté sur le problème suivant:
Supposons qu'un rectangle d'aire A soit dessiné sur un bloc-note d'aire B. En me tenant au dessus du bloc-note, je laisse tomber, au hasard, un stylo à l'horizontal sur le bloc note. Le stylo est assimilé à un rectangle d'aire C (A >> C > B). Quelle est la probabilité qu'une partie au moins du rectangle d'aire C (le stylo) touche une partie au moins du rectangle d'aire A (le dessin) ?
Je n'arrive pas à résoudre le problème sans définir des coordonnées et intégrer, pourtant, je suis sûr qu'il existe une solution élégante à ce problème...
Je vous remercie d'avance pour votre aide !
DamX a écrit:Hello,
le stylo peut-il avoir un angle quand il tombe ? ou les deux rectangles (le bloc-notes et le stylo) sont-ils "parallèles". C'est ton terme "à l'horizontal" qui me met le doute.
Si c'est oui, ça ressemble vaguement à une variante du problème des aiguilles de Buffon, http://fr.wikipedia.org/wiki/Aiguille_de_Buffon, mais avec les effets de bords qui vont intervenir à cause de la finitude du bloc-notes et l'épaisser du crayon, je doute qu'il y ait une solution très "élégante".
Damien
beagle a écrit:bah, ton problème déjà est très mal défini.
le stylo est-il entièrement, sans dépasser au-dessus du bloc note?
Le stylo est-il laché à chaque fois d'un endroit différent = au hasard au-dessus du bloc note
déjà qu'il faut qu'il tombe bien à plat sans rouler, sans se déporter , sans ceci cela,
j'ai du mal déjà physiquement,...
Quant à ton dessin, on ne le voit pas,
si le stylo est grand,
si le rectangle dans le bloc note est énorme, si ...
il est fait mention d'un dessin, tu peux au moins le décrire ?
ou bien le problème est tous les stylos dans tous les rectangles de tous les blocs notes.
beagle a écrit:Sinon, existe-t-il une seule ou plusieurs surfaces où le stylo pourrait tomber sans ètre à cheval sur le fameux rectangle?Proba de tomber dans la surface qui n'est pas le rectangle est-ce plus facile ou pas?
arthur99 a écrit:Je dirais intuitivement qu'il est plus probable de ne pas toucher le rectangle, mais toute la question est de connaitre cette probabilité en fonction de A, B et C.
DamX a écrit:Questions complémentaires avant de pouvoir tenter de faire quelque chose :
- Préciser ce que signifie "le stylo est posé au hasard" : est-ce que ça veut dire : le centre du stylo est situé au hasard (de loi uniforme) dans la surface du bloc-notes, et l'orientation du stylo est aléatoire uniforme sur [0,pi] (pas besoin d'aller jusqu'à 2Pi parce qu'il est symétrique) ? Dans ce cas le stylo peut dépasser du bloc-notes (si le centre est près du bord). Ou est-ce que le stylo doit tenir entièrement dans le bloc-notes ?
- Le rectangle dessiné sur le bloc-notes est-il "droit" (lignes parallèles avec le bloc notes) peut-il être orienté également, comme le stylo.
Damien
PS : je pense qu'il faudra commencer par voir ce que ça donne dans le cas où le stylo est infiniment fin (un trait), puis étendre au cas de largeur non nulle si c'est faisable.
.
+
+ .
+ +
+
+
+
+ rectangleE
+------+ H+------+G
| + | +| +|
| |l + | + |
+------+ E+--+--F+--+
L | +D | +C
|+ |+
A+------+Bfunction get_line_intersection(p0_x, p0_y, p1_x, p1_y,
p2_x, p2_y, p3_x, p3_y)
{
var s1_x, s1_y, s2_x, s2_y;
s1_x = p1_x - p0_x; s1_y = p1_y - p0_y;
s2_x = p3_x - p2_x; s2_y = p3_y - p2_y;
var s, t;
s = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y);
t = ( s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y);
if (s >= 0 && s = 0 && t = this.anchor.x && p.x = this.anchor.y && p.y <= this.anchor.y + this.l
return onX && onY;
}
Rectangle.prototype.area = function(){
return this.L*this.l;
}
Rectangle.prototype.randomAnchor = function(){
return {
x:random(0,this.L),
y:random(0,this.l)
}
}
Rectangle.prototype.center = function(){
return offset(this.anchor, {x:this.L/2, y:this.l/2});
}
function sim(){
var N = 100000;
var count = 0;
var pen = new Pen(40);
var L = 1000;
var l = 800;
var rectangleB = new Rectangle(L,l, {x:0,y:0});
var LA = 10;
var lA = 30;
var rectangleA = new Rectangle(LA,lA, offset(rectangleB.center(), {x:-LA/2, y:-lA/2}));
for(var i=0; i<N; ++i){
var theta = random(0, Math.PI*2);
var coord = rectangleB.randomAnchor();
pen.update(coord, theta);
if(pen.overlaps(rectangleA)){
count++;
}
}
var result = count/N;
console.log('got : ', result);
var thetaSum = rectangleA.area()+2/Math.PI*pen.d*(rectangleA.L+rectangleA.l);
var expected = thetaSum/rectangleB.area();
console.log('expected : ', expected);
}
sim();
got : 0.00165
expected : 0.0016482395447351627
dlzlogic2 a écrit:Bonjour,
Il y a une variante amusante.
On prend une feuille de papier quadrillé.
On prend un cheveu que l'on coupe en 4.
On laisse tomber ces 4 cheveux et on compte le nombre de carreaux traversés.
On recommence l'opération un certain nombre de fois.
Après 2 ou trois opération on obtient une bonne approximation de pi.
Si on a oublié que pi vaut à peu près 3.14159265 on peut utiliser cette méthode. :id:
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 13 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :