Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
672 connectés 

  FORUM HardWare.fr
  Programmation

  [C] Calcul d'une dérivée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Calcul d'une dérivée

n°66968
antsite
Je me souviens
Posté le 22-10-2001 à 20:56:29  profilanswer
 

comment faire pour calculer la dérivée d'une fonction :
5x^2+3x+1
on applique une fonction dessus et ça nous sort 10x+3.
Je vois vraiment pas comment faire ! Help !

mood
Publicité
Posté le 22-10-2001 à 20:56:29  profilanswer
 

n°66969
barbarella
Posté le 22-10-2001 à 21:04:10  profilanswer
 

d'une fonction quelconque ou d'un polynome seulement ? dansle premeir cas c'est très compliqué dans le second c'est assez simple

n°66970
darkoli
Le Petit Dinosaure Bleu
Posté le 22-10-2001 à 21:09:11  profilanswer
 

Ben si tu ne dois traiter que des polynomes, c'est super facile !!!
 
Tu stock les coefs dans un tableau genre :
 
[1 3 5] dans un tableau, 1 et dans la case0 donc c'est le coef de degré 0, etc ...
 
Faire la derivée consiste à diminuer le degré de ta fonction.
 
int fct[20];
int degre=2;
 
fct[0]=1;
fct[1]=3;
fct[2]=5;
 
for (int i=1;i<=degre;i++) {
  fct[i-1]=fct[i]*i;
  }
fct[degre]=0;
 
voila c'est facile !!!

n°66998
sombresong​e
Posté le 22-10-2001 à 22:33:42  profilanswer
 

Pour une foction numérique quelconque tu dois commencer par écrire un moteur de calcul formel en suite tu lui apprend les règle de dérivation...

n°67031
El_gringo
Posté le 23-10-2001 à 08:57:52  profilanswer
 

ou alors, tu te prends moins la tête pour un résultat logiquement plus stable et performant : tu cherches sur le net une librairie mathématique qui à les fonctions nécessaires. ça doit forcément être trouvable (si tu trouves un truc, ça serai sympa de me dire ou tu l'as trouvé, ça m'interresse pas mal ce style de trucs...

n°67072
LetoII
Le dormeur doit se réveiller
Posté le 23-10-2001 à 10:49:19  profilanswer
 

T'as juste à faire un analyseur syntaxique....
 
Bon tu passe ton expression sous forme d'arbre tu identifie les fonctions courrantes dont les dérivées sont connues, tu parcours ton arbre de façon à respecter les raigles de dérivations et voilà... si t'es patient j'ai un pote qui upload un code dessus demain (par contre c du C++ mais ça doit être facilement portable en C)

n°67094
El_gringo
Posté le 23-10-2001 à 11:37:10  profilanswer
 

moi, ça m'interresse ... tu pourras me l'envoyer ce code !?

n°67095
Sebastien
Posté le 23-10-2001 à 11:39:46  profilanswer
 

idem too me

n°67098
BENB
100% Lux.
Posté le 23-10-2001 à 11:53:52  profilanswer
 

Leto II > le plus simple c'est sans doute que tu en donnes les references...

n°67193
mordicus34​0
Posté le 23-10-2001 à 17:25:22  profilanswer
 

tu achetes une TI 89  ;)

mood
Publicité
Posté le 23-10-2001 à 17:25:22  profilanswer
 

n°67201
El_gringo
Posté le 23-10-2001 à 17:45:41  profilanswer
 

c les sources qui nous interresse ... dériver des fonctions, en général, ça va, j'y arrive !

n°67226
LetoII
Le dormeur doit se réveiller
Posté le 23-10-2001 à 19:09:33  profilanswer
 

Pour l'algo comme c un peu long ceux qui le veulent envoie un mail à : jhell2000@hotmail.com

n°67279
flo850
moi je
Posté le 23-10-2001 à 22:11:34  profilanswer
 

je l'ai eu en TP en licence:  
 
tu fais un arbre a partir de l'expression , chq noeud est un operateur ou un nombre ( stocké sous forme de char *)
 
apres tu derive ton arbre de maniere recursive en partant de la racine :
 
            +                +
derivée ( /   \   ) =      /    \
         A     B    derivée(A) derivée (B)
 
et ainsi de suite avec * / -


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

n°67295
sombresong​e
Posté le 23-10-2001 à 23:12:24  profilanswer
 

LetoII a écrit a écrit :

T'as juste à faire un analyseur syntaxique....




 
Il faut faire un peu plus qd même: un analyseur gramatical en faite.
 
