[Résolu] Courbe de différence à partir de 2 autres courbes

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.

[Résolu] Courbe de différence à partir de 2 autres courbes

Messagepar bouyoul » 27 Août 2010 16:52

Bonjour,

J'ai un graphique qui représente deux courbes d'évolution (nuage de point) mais à partir de données n'ayant pas la même abscisse. Voir capture d'écran pour plus de clarté...
J'ai besoin de générer une courbe (et éventuellement les données, donc interpolées) représentant la différence entre ces deux courbes. En théorie, pour un x donné, je fais la différence des y mais comme je n'ai pas de x en commun sur mes plages de données, il faut que je considère chaque segment linéaire pour faire la différence pour chaque x.
Alors après avoir un peu cherché, je viens vers vous pour savoir si quelqu'un s'est déjà retrouvé dans cette situation ou aurait une piste de réflexion à offrir, ou s'il faut que j'utilise autre chose qu'un tableur pour faire ça...

h**p://img405.imageshack.us/i/capture1hc.png/ image localisée sur un site tiers
Ooo 3.1 + ubuntu9.10
bouyoul
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 27 Août 2010 16:39

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar KristofRenaud » 27 Août 2010 17:22

C'est faisable, puisque tu peux considérer chaque segment d'une courbe comme une ligne droite d'équation y = ax + b et tu peut retrouver les valeurs de a et b avec les deux couples (x,y) des points de début et de fin du segment. Ensuite, avec cette équation tu pourras trouver la valeur y du x de ton autre courbe se trouvant "sur" ce segment.

Avec ça, tu pourras recalculer tous les points qui te manque et faire ta différence.

Par contre, cela risque d'etre "un peu artisanal", donc faisable mais au coup par coup. Je veux dire que si tu dois faire cela pour 50 séries de 2 courbes chaque jour, ca a être chaud, je pense :fou:

Si tu fourni un fichier plutôt qu'une simple copie d'écran, je pourrais te monter un truc de démo
Christophe

Libreoffice 3.4.2 sous Windows XP SP2/SP3 + Windows 7 Premium 64 bits
Avatar de l’utilisateur
KristofRenaud
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 322
Inscrit le : 08 Mai 2009 14:33
Localisation : Le Havre (Seine-Maritime / France)

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar Jean-Louis Cadeillan » 27 Août 2010 19:41

Bonsoir,
Ce fil est à consulter ; il s'agit de moyennes et non de différences, mais ça peut te donner des idées...
Cordialement
Jean-Louis
LibO 6.1.6.3 (x64 avec Java 1.8.0_221) et AOO 4.1.6 (avec Java x32 1.8.0_201), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4381
Inscrit le : 03 Jan 2009 00:56

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar jbfaure » 27 Août 2010 22:05

Bonsoir bouyoul,

Il y a quelques années je m'étais fait une fonction Calc pour interpoler une fonction définie par une série de couples (X,Y). Elle a trois arguments : une série d'abscisses (par exemple A1:A10), la série d'ordonnées correspondantes (par ex. B1:B10) et la valeur X pour laquelle on veut une estimation de la fonction. L'interpolation est linéaire et la fonction détecte les deux abscisses qui encadrent X ou si X est en dehors de l'intervalle. Je ne me souviens pas ce que j'avais choisi de faire dans ce dernier cas, sans doute un prolongement, mais lequel ?

Si ça t'intéresse, je peux la fournir. Comme elle est sur mon ordinateur professionnel envoie moi un message personnel pour que j'y pense lundi.

Une fois que tu as une fonction d'interpolation, il suffit de créer une troisième série de données avec un pas en abscisse assez fin et sur laquelle tu fais la différence des interpolations de tes deux courbes. Par exemple dans le cas que tu donnes en exemple, tu prends une série avec un pas en abscisse de 1 et tu interpoles tes deux courbes sur ces nouvelles abscisses puis tu fais la différence. Si tu sais d'avance que l'interpolation linéaire donne de bons résultats sur tes deux courbes, alors le résultat final devrait être bon.

