Chapitre IV
> restart;
Booléens
> x:=1;
> x=2;
> evalb(x=2);
> x>=0;
> evalb(x>=0);
> a:="chaîne": b:="chaine":
> evalb(a=b);
> evalb(Pi>0);
> evalb((u+v)^2=u^2+v^2+2*u*v);
> is(Pi>0);
> is((u+v)^2=u^2+v^2+2*u*v);
>
> r:=Pi/3;s:=Pi/6;
> not(sin(r)=cos(s));
> evalb((sqrt(2)/2=cos(r)) or (sqrt(2)/2=cos(s)));
> evalb(1/2=cos(r) or 1/2=cos(s));
> evalb(1/2=cos(r) and 1/2=cos(s));
Tables de vérité.
>
> type(Pi, realcons);
> type(Pi, string);
> type(Pi, symbol);
> type(Pi, positive);
> restart;
Contrôle
> r:=Pi/3:s:=Pi/6:
> if (cos(r)=sin(s)) then "Il y a égalité" fi;
> if (cos(r)<>sin(s)) then "Il n'y a pas égalité" fi;
>
> t:=Pi/4:
>
if (cos(t)=sin(t))
then "Il y a égalité";
else "Il n'y a pas égalité"
fi;
> a:=1:b:=2:c:=4: P:=a*X^2+2*b*X+c;
>
if (b^2-a*c>=0)
then P||" a des racines réelles";
else P||" a des racines complexes";
fi;
>
if (b^2-a*c>0)
then P||" a deux racines réelles distinctes";
elif (b^2-a*c=0)
then P||" a une racine réelle double";
else P||" a deux racines complexes distinctes";
fi;
> restart;
> jour:="lundi":
>
if jour="lundi" then "Escalope de dinde et choux-fleurs"
elif jour="mardi" then "Ravioli à la sauce tomate"
elif jour="mercredi" then "Hachis parmentier et salade verte"
elif jour="jeudi" then "Steack haché frites"
elif jour="vendredi" then "Filet de sole et sauce à l'oseille"
elif jour="samedi" or jour="dimanche" then "Casino"
else "Votre jour n'existe pas"
fi;
> restart;
Boucles
> for i from 1 to 10 do [i,evalf(sqrt(i),4)] od;
> k:=3;
> for k to 5 do k! od;
> k;
> restart;
> n:=0; while n<100 do n:=n+rand(0..10)() od;
>
restart; n:=3;
for k while isprime(n) do n:=2^(2^k)+1 od;
> n=ifactor(n);
>
Exercices
> restart;
Exercice IV.1
>
mafactorielle:=1: for k to 100 do mafactorielle:=mafactorielle*k od:
'mafactorielle'=%;
`100!`=100!;
> restart;
Exercice IV.2
>
S:=0: for k while S<1000 do S:=S+k od:
k-1;
> sum(i,i=1..45);
> sum(i,i=1..44);
> restart;
Exercice IV.3
>
L:=[]:
for i while nops(L)<100
do
if isprime(i) then L:=[op(L),i] fi:
od:
L;
> restart;
Exercice IV.4
> a:=2;b:=3;
> garage:=a:a:=b:b:=garage:'a'=a;'b'=b;
> restart;
Exercice IV.5
> plot(tan(x)-x,x=3*Pi/2-1..3*Pi/2-1/10);
> f:=x->tan(x)-x;
> a:=3*Pi/2-1;b:=3*Pi/2-1/10;
Le principe est le suivant : On sait que la racine est entre a et b. On regarde le signe de l'image du milieu de [a,b], ce qui permet de localiser la racine entre a et ce milieu ou b et ce milieu. On recommence alors en remplaçant a et b par les valeurs obtenues, jusqu'à obtenir un intervalle d'amplitude plus petite que l'erreur souhaitée.
>
while ((b-a)>10^(-5))
do
milieu:=(a+b)/2:
if is(f(a)*f(milieu)<0) # i.e. Si la racine est entre a et milieu
then b:=milieu:
else a:=milieu:
fi:
od:
['a','b']=[evalf(a,7),evalf(b,7)];
> restart;
Exercice IV.6
>
n:=496:
somme:=0: # Variable affectée de la somme des diviseurs de n
for j from 1 to n-1
do
if irem(n,j)=0 then somme:=somme+j:
fi:
od:
if (somme=n)
then ""|| n || " est parfait";
else ""|| n || " n'est pas parfait";
fi;
>
>