|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
bkm
Inscrit le: 21 Oct 2010 Messages: 14
|
Posté le: 16 Avr 2011 12:39 Sujet du message: Procédure [ Un peu plus pour terminer ... ] |
|
|
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+
Dernière édition par bkm le 17 Avr 2011 16:41; édité 2 fois |
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 16 Avr 2011 16:55 Sujet du message: |
|
|
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 |
|
|
bkm
Inscrit le: 21 Oct 2010 Messages: 14
|
Posté le: 16 Avr 2011 17:51 Sujet du message: |
|
|
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 ?
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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 17 Avr 2011 6:59 Sujet du message: |
|
|
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 |
|
|
bkm
Inscrit le: 21 Oct 2010 Messages: 14
|
Posté le: 17 Avr 2011 11:14 Sujet du message: |
|
|
Citation: |
Comme vous n'avez pas remercié, ceci cloturera le sujet. |
Pas de print et crochet - Ok - sujet cloturé
-------------------------------------------
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
|
|
|
Revenir en haut de page |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 17 Avr 2011 17:07 Sujet du message: |
|
|
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 |
|
|
bkm
Inscrit le: 21 Oct 2010 Messages: 14
|
Posté le: 17 Avr 2011 22:55 Sujet du message: |
|
|
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 .
|
|
Revenir en haut de page |
|
|
|
|
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
|
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.
|