 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 03 Mar 2016 16:55 Sujet du message: Généraliser une séquence redondante |
|
|
Bonjour ALS,
J'espère que vous allez bien et que vous avez un peu de temps pour les maths malgré votre autre site: )
Pourriez-vous s'il vous plaît m'aider afin de généraliser une séquence :
==========================================
restart;
Digits := 100;
p := 77;
f := (x)→ sqrt(p*x+1);
g := (x)→ (1/2)x;
h := (x)→(2/3)x;
m:= (x)→ (3/2)x
n:= (x)→ (4/3)x
a := [solve(f(x) = g(x))];
a1 := [solve(f(x) = h(x))];
a2 := [solve(f(x) = m(x))];
a3 := [solve(f(x) = n(x))];
b := seq(evalf(j), j = a);
c := seq(floor(i), i = a)
b1 := seq(evalf(j), j = a1);
c1 := seq(floor(i), i = a1);
b2 := seq(evalf(j), j = a2);
c2 := seq(floor(i), i = a2);
b3 := seq(evalf(j), j = a3);
c3 := seq(floor(i), i = a3);
==========================================
Comment éviter d'écrire à chaque fois a, a1, a2... b, b1, b2...en généralisant la séquence, de sorte que je n'aurais besoin que d'écrire les différentes fonctions autres que f(x) et que la séquence calcule après effectivement, les solutions de f(x)= g(x) , f(x) = h(x).... et calcule aussi les evalf..?
pourrait-on utiliser une seule fonction différente de f(x), par exemple g(x) et faire celle-ci prendre à chaque fois les valeurs voulues (1/2)x, (2/3)x, (4/3)x etc etc et résoudre à chaque valeur de g(x) la solution de f(x)=g(x) et les evalfs adéquats...? |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 04 Mar 2016 8:54 Sujet du message: |
|
|
Bonjour,
J'écris une procédure intitulée solutions de façon à généraliser le procédé.
On passe 2 paramètres formels à cette procédure : la valeur de p et une liste L de fonctions, par exemple ici p=77 et L:=[1/2*x,2/3*x,3/2*x,4/3*x].
La procédure donne comme résultats une liste de 3-listes de la forme [f(x)=g(x),b,c] en utilisant vos notations.
Code: |
> solutions:=proc(p::posint, L::list)
> local f,g,k,a,b,c,res;
> f:=unapply(sqrt(p*x+1),x);
> res:=NULL:
> for k in L do
> g:=unapply(k,x): a := [solve(f(x) = g(x))]:
> b:= seq(evalf(j), j = a):
> c:= seq(floor(i), i = a):
> res:=res,[f(x)=g(x),b,c]
> od:
> [res]
> end proc:
> solutions(77,[1/2*x,2/3*x,3/2*x,4/3*x]);
1/2
[[(77 x + 1) = x/2, 308.01298646542764836523948745855425677377\
3954294351609144601310098022405713065115379768045110001700\
1/2 2 x
4, 308], [(77 x + 1) = ---, 173.262986039611978044081560\
3
2259914052613222270727826703431746371106644882865773825431\
1/2 3 x
894659045908521, 173], [(77 x + 1) = ---, 34.23520431049\
2
6431202129324458336081551515625396308078623844002561377759\
1/2 4 x
04778013548247446989823735792, 34], [(77 x + 1) = ---, 4\
3
3.32548312123666272132639886689450100708417047361051429647\
127103596096181886418337361514568780295354, 43]]
|
Bonne continuation. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 04 Mar 2016 12:54 Sujet du message: |
|
|
Bonjour ALS,
Vous êtes génial : )
Merci Professeur : )
Bon week-end, à bientôt et portez-vous bien : ) |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 04 Mar 2016 15:40 Sujet du message: |
|
|
Re-Bonjour ALS,
Le programme est encore plus génial que je ne le pensais ; les résultats sont super bien ordonnés : )
Merci merci merci : ) |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 13 Juin 2016 14:41 Sujet du message: Généraliser une séquence redondante |
|
|
Bonjour ALS,
Encore besoin de votre aide s'il vous plaît pour généraliser une séquence.
Soit cette séquence :
=============================
restart;
Digits := 1000;
p := 15;
f := (x)->(2*p)/x;
a := seq(k, k = 1 .. 10):
L := []:
for k in a do if type(f(k), integer) then L := [op(L), [k, f(k)]]:
end if end do;
L;
=======================================
Ici f(x)=(2*15)/x
Mais le problème c'est que je voudrais faire varier le "p" ; j'ai utilisé la fonction séquence, cela ne fonctionne pas.
Au lieu que p=15 il faudrait que la séquence calcule à chaque fois les résultats pour p=15 pour p=21 pour p=77 etc ...
De sorte que dans la séquence je puisse mettre directement ces différentes valeurs de p dans une liste de la sorte :
p:=[15,21,77]
Cela m'éviterait donc à chaque fois d'écrire :
restart;
Digits := 1000;
p := 21;
f := (x)->(2*p)/x;
a := seq(k, k = 1 .. 10):
L := []:
for k in a do if type(f(k), integer) then L := [op(L), [k, f(k)]]:
end if end do;
L;
restart;
Digits := 1000;
p := 77;
f := (x)->(2*p)/x;
a := seq(k, k = 1 .. 10):
L := []:
for k in a do if type(f(k), integer) then L := [op(L), [k, f(k)]]:
end if end do;
L;
restart;
Digits := 1000;
p := 65;
f := (x)->(2*p)/x;
a := seq(k, k = 1 .. 10):
L := []:
for k in a do if type(f(k), integer) then L := [op(L), [k, f(k)]]:
end if end do;
L;
etc
Le problème est de faire une seule séquence où le p varie directement |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 15 Juin 2016 6:22 Sujet du message: |
|
|
Bonjour,
Il suffit de faire varier p pris dans une liste d'entiers liste_p grâce à une boucle for p in liste_p do ... end do:
Voici ce code :
Code: |
> restart;
> Digits := 1000;
> liste_p:=[15,21,77]:
> for p in liste_p do
> f := (x)->(2*p)/x;
> a := seq(k, k = 1 .. 10):
> L := []:
> for k in a do
> if type(f(k), integer) then L := [op(L), [k, f(k)]]:
> end if
> end do:
> print(L);
> end do:
Digits := 1000
[[1, 30], [2, 15], [3, 10], [5, 6], [6, 5], [10, 3]]
[[1, 42], [2, 21], [3, 14], [6, 7], [7, 6]]
[[1, 154], [2, 77], [7, 22]]
|
Bonjour à toute la petite famille. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 15 Juin 2016 16:07 Sujet du message: Généraliser une séquence redondante |
|
|
Bonjour ALS,
C'est génial ! Merci une fois de plus : )
Ici ça va, il manque juste le soleil ; de votre côté aussi on espère que ça marche et votre nouveau site : )
A bientôt Professeur : ) |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 16 Juin 2016 6:54 Sujet du message: |
|
|
Bonjour,
oui ça va bien, le temps est mitigé par contre en Bretagne.
Sinon, plus d'une centaine de pages réalisées sur le nouveau site, mais le compteur de visites a du mal à décoller.
Un sujet sans doute trop ardu ...
Les dernières pages sur les contraintes qui ont permis les évolutions en architecture, notamment les contraintes symboliques, devraient vous intéresser : plusieurs liens sur la page
http://millenaire1.free.fr/303_contraintes.html
jusqu'à "le ciel" est fait pour l'instant. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 17 Juin 2016 19:53 Sujet du message: |
|
|
Bonjour ALS,
Merci pour le lien, vous êtes un vrai polymathe !
Mais c'est un sujet "ardu" comme vous dîtes : )
Je regarderai les contraintes symboliques ;
A bientôt Professeur : ) |
|
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.
|