CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

calcul formel->factorisation

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 20:01:54

salut,

j'ai crée sur ma calculatrice(programmation en basic) un programme permettant de calculer la dérivée d'une fonction, et ceci, plusieurs fois de suite(très pratique pour le développement limité). J'ai eu beaucoup de mal, mais j'ai réussi, j'y ai meme intégré la simplfication.
Par contre, pour les fonctions très lourdes, l'utilité de ce programme est discutable, parce qu'il est absolument incapable de factoriser, ce qui rend le résultat très très lourd, surtout quand on dérive plusieurs fois une fonction. Il faudrait, dans l'idéeal, pouvoir factoriser, et ceci de la façon la plus pertinente possible; j'ai eu beau chercher, j'ai pas trouvé d'algorithme satisfaisant, je ne sais pas comment m'y prendre.

Je me demandais donc si ici, quelqu'un pourrait m'aider à régler ce problème, et il me faudrait un expert, parce qu'à priori, le niveau de connaisance en algorithmique nécessaire pour faire ça doit etre très élevé!
merci d'avance

saleGauss
saleGauss
Niveau 9
22 octobre 2010 à 20:24:39

Ce que tu demande est certes clair, mais dépend de ce que tu veux réellement en sortie.

Si c'est avoir un reulstat le "plus joli" possible, il faudrait que tu décrives (bien) plus formellement ce que tu entends par là.
Car si je calcule la dérivée d'une fonction à la main et toi aussi, il y a peu de chances pour qu'on représente le résultat de la même manière. Cela est assez subjectif.

Commence donc par poser des exemples simple, dis nous aussi quels opérateurs ton programme gere-il en entrée, et par conséquent les opérateurs que l'on peut trouver sur ta forumle de sortie (exponentiation, log, ...).
Il faut que l'on puisse savoir exactement :
- Tout ce qui peut constituer une formule en sortie
- De manière formelle, spécifier (de la facon la plus complete possible), comment caractérier la manière dont doit etre représenté ta sortie.

A mon sens, le plus gros de ton probleme sera de la spécification
A partir de là, on pourra commencer à se diriger vers un algorithme de manière assez naturelle. C'est tout le rôle de la partie de spécification pour un problème comme le tiens.

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 21:12:25

tout d'abord, merci d'avoir pris la peine de répondre saleGauss

concernant le programme, celui ci gère toute les fonctions, du logarithme à la racine carrée, en passant par les cosinus et les puissances. le programme constitue différents blocs dans le calcul, et fait une arborescence , il les empile les un dans les autres, et effectue les règles de dérivation en gardant les blocs tel quels, j'entend par là qu'au différents étapes de calcul, il ne simplifie pas et ne factorise pas, il fait juste une simplification à l'intérieur des différents bloc obtenus, à la fin uniquement

exemple
f(x)= (racine(24x^3 + 40x - 12x² -20))

on obtiendra sur le programme
f'(x)=((72x²+40-24x)/(2*(racine(24x^3 + 40x - 12x² - 20))))

alors que j'aimerais obtenir
f'(x)=((36x²-12x+ 20)/ (8x-4)*(3x²+5))

bien sur ce n'est pas très important sur une dérivée si simple, mais ça devient primordial quand s'emboîtent divisions, puissances et racines carrées

godrik
godrik
Niveau 30
22 octobre 2010 à 21:24:10

Je pense qu'il manque une racine au denominateur. Une partie de ce que tu demande n'est pas si difficile. Quand tu as un polynome, tu peux le trier par degre decroissant. Et quand tu as une fraction avec que des entiers, tu peux extraire les facteurs premiers dans un premier temps pour faire une simplification apres.

Par exemple. le numerateur est : "72x²+40-24x" tu peux le representer de facon interne par "(2*2*2*3*3*x^2 + 2*2*2*5 - 2*2*2*3*x)" puis par "2*2*2*(3*3*x^2 + 5 - 3*x)" Du fait, la simplification devient plus facile.

Ca ne fera bien sur pas toutes les operations que tu veux, mais ca va deja simplier certaines expressions

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 21:47:50

j'ai effectivement oublié la racine au dénominateur.
C4est vrai que je pourrais déjà factoriser les polynomes, mais comment ensuite faire le lien avec les autres éléments de la fonction pour trouver le résultat le plus simplifié? parce que si je factorise de telle façon un polynome, je risque de perdre un facteur évident commun au reste du calcul, ce qui risque au final de rendre le calcul encore plus lourd; je sais pas si je suis clair?

godrik
godrik
Niveau 30
22 octobre 2010 à 21:56:31

Tu fais juste cette factorisation pour virer des termes quand tu as une fraction et tu les remet apres.

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 22:08:54

tu as msn godrik?

godrik
godrik
Niveau 30
22 octobre 2010 à 22:20:30

oui, mais non.

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 22:22:00

voila qui n'est pas très aimable! enfin tu as quand meme répondu à mes questions merci

godrik
godrik
Niveau 30
22 octobre 2010 à 22:23:52

c'est pas personnel. J'ai plein d'autre choses a faire :) Discutter sur un forum me permet de repondre quand j'en ai le temps, c'est asynchrone. MSN ne l'est pas, du fait c'est beaucoup plus intrusif dans ma gestion du temps.

rattata_niveau2
rattata_niveau2
Niveau 7
22 octobre 2010 à 22:28:54

je vois no prob. tu as suivi des cours sur le calcul formel, où c'était un éclair de génie? :noel:

godrik
godrik
Niveau 30
22 octobre 2010 à 22:32:02

J'ai du faire du calcul formel quelque part dans ma formation. Mais je ne vois pas d'autre facon de faire.

Tu simplifie les fractions en fonctions de leur facteurs commun. donc l'idee naive est d'extraire tous les facteurs premier et de voir ce que tu peux virer.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment