[Matlab] Incrémentation variable fonction
Résolu/Fermé
galere-en-stage
-
22 mai 2009 à 11:49
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 24 mai 2009 à 14:41
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 24 mai 2009 à 14:41
A voir également:
- [Matlab] Incrémentation variable fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
6 réponses
poukkid
Messages postés
106
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
11 avril 2012
11
22 mai 2009 à 15:19
22 mai 2009 à 15:19
Salut
Je suis pas certain d'avoir parfaitement compris ton problème, néanmoins je te conseillerais d'utiliser deux variables f, soit f1 et f2, afin de sauvegarder f(x) et f(x+1)
quel langage utilise tu?
en pseudo-code semblable au tiens(si c'est un langage, je ne connais pas désolé), je serais tenté de ne pas faire de boucle for, mais d'incrémenter la variable x entre les sauvegardes de f(x) et f(x+1) :
x=1
while (x<=5)
f1=(x-3).^2;
x=x+1
f2=(x-3).^2;
if f1>f2
disp('fonction decroissante') ;
else
disp('fonction croissante') ;
end
end
Je fais deux trois tests et si j'ai mieux je te préviens...
Précise le langage s'il te plaît.
Je suis pas certain d'avoir parfaitement compris ton problème, néanmoins je te conseillerais d'utiliser deux variables f, soit f1 et f2, afin de sauvegarder f(x) et f(x+1)
quel langage utilise tu?
en pseudo-code semblable au tiens(si c'est un langage, je ne connais pas désolé), je serais tenté de ne pas faire de boucle for, mais d'incrémenter la variable x entre les sauvegardes de f(x) et f(x+1) :
x=1
while (x<=5)
f1=(x-3).^2;
x=x+1
f2=(x-3).^2;
if f1>f2
disp('fonction decroissante') ;
else
disp('fonction croissante') ;
end
end
Je fais deux trois tests et si j'ai mieux je te préviens...
Précise le langage s'il te plaît.
poukkid
Messages postés
106
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
11 avril 2012
11
22 mai 2009 à 15:35
22 mai 2009 à 15:35
Mmmh je suis habitué aux langages type C et j'ai interprété
f=(x-3).^2;
comme une déclaration de variable or c'est une fonction, évidemment.
Quoi qu'il en soit la méthode que je t'ai donné avec 2 variables fonctionne de la même façon que la fonction, mais est un peu plus lourde évidemment.
Par contre si f=(x-3).^2; déclare bel et bien une fonction, je ne vois pas ou pourrait être le problème, il semble être uniquement relatif au langage que tu utilises, en C c'est très simplement implémentable.
f=(x-3).^2;
comme une déclaration de variable or c'est une fonction, évidemment.
Quoi qu'il en soit la méthode que je t'ai donné avec 2 variables fonctionne de la même façon que la fonction, mais est un peu plus lourde évidemment.
Par contre si f=(x-3).^2; déclare bel et bien une fonction, je ne vois pas ou pourrait être le problème, il semble être uniquement relatif au langage que tu utilises, en C c'est très simplement implémentable.
poukkid
Messages postés
106
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
11 avril 2012
11
22 mai 2009 à 16:02
22 mai 2009 à 16:02
J'ai cru comprendre que c'était du Matlab.
Tes problèmes viennent peut-être de ta façon d'utiliser les fonctions,
j'ai trouvé ce lien qui pourrait peut-être t'aider, je ne peux pas faire mieux, j'utilise pas Matlab, déosle.
http://ufrmeca.univ-lyon1.fr/~buffat/COURS/MATLAB_HTML/node11.html
Tes problèmes viennent peut-être de ta façon d'utiliser les fonctions,
j'ai trouvé ce lien qui pourrait peut-être t'aider, je ne peux pas faire mieux, j'utilise pas Matlab, déosle.
http://ufrmeca.univ-lyon1.fr/~buffat/COURS/MATLAB_HTML/node11.html
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
377
22 mai 2009 à 17:27
22 mai 2009 à 17:27
Bonjour mes amis !
Le problème est juste que le f=(x-3).^2; est mal placé ;-)
PS : Comme poukkid le mentionnait, le langage de programmation n'est pas précisé dans le message initial, ni dans le titre d'ailleurs. Je vais demander un changement de titre à la modération, comme cela ce sera plus clair si un jour quelqu'un cherche quelque chose et que le sujet apparaît dans la liste des résultats ;-)
Le problème est juste que le f=(x-3).^2; est mal placé ;-)
x=(1:5); f=(x-3).^2; for p=1:4 if f(p)>f(p+1) disp('Fonction décroissante') ; else disp('Fonction croissante') ; end endCependant, l'exemple est quelque peu biaisé par le fait que la variable x et l'indice p du vecteur f prennent les mêmes valeurs, voici donc un exemple où l'on verra mieux la différence :
x=linspace(1,5,25); f=(x-3).^2; for p=1:numel(f)-1 if f(p)>f(p+1) disp('Fonction décroissante') ; else disp('Fonction croissante') ; end endComme tu dois le savoir, Matlab tourne assez souvent plus vite lorsqu'on utilise au mieux la vectorialisation. Ici, la version vectorialisée est moins rapide que la version avec boucle que j'ai écrite (il y a probablement mieux cela dit) mais si tu désires voir ce que cela pourrait donner (c'est toujours intéressant et cela peut resservir), je proposerais ceci par exemple :
n=25; x=linspace(1,5,n); f=diff((x-3).^2); %% increase=repmat('Fonction croissante ',n-1,1); decrease=repmat('Fonction décroissante',n-1,1); screen=repmat('Fonction constante ',n-1,1); %% screen(f>0,:)=increase(f>0,:); clear increase; screen(f<0,:)=decrease(f<0,:); clear decrease; disp(screen);Je te souhaite une bien bonne journée !
PS : Comme poukkid le mentionnait, le langage de programmation n'est pas précisé dans le message initial, ni dans le titre d'ailleurs. Je vais demander un changement de titre à la modération, comme cela ce sera plus clair si un jour quelqu'un cherche quelque chose et que le sujet apparaît dans la liste des résultats ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est bien du matlab, j'étais sure de l'avoir précisé mais bon, désolée. En tout cas merci pour l'aide, je pense que ca devrait marcher maintenant
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
377
24 mai 2009 à 14:41
24 mai 2009 à 14:41
Ce n'est pas grave ;-)
Un oubli peut arriver quand on écrit un message aussi long. Mais ce qui est dommage c'est quand l'oubli concerne une information importante :-D
Cela dit, lorsqu'un message contient un morceau de code, les personnes habituées au langage en question cernent assez vite la demande, donc c'est beaucoup moins gênant que pour un message du type :
Bonjour
Je voudrais programmer ceci.
Merci d'avance
En tout cas il n'y a pas de quoi ;-)
Bonne fin de week-end et à la prochaine !
Un oubli peut arriver quand on écrit un message aussi long. Mais ce qui est dommage c'est quand l'oubli concerne une information importante :-D
Cela dit, lorsqu'un message contient un morceau de code, les personnes habituées au langage en question cernent assez vite la demande, donc c'est beaucoup moins gênant que pour un message du type :
Bonjour
Je voudrais programmer ceci.
Merci d'avance
En tout cas il n'y a pas de quoi ;-)
Bonne fin de week-end et à la prochaine !