Et Aussi avant de dériver un arbre il faut aussi s'assurer que la dériver ait un sens... mais bon si tu arrive déjà à construire l'arbre correctement t'as presque gagner

n°67297
flo850
moi je
Posté le 23-10-2001 à 23:30:08  profilanswer
 

c clair , on a fait ce TP au debut de la licence , le prof nous a filé une fct qui prenait un exp et retournait un arbre .Nous on a juste fait le TAD arbre et la fct de derivation . Ca a pris 2 semaine
on a eu a refaire cette fct en compil , il m'a fallut 2 semaine aussi ,mais avec un an de programmation de plus


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

n°67305
sombresong​e
Posté le 24-10-2001 à 00:12:24  profilanswer
 

En fait pour pouvoir esperer y arriver il faut pas penser +,-,*,/,cos,sin ...
mais penser Opérateur et opérande: Unaire (Cos,exp...) Binaire (+,-,*,/)
 
puis penser quoi qui as la priorité sur quoi
 
*,/ devant +,- ça fait 2 familles là! puis continuer à analyser la langue mathématique (En fait ya toute une littérature dessus...)
 
PS: Pour construire l'arbre on est pas obliger de le construire phisiquement (File de frère + pointeur vers premier frère gauche...) mais on peut s'ensortire avec des pile et de file...
 
Mais pour faire du calcul formel vaut mieux pouvoire reproduire la structure de l'arbre à partir des piles...
 
 
Pour ce qui veulent s'y attaqué je conseil déjà de partir d'expression en polonaise(inverse) parceque foncer direct dans le langage mathématique sans avoir aucune connaissance des grammaires c trop Hard (c faisable mais trop dure)!

n°67366
flo850
moi je
Posté le 24-10-2001 à 12:56:27  profilanswer
 

sombresonge a écrit a écrit :

En fait pour pouvoir esperer y arriver il faut pas penser +,-,*,/,cos,sin ...
mais penser Opérateur et opérande: Unaire (Cos,exp...) Binaire (+,-,*,/)
 
puis penser quoi qui as la priorité sur quoi
 
*,/ devant +,- ça fait 2 familles là! puis continuer à analyser la langue mathématique (En fait ya toute une littérature dessus...)
 
PS: Pour construire l'arbre on est pas obliger de le construire phisiquement (File de frère + pointeur vers premier frère gauche...) mais on peut s'ensortire avec des pile et de file...
 
Mais pour faire du calcul formel vaut mieux pouvoire reproduire la structure de l'arbre à partir des piles...
 
 
Pour ce qui veulent s'y attaqué je conseil déjà de partir d'expression en polonaise(inverse) parceque foncer direct dans le langage mathématique sans avoir aucune connaissance des grammaires c trop Hard (c faisable mais trop dure)!  




 
il est genial il a tout compris .
c'est exactement ce qu'il faut faire .
le plus simple est de ne s'occuper que des binaires au debut , puis on ajoute les unaires ( on garde tjrs la struc d'arbre binaire , mais certains noeud n'ont q'un fils ) et si tu est un peu plus sauvage , apres tu traites les opérateurs n-aires...


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

n°67384
H4dd3R
Q2
Posté le 24-10-2001 à 14:03:00  profilanswer
 

sombresonge
d'expression en polonaise(inverse)
?? Quezako??


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°67388
tgrx
My heart is pumping for love
Posté le 24-10-2001 à 14:18:48  profilanswer
 

H4dd3R a écrit a écrit :

sombresonge
d'expression en polonaise(inverse)
?? Quezako??  




 
ca correspond au parcours postfixe de l'arbre défini ci-dessus

n°67399
H4dd3R
Q2
Posté le 24-10-2001 à 14:47:21  profilanswer
 

Pquoi ça s´appelle Polonaise?? Comme un mathématicien??

n°67426
BENB
100% Lux.
Posté le 24-10-2001 à 16:03:48  profilanswer
 

H4dd3R a écrit a écrit :

Pquoi ça s´appelle Polonaise?? Comme un mathématicien??  




C'est un polonais qui a propose cette notation qui permet d'eviter les parentheses
2+3 -> + 2,3  
2*(3+4) -> * 2, + 3,4 ou avec parentheses * 2,(+ 3,4)
 
et sur ses calculatrices, HP utilise la polonaise inversee
2+3 -> 2,3 +
2*(3+4) -> 2 3 4 + * .... oui la c'est un peu plus dur...

n°67431
Je@nb
Kindly give dime
Posté le 24-10-2001 à 16:35:31  profilanswer
 

y en ont qui on déjà programmer un calcul formel ?
car on m'a demandé de faire une app qui fait les dérivations et autres calcul : factorisation ...
si qqn l'a déjà fait, pourrait-il nous donner l'algo ?

n°67432
antsite
Je me souviens
Posté le 24-10-2001 à 16:41:30  profilanswer
 

Ca m'intéresse aussi beaucoup ! :)

n°67512
flo850
moi je
Posté le 24-10-2001 à 22:46:46  profilanswer
 

je n'ai fait que la derivation en C sous linux et je ne pense pas que ce soit exploitable pour la factorisation .
Si ca t'interesse , je peux tu mailer les .c et .h.


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

n°67514
sombresong​e
Posté le 24-10-2001 à 22:53:42  profilanswer
 

Je@nb a écrit a écrit :

y en ont qui on déjà programmer un calcul formel ?
car on m'a demandé de faire une app qui fait les dérivations et autres calcul : factorisation ...
si qqn l'a déjà fait, pourrait-il nous donner l'algo ?  




 
J'en ai fait un début: l'analiseur de l'expression et sa décomposition en un Arbre. ça m'as prit 2 mois. Pour la factorisation, l'integration ... il faut vraiment que tu prenne un bon gros bouquins sur le calcul formel parceque c très chaud à expliquer!

n°67523
flo850
moi je
Posté le 24-10-2001 à 23:28:48  profilanswer
 

sombresonge a écrit a écrit :

 
 
J'en ai fait un début: l'analiseur de l'expression et sa décomposition en un Arbre. ça m'as prit 2 mois. Pour la factorisation, l'integration ... il faut vraiment que tu prenne un bon gros bouquins sur le calcul formel parceque c très chaud à expliquer!  




ca depend ce que tu veus faire : faire leTAD arbre + derivé un arbre => 2 semaines
on avait dejala fonction de construction d'un arbre a partir d'une exp


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

n°67524
flo850
moi je
Posté le 24-10-2001 à 23:31:13  profilanswer
 

j'oublias on a traiter +- * / sin cos et j'ai rajouter : n variables , sans avoir


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

n°67525
flo850
moi je
Posté le 24-10-2001 à 23:32:08  profilanswer
 

j'oublias on a traiter +- * / sin cos et j'ai rajouter : n variables , tan ,ln , (petite )simplification  
.L'integration est plus dure


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

n°67526
sombresong​e
Posté le 24-10-2001 à 23:35:35  profilanswer
 

flo850 a écrit a écrit :

 
on avait dejala fonction de construction d'un arbre a partir d'une exp  




 
Je n'avais pas cette fonction. En faite je n'avais même pas l'algo pour le faire. J'ai dut chercher un peu tout seul avec des bouquins - > 2mois pour capter le pourquoi du comment et implémenter tut ça proprement.

n°67540
El_gringo
Posté le 25-10-2001 à 09:01:32  profilanswer
 

tgrx a écrit a écrit :

 
 
ca correspond au parcours postfixe de l'arbre défini ci-dessus  




 
super, il est bien avancé maintenant qu'il sais que ce le parcout postfixe... l'explication de départ était plus claire !

n°67543
youdontcar​e
Posté le 25-10-2001 à 09:07:14  profilanswer
 

pour faire un parser d'expression simple (+ - / *) en une demie heure chrono, c'est par ici : http://compilers.iecc.com/crenshaw/
 
c'est la seule ressource potable que j'aie trouvée sur le sujet. ça a dix ans, c'est en pascal et ça compile du 68000 (!). c'est néanmoins très bien expliqué et convertible (tissable ?) en C très rapidement. ensuite, on peut améliorer sa méthode pour faire un cas général : une fonction récursive qui parcourt une table d'opérateurs avec leur précédence & associativité, construire l'arbre (utile pour la lazy evaluation), etc.

n°67640
Je@nb
Kindly give dime
Posté le 25-10-2001 à 16:26:28  profilanswer
 

En fait moi je cherche ça car ma Ti 89 me sert bien mais j'ai envie de porter ça à d'autre langages mais vu que je suis une bite en prog, je pense que ça va être impossible à faire.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C] Calcul d'une dérivée

 

Sujets relatifs
Sujet: Algo de calcul du N°série Win et le product ID ????En PHP, calcul sur une date
Routines d'interpolation (calcul numérique)calcul en asp
Plus de sujets relatifs à : [C] Calcul d'une dérivée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR