Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Procédure [ Un peu plus pour terminer ... ]

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
bkm



Inscrit le: 21 Oct 2010
Messages: 14

MessagePosté le: 16 Avr 2011 12:39    Sujet du message: Procédure [ Un peu plus pour terminer ... ] Répondre en citant

bonjour ,

J'ai trouvé une procédure qui passe bien

Code:

>

> max3:=proc(a::posint,b::posint,c::posint)

>         local max2;

>             max2:=proc(x::posint,y::posint)

>                 if x>y then x else y end if;

>             end proc;

>         max2(a,max2(b,c));

>     end proc;

> print();

proc(a::posint, b::posint, c::posint)  ...  end;

>

>                          max3(2, 5, 36)

> print();

                               36



Il me reste ensuite à trouver pourquoi celle que je tape ne donne rien .....


Code:


cuve:=proc(e);
local e
l := 1.7; r := .75; c := (l, r^2); pp := 3.141; vt := 3000
h:=r-e;

                            [                  /     2\
                            [      /h\         |    h |]
          v1 := h -> 1000 c [arccos|-| - h sqrt|1 - --|]
                            [      \r/         |     2|]
                            [                  \    r /]

if h>0 then print (v1(h));
else then print ( vt-v1(-h));
fi;
end proc;

cuve(0.5)  ## ne donne rien , la procedure n'est pas validée




C'est la toute première proc et c'est pour déterminer le volume cylindrique d'une cuve en fonction du niveau de remplissage

Comment valider chaque ligne , c'est ce que je cherche à savoir !!,

A+


Idea Question Very Happy


Dernière édition par bkm le 17 Avr 2011 16:41; édité 2 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 16 Avr 2011 16:55    Sujet du message: Répondre en citant

Bonjour,
Pas la peine de faire print();
Vous entrez l'ensemble des lignes dans le même groupe d'exécution précédé de > et vous faites shift+entrée à la fin de chaque ligne. Vous validez alors l'ensemble des lignes en faisant entrée à la fin de la dernière ligne du groupe.

Code:

> max3:=proc(a::posint,b::posint,c::posint)
 local max2;
  max2:=proc(x::posint,y::posint)
    if x>y then x else y end if;
  end proc;
 max2(a,max2(b,c));
end proc:



> max3(2, 5, 36);

                                  36


Deuxième procédure:

Code:

> cuve:=proc(e)
  local l,r,c,pp,vt,h,v1;
  l := 1.7; r := .75; c := (l, r^2); pp := 3.141; vt := 3000;
  h:=r-e;
  v1 := h -> 1000* c*(arccos(h/x)-h*sqrt(1-h^2/r^2)):
  if h>0 then v1(h)
   else vt-v1(-h)
  fi;
end proc:

 
> cuve(0.5);

                              /       0.25                \
           1000 (1.7, 0.5625) |arccos(----) - 0.2357022604|
                              \        x                  /


J'ai bien un résultat pour votre deuxième procédure après avoir corrigé.
Mais je doute de sa validité, la variable c valant (1.7, 0.5625), ça ne veut pas dire grand chose.

@+


Dernière édition par ALS le 17 Avr 2011 7:02; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bkm



Inscrit le: 21 Oct 2010
Messages: 14

MessagePosté le: 16 Avr 2011 17:51    Sujet du message: Répondre en citant

Code:


cuve := proc (e) h := .75-e; l := 1.7; r := .75; c := DotProduct(l, r^2); l := 1.7; r := .75; c := DotProduct(l, r^2); pp := 3.141; vt := 3000.000; if 0 <= h then print(1000*c*[arccos(h/r)-h*sqrt(1-h^2/r^2)]) else print(vt-1000*c*(arccos(-h/r)-h*sqrt(1-h^2/r^2))) end if end proc

cuve(1.2)                           1769.0240

C'est ok , la deuxième procédure passe . Comment passer la procedure
cuve() avec map sur une liste de valeur ??

J'ai essayé :

Code:


E := [0.15, 0.45, 1.2]
map(cuve(), E)
Error, (in cuve) cuve uses a 1st argument, e, which is missing


s := 0.15, 0.45, 1.2

whattype(s)                           exprseq

map(e -> cuve(e), s)        [271.09794]





Comment passer l'argument e de proc dans une liste avec map ?

Question Idea

Code:


seq(e, e = 0.5 .. 1.4, 0,1)        0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4
seq(cuve(e), e = 0.5 .. 1.4, 0.1)                           2190.4466



Dès que je met cuve dans la séquence , c'est la dernière valeur qui sort
- Pas possible d'avoir une séquence complète avec toutes les valeurs !!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 17 Avr 2011 6:59    Sujet du message: Répondre en citant

Bonjour,
Vous n'avez pas tenu compte de ce que j'avais déjà corrigé (suppression de print et des crochets). D'autre part DotProduct agit sur des vecteurs et non sur des réels. Ca ne passe pas sur Maple 15: c'est un simple produit à mon avis. Prenez aussi l'habitude de mettre des variables locales.


Code:

> cuve := proc (e)
> local h,l,r,c,pp,vt:
> h := .75-e; l := 1.7; r := .75; c := l* r^2;  pp := 3.141; vt := 3000.000; if 0 <= h then 1000*c*(arccos(h/r)-h*sqrt(1-h^2/r^2)) else vt-1000*c*(arccos(-h/r)-h*sqrt(1-h^2/r^2)) end if end proc:
 
> cuve(0.15);
 

                             271.0979353

> E := [0.15, 0.45, 1.2]:
> map(cuve,E);
 

               [271.0979353, 845.6357232, 1769.023948]



Comme vous n'avez pas remercié, ceci cloturera le sujet.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bkm



Inscrit le: 21 Oct 2010
Messages: 14

MessagePosté le: 17 Avr 2011 11:14    Sujet du message: Répondre en citant

Citation:


Comme vous n'avez pas remercié, ceci cloturera le sujet.


Pas de print et crochet - Ok - sujet cloturé

Very Happy

-------------------------------------------

Avant de terminer vu que cuve est une fonction par morceau et continue , je n'obtiens rien avec plot ...

Code:


plot ( cuve(e) , e=0..1.5 ) donne empty plot





Question Cool
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 17 Avr 2011 17:07    Sujet du message: Répondre en citant

E:=[seq(e*0.015,e=0..100)]; plots[listplot](map(cuve,E));

Vous savez, je ne suis qu'un bénévole qui prend un peu de son temps pour se mettre au service des utilisateurs.
Ceci me donnera peut-être droit à un petit merci?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bkm



Inscrit le: 21 Oct 2010
Messages: 14

MessagePosté le: 17 Avr 2011 22:55    Sujet du message: Répondre en citant

Les structures récursives de maple sont mal documentés - Alors un
bénévole est plus que nécessaire .

Indispensable - Le gouffre est grand entre ce que propose les
quelques manuels du débutant et la réalité des données dans
un contexte expérimental de base .

Modéliser de l'équation différentielle , je ne vois que cela dans la littérature comme si c'était la base de maple !!

Passez à la vente de vos conseils , je pense que beaucoup de débutants perdront moins de temps à lire des publications stériles et inutiles proposés par de grands éditeurs du livre scientifique .


Very Happy
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.