Bonne soirée
JBF
LibreOffice 6.1 (avec la dernière mise à jour corrective) sous Linux Ubuntu 18.04
Listes de discussions francophones : http://nabble.documentfoundation.org/Fr ... 44075.html
jbfaure
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 365
Inscrit le : 10 Juil 2008 07:42
Localisation : Lyon - France

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar Jean-Louis Cadeillan » 28 Août 2010 03:08

Toujours sur le principe de l'interpolation linéaire, je propose un classeur
DifGraphiques.ods
Différence entre courbes échantillonnées
(78.57 Kio) Téléchargé 425 fois
qui calcule automatiquement la courbe (Y2-Y1), différence entre la courbe 2 et la courbe 1. Les X sont récupérés des deux courbes, classés, doublons éliminés, les Y correspondants sont retrouvés ou, s'ils n'existent pas sur l'une des deux courbes, interpolés linéairement (comme l'expose jbfaure)
Les cellules en jaune clair sont à renseigner, les cellules en violet clair et les courbes sont calculées automatiquement. Les formules sont remplies jusqu'à la ligne 100. Les colonnes intermédiaires sont masquées pour juger du résultat final, ces colonnes doivent être affichées si l'on veut suivre la progression du calcul. Il aurait sans doute été possible de regrouper davantage les formules, mais ç'aurait été au détriment de la clarté. Par exemple, je fais une colonne pour chaque choix possible :
  • choix 1 : une valeur particulière de l'abscisse est référencée par la courbe 1 mais pas par la 2
  • choix 2 : une valeur particulière de l'abscisse est référencée par la courbe 2 mais pas par la 1
  • choix 3 : cette valeur est référencée sur les deux courbes
Chacun de ces choix nécessite une formule d'interpolation différente ; ces colonnes O à R ne sont pas indispensables, puisque la colonne S regroupe ces différentes formules grâce à la fonction CHOISIR()...mais ce regroupement est assez indigeste.
Attention, l'interpolation linéaire, dans l'exemple fourni, est plus précise pour la courbe 2, mieux échantillonnée, que la courbe 1...
Ne pas confondre interpolation et extrapolation ! Le point X=140 n'a pas d'équivalent possible pour la courbe 2, qui s'arrête au point X=136, donc pas de différence calculée, la formule en tient compte.
Cordialement
Jean-Louis
LibO 6.1.6.3 (x64 avec Java 1.8.0_221) et AOO 4.1.6 (avec Java x32 1.8.0_201), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4381
Inscrit le : 03 Jan 2009 00:56

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar bouyoul » 28 Août 2010 17:25

Merci beaucoup pour vos réponses et explications... Je connaissais la méthode artisanale, mais effectivement il faut que je génère ce genre de graphique pour un paquet de cas, et je me doutais qu'on pouvait faire ça de façon semi-automatisée.
Encore merci, cela va beaucoup m'aider.
Ooo 3.1 + ubuntu9.10
bouyoul
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 27 Août 2010 16:39

Re: générer courbe de différence à partir de 2 autres courbe

Messagepar Bidouille » 28 Août 2010 17:33

Bonsoir,

Si votre problème est résolu, il est alors de bon ton d'ajouter dans le titre du premier message la balise [Résolu]. Ceci augmente la lisibilité du forum. Vous vous en êtes sûrement rendu compte en parcourant les différents fils de discussion.

Nous l'avons fait à votre place mais la prochaine fois, nous vous prions de le faire vous-même.

Vous avez illustré votre question avec des fichiers en provenance d'un site tiers. Or, souvent ces sites n'assurent aucune pérennité sur les données qu'ils hébergent.

C'est pour cela que nous préférerons que vous utilisiez notre service de pièce-jointe dont le lien est mentionné en bas lorsque vous écrivez votre message : ftopic10246-comment-joindre-un-fichier-sur-ce-forum.html

Veuillez corriger votre message en utilisant le bouton "Editer" (situé à droite) et en mettant en ligne votre fichier correctement.

Vous en remerciant par avance.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 10037
Inscrit le : 08 Nov 2005 17:23
Localisation : Brest, France


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 5 invité(s)