Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Scilab exercice

Posté par
Sundae
26-02-17 à 18:36

     Bonsoir à tous.

J'ai plusieurs petits exercices à faire sur Scilab et il y'en a dont je n'y arrive pas.

Consigne : Expliquer, dans chaque cas ci-dessous, pourquoi la définition de la fonction proposée est erronée ou absurde


function p = f5(n)
p = p + f5(n-1)
endfunction

funtion p = f6(n)
if n>0
p=p+f6(n-1)
end
endfunction

Et puis un autre exercice :

Consigne : On considère les matrices A,B,C et D défini par A = rand(10,100) B=rand(100,100000) C=rand(100000,1) D=rand(1,1000)
Est-ce que les instruction Scilab ((A*B)*C)*D et A*(B*(C*D)) calculent la même chose?
Quel est l'ordre de grandeur du rapport entre les temps de calcul associés? (On pourra vérigier la réponses avec les intructions tic et toc de Scilab, mais on demande une réponse reposant uniquement sur des arguments théoriques)


Pour le premier exo je ne vois pas où est l'absurdité.
Pour l'exo deux j'ai décomposer le produit terme à terme, j'ai dis que A est de taille 10 x 100 B : 100 x 100000 C : 100000 x 1 et D : 1 x 1000
J'en déduit qu'on a 110 000 000 0 multiplications (ca me parraît grand comme nombre mais bon...)
J'ai également trouver pour le premier produit un temps de 0.3587111 m/s


Merci

Posté par
Sundae
Scilab 27-02-17 à 21:26

Bonsoir à tous.

J'ai plusieurs petits exercices à faire sur Scilab et il y'en a dont je n'y arrive pas.

Consigne : Expliquer, dans chaque cas ci-dessous, pourquoi la définition de la fonction proposée est erronée ou absurde


function p = f5(n)
p = p + f5(n-1)
endfunction

funtion p = f6(n)
if n>0
p=p+f6(n-1)
end
endfunction

Et puis un autre exercice :

Consigne : On considère les matrices A,B,C et D défini par A = rand(10,100) B=rand(100,100000) C=rand(100000,1) D=rand(1,1000)
Est-ce que les instruction Scilab ((A*B)*C)*D et A*(B*(C*D)) calculent la même chose?
Quel est l'ordre de grandeur du rapport entre les temps de calcul associés? (On pourra vérigier la réponses avec les intructions tic et toc de Scilab, mais on demande une réponse reposant uniquement sur des arguments théoriques)


Pour le premier exo je ne vois pas où est l'absurdité.
Pour l'exo deux j'ai décomposer le produit terme à terme, j'ai dis que A est de taille 10 x 100 B : 100 x 100000 C : 100000 x 1 et D : 1 x 1000
J'en déduit qu'on a 110 000 000 0 multiplications (ca me parraît grand comme nombre mais bon...)
J'ai également trouver pour le premier produit un temps de 0.3587111 m/s


Merci

*** message déplacé ***

Posté par
mathafou Moderateur
re : Scilab exercice 28-02-17 à 12:13

Bonjour,

la première fonction ne s'arrête jamais : elle s'appelle et s'appelle elle même jusqu'à débordement de la pile

la seconde fonction s'arrête bien, mais lors de son dernier appel (avec n = 0) elle ne retourne aucune valeur
et donc en retournant à l'appel précédent il est impossible de calculer p + f6(0) vu que f6(0) n'a aucune valeur.

pour le calcul des matrices il faut bien comprendre ce que fait le produit de deux matrices de dimensions axb et bxc

il y a ac termes dans le résultat (une matrice axc) et chaque terme nécessite b multiplications (et b-1 additions, mais "on les néglige")
donc abc multiplications

ainsi dans le calcul du premier produit de la première expression, on calcule une matrice 10x105 en 10*100*105 = 108 multiplications

puis on fait le produit de cette matrice 10x105 résultat par une matrice 105x1
donc en 10*105*1 = 106 opérations
on a donc effectué jusque la 108 + 106 = 101000000 multiplications

reste le dernier produit de cette matrice 10x1 par D de dimension 1x1000
ceci donne une matrice 10x1000 en 10*1*1000 = 104 multiplications

au total on a donc effectué 108 + 106 + 104 = 101010000 multiplications pour calculer la première expression telle qu'elle est écrite (avec les parenthèses là où elles sont)

fais pareil avec la seconde (ordre des opérations différent)
le nombre de multiplications effectuées est différent !! (même si le résultat est le même car le produit de matrices est associatif)
d'où la question : quel est le rapport des deux

ta mesure me semble douteuse ...
(mais je n'ai pas scilab pour vérifier, et peut être qu'il est trop intelligent et effectue ses produits de matrices par d'autres methodes plus économiques et/ou son compilateur prend l'initiative de changer de lui-même les parenthèses)

Posté par
Sundae
re : Scilab exercice 28-02-17 à 19:24

Merci beaucoup pour cette aide



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !