Atelier : Scilab

Ci-joint le document distribué lors de l'atelier.

Scilab_Saint_Flour_2009.pdf

Et ci-dessous la source (code Scilab) des exemples et exercices.

//Exemple 1 :

//Euros-Dongs 1

e=30;
d=e*24239.12;
d

//Euros-Dongs 1 avec dialogue

e=input("Somme en euros : ");
d=e*24239.12;
d=e*24239.12;
afficher("Somme en dongs : "+string(d))

//Euros-Dongs 1 avec fonction

function d=VND(e); d=e*24239.12; endfunction

// Euros-Dongs 2

e = 30;
t = 24239.12;
d = e*t;
d

//Euros-Dongs 2 avec dialogue

e = input("Somme en euros : ");
t = input("Taux de change : ");
d=e*t;
afficher("Somme en dongs : "+string(d))

//Euros-Dongs 2 avec fonction

function d=VND(e,t); d=e*t; endfunction


//Exercice 1

HT = input ("Prix hors taxe : ");
TTC=HT*1.196;
afficher("Prix TTC : "+string(TTC))


function TTC=Aveclestaxes(HT); TTC=HT*1.196; endfunction
Aveclestaxes(45)


//Exercice 2

a = input("Premier côté : "); b = input("Deuxième côté : ");
c = sqrt(a^2+b^2);
afficher("Hypoténuse : "+string(c))


function c=Hypothenuse(a,b); c=sqrt(a^2+b^2); endfunction
Hypothenuse(4,3)

//Remarque : le nom de la fonction ne doit pas contenir d'accent.


//Exemple 2
//Population lycée

//Calcul des termes

a(1) = 2000;
b(1) = 8000;
for n = 1:20
a(n+1) = 0.9*a(n) + 0.15*b(n);
b(n+1) = 0.1*a(n) + 0.85*b(n);
afficher ([1999+n,a(n),b(n)])
end

//Affichage graphique

clf; plot( a,"*"); plot(b,"r*")
quadrillage

//Test

a=2000; b=8000; n=2000;
while%T
if a>b then
afficher("A dépasse B en "+string(n))
break
end
a=0.9*a + 0.15*b;
b=0.1*a + 0.85*b;
n=n+1;
end

//Exercice 3

a(1)=20; b(1)=60;
for n=1:50
a(n+1)=(2*a(n)+b(n))/4;
b(n+1)=(a(n)+2*b(n))/4;
afficher([n,a(n),b(n)])
end

u=a+b; v=b-a;
afficher([u v])

for n=1:25
U(n)=u(n+1)/u(n); V(n)=v(n+1)/v(n);
end
afficher([U,V])

//Remarque : pour trop de termes, on a le problème de la division par zéro.


//Exercice 4

v(1)=1;
for n=1:500
v(n+1)=v(n)+1/(n+1)^2;
end
v

clf
plot(v,"o")

//Calculons la différence d(n)=v(n+1)-v(n)et utilisons un test

for n=1:500
d(n)=1/(n+1)^2;
if d(n)<=10^-3 then
afficher("v(n+1)-v(n)est inférieur à 10^-3 à partir de n = "+string(n))
break
end
end

//On peut aussi utiliser find

for n=1:500
d(n)=1/(n+1)^2;
end

find(d<=10^-3)
find(d<=10^-5)

//Calculons et représentons graphiquement les termes de la suite x

for n=1:500
x(n)=v(n)+1/n;
end
x

plot(x,"r*")


//Exemple 3

//Pour savoir, dans une classe de 30 élèves,
//la probabilité que 2 élèves au moins soient nés le même jour
//La réponse exacte est 1-(365!/335!)/(365^30), soit 0,7063162427

function y=fr(N)
y=0;
for n=1:N
date=tirage_entier(30,1,365);
if taille(unique(date))<>30 then
y=y+1/N;
end
end
endfunction

//Pour savoir le temps de calcul, tic lance le chrono,
// toc arrête le chrono et affiche le temps passé en secondes

tic;fr(1000);toc

//Comparons avec le programme du document d'accompagnement en seconde

tic
N=0;
for i=1:1000
dates=floor(rand(30,1)*365+1);
trouve=%F;
for k=1:29
for p=k+1:30
if (dates(p)==dates(k))
trouve=%T;
end;
end;
end;
if (trouve)
N=N+1;
end;
end;
disp("Il y a "+string(N)+" coïncidences");
toc

//Nombre d'élèves pour une probabilité supérieure à 0,5

function y=fr2(e)
y=0;
for n=1:10000
date=tirage_entier(e,1,365);
if taille(unique(date))<>e then
y=y+1/10000;
end
end
endfunction

clf; quadrillage
e=linspace(20,28,9);
plot(e,fr2,"m<")


//Exercice 5

a=150;
for n=1:1000
G(n)=-100;
U(n)=tirage_entier(1,1,10);
V(n)=tirage_entier(1,0,9);
if U(n)<=4 then G(n)=G(n)+a; end
if V(n)<=4 then G(n)=G(n)+a; end
afficher([n,U(n),V(n),G(n)])
end
M=moyenne(G)

//Définissons maintenant une fonction qui retournera la moyenne des gains en fonction de a

function M = moy(a)
for n=1:1000
G(n)=-100;
U(n)=tirage_entier(1,1,10);
V(n)=tirage_entier(1,0,9);
if U(n)<=4 then G(n)=G(n)+a; end
if V(n)<=4 then G(n)=G(n)+a; end
end
M=moyenne(G)
endfunction


//Exercice 6

//Tirage dans un ensemble (la réponse est 2/3)

P=ensemble("a(0.1)","b(0.1)","c(0.2)","d(0.5)","e(0.5)","f(0.5)","g(1)","h(2)","i(2)");
f=0;
for k=1:1000
if sum(valeur(tirage_ensemble(2,P)))>=1 then
f=f+1/1000;
end
end
f

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://blogs.ac-amiens.fr/disciplines/maths_ue_2009/index.php?trackback/11

Fil des commentaires de ce billet