Académique Documents
Professionnel Documents
Culture Documents
000000000
Reportez votre numéro d’anonymat dans le cadre ci-dessous et en haut à gauche de chaque page de
l’énoncé.
A la fin de l’épreuve glissez ce cahier dans la copie double qui vous a été fournie, qui comporte
votre numéro d’anonymat et sur laquelle vous aurez écrit et masqué votre nom en rabattant dessus
et en collant la languette triangulaire. Vous ne devez rien écrire d’autre sur cette copie double.
Numéro d’anonymat :
1. S’il y en a un.
2. S’il y en a.
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 2 2012-03-07 00:11:41.000000000
y
x
P
y
θB
~
θA j
A O ~i B x
a a
−
2 2
sin θA sin θB
y = −a
sin(θA − θB )
Pour estimer l’erreur statistique commise sur les coordonnées de P on fait n mesures des quantités a, θA et θB que
l’on écrit manuellement dans un fichier nommé tri.dat sous la forme :
20
567.4 28.2 -115.9
568.1 27.8 -116.4
...
Sur le première ligne se trouve le nombre n de mesures effectuées et sur les n lignes suivantes les n valeurs mesurées
pour le triplet a, θA et θB .
Question : écrire un programme qui lit les données dans le fichier tri.dat et affiche à l’écran les n valeurs correspon-
dantes de x et y, la valeur moyenne de x et son écart type, la valeur moyenne de y et son écartptype.
On rappelle que, en notant <> la valeur moyenne, l’écart type d’une grandeur u peut s’écrire < u2 > − < u >2 .
Réponse à la question :
int main()
{
int i,n=20;
double a,teta,tetb,x,sx,s2x,y,sy,s2y;
fstream dat("tri.dat",ios::in);
dat >> n;
sx=0; sy=0; s2x=0; s2y=0;
for(i=1;i<=n;i++)
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 3 2012-03-07 00 :11 :41.000000000
{
dat >> a >> teta >> tetb;
teta=teta/180*M_PI; tetb=tetb/180*M_PI;
x=-a/2*sin(teta+tetb)/sin(teta-tetb);
y=-a*sin(teta)*sin(tetb)/sin(teta-tetb);
cout << x << " " << y << endl;
sx+=x; s2x+=x*x; sy+=y; s2y+=y*y;
}
cout << endl << "<x>=" << sx/n << " écart type de x=" << sqrt(s2x/n-sx*sx/n/n)
<< " <y>=" << sy/n << " écart type de y=" << sqrt(s2y/n-sy*sy/n/n) << endl;
return 0;
}
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 4 2012-03-07 00 :11 :41.000000000
Pointeurs ** (6)
Indiquer et expliquer ce qui sera affiché à l’écran par les deux programmes suivants écrits côte à côte. La seule ligne
qui diffère entre les deux programmes est repérée par //.
#include<iostream> #include<iostream>
#include<stdlib.h> #include<stdlib.h>
using namespace std; using namespace std;
int main() int main()
{ {
double *x,*y; int i,n=3; double *x,*y; int i,n=3;
x=(double *)malloc(n*sizeof(double)); x=(double *)malloc(n*sizeof(double));
for(i=0;i<n;i++) x[i]=i; for(i=0;i<n;i++) x[i]=i;
for(i=0;i<n;i++) y[i]=x[i]; // y=x; //
for(i=0;i<n;i++) for(i=0;i<n;i++)
cout << x[i] << " " << y[i] << endl; cout << x[i] << " " << y[i] << endl;
return 0; return 0;
} }
Réponse : Réponse :
Aucune adresse valide n’a été mise dans le pointeur
y donc il y a une erreur de segmentation. 0 0
1 1
2 2
Le pointeur y contient la même adresse que le poin-
teur x. Cette adresse a été attribuée par l’instruction
malloc et est donc valide.
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 5 2012-03-07 00 :11 :41.000000000
Déviation des rayons lumineux par l’atmosphère *** (12) [30 lignes]
La trajectoire d’un rayon lumineux dans un milieu inhomogène d’indice n(− →
r ) est donnée par le système d’équations
différentielles :
d − → →
−
(n t ) = ∇n
ds
→
−
t étant le vecteur unitaire tangent au rayon lumineux au point M (x, y, z) d’abscisse curviligne s, qui vaut :
−−→
−
→ dOM
t =
ds
On considère un rayon lumineux pénétrant dans l’atmosphère terrestre dans la configuration suivante :
−−→ y
M0 tM0
R
rayon −
→
tR
r0 + dy0
~j
−2r0 O ~i r0 x
Terre, de rayon r0
−−→
tM0 est le vecteur unitaire tangent au rayon en M0 .
−
→
tR est le vecteur unitaire tangent au rayon en R.
→ −
− → −−→ −
→
i , j , tM0 et tR devraient être tous de la même longueur puisqu’ils sont unitaires.
Ils ne le sont pas pour assurer une meilleure lisibilité de la figure.
Au point M0 de coordonnées (−2r0 , r0 + dy0 ) le rayon est parallèle à l’axe Ox. Il va ensuite être légèrement dévié
vers la Terre, le gradient de la pression atmosphérique entraı̂nant un gradient de l’indice de l’air. On prend :
r0 = 6.4 106 mètres, rayon de la Terre
dy0 = 1 mètre
La trajectoire du rayon est dans le plan de la figure et ses équations paramétriques x(s), y(s) sont les solutions du
système :
1 dn
ẍ = [x − ẋ(xẋ + y ẏ)]
nr dr
1 dn
ÿ = [y − ẏ(xẋ + y ẏ)]
nr dr
dx −−→
etc., →
− p
avec ẋ = r = OM donc r = x2 + y 2 .
ds
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 6 2012-03-07 00:11:41.000000000
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 7 2012-03-07 00 :11 :41.000000000
// Euler
for(j=0;j<nn;j++) q[j]=q[j]+ds*qp[j];
}
cout << r << " " << 180./M_PI*atan2(q[3],q[2]) << " " << q[0] << " " << q[1] << endl;
return 0;
}
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 8 2012-03-07 00 :11 :41.000000000
1
−
ng
np
ki
e
r
ar
i=
i=
Pa
Domicile
G
b b b b b b b b b b
B A
Chaque point • symbolise une place de stationnement
La gare se trouve au bout d’une longue avenue en sens unique qui comporte d’abord un parking puis np places de
stationnement. Chaque place a une probabilité p d’être libre. Au delà de la gare il n’y a pas de possibilité de se garer,
il faut faire le tour du quartier pour revenir au début de l’avenue. X essaye de stationner le plus près possible de la
gare. Il ne peut voir une place libre qu’en arrivant à sa hauteur. Si X arrive une première fois jusqu’à la gare sans
s’être garé il fait le tour du quartier Gare-A-B-Parking pour revenir au début de l’avenue et se gare dans le parking,
dans lequel il y a toujours de la place. Il n’essaie pas une seconde fois de prendre une place dans l’avenue, même s’il
en a repéré une qu’il a négligée lors de son premier passage en espérant trouver plus près de la gare, parce que cette
place pourrait avoir été prise entre temps et il ne peut pas prendre le risque de manquer son train.
Prendre les valeurs suivantes :
np=200
p=0.01
L =1000 mètres
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 9 2012-03-07 00 :11 :41.000000000
Question 1 : écrire, à l’aide de la fonction alea() 3 , une fonction nommée pl 4 , d’argument p, qui vaut 0 avec la
probabilité p et 1 avec la probabilité 1 − p
Réponse à la question :
int pl(double p)
{
if(drand48()<=p) return 0;
return 1;
}
Question 2 : la distance d à parcourir à pied depuis la place de stationnement numéro i (0 ≤ i ≤ np − 1) jusqu’à la
gare est donnée par la formule :
i+1
d=L 1−
np + 1
Écrire une fonction nommée ll dont les arguments sont L, np et i et dont la valeur est d.
Réponse à la question :
double ll(double L,int np,int i)
{
return L*(1-(double)(i+1)/(np+1));
}
Question 3 : écrire un programme qui calcule la distance moyenne que X parcourt à pied pour parvenir à la gare
dans chacune des trois hypothèses suivantes :
1. Il prend la première place qu’il trouve dans l’avenue.
2. Il prend la seconde place qu’il trouve dans l’avenue.
3. Il prend la seconde place qu’il trouve dans l’avenue lorsqu’il est dans la première moitié de l’avenue et la
première place dans la seconde moitié de l’avenue.
Les distances moyennes seront calculées sur N = 105 épreuves.
Question 4 : que faut-il ajouter au programme pour généraliser les points 1. et 2. de la question 3 en calculant la
longueur moyenne lk du trajet à parcourir à pied dans l’hypothèse ou X prend toujours la k ème place qu’il trouve,
avec 0 ≤ k ≤ np − 1 ?
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session
Numéro d’anonymat : 10 2012-03-07 00 :11 :41.000000000
Licence et Magistère 1ère année de Physique fondamentale Examen d’informatique 2011-2012 première session