Prix dégressif en fonction d'une superficie — Les-mathematiques.net The most powerful custom community solution in the world

Prix dégressif en fonction d'une superficie

Bonjour,
Je suis actuellement entrain de développer un site internet portant sur la vente de tableau peint sur commande et je suis confronté à un problème d'ordre mathématique.

Les prix des articles doivent être calculés dégressivement sur la base de la superficie de la toile à peindre (plus la superficie de la toile augmente et plus le prix au cm2 diminue).

En sachant que la superficie minimum qui est de 1200cm2 coûte 0.0292€/cm2 et que la superficie maximum qui est de 28800cm2 coûte 0.0112€/cm2.

:S Connaîtriez-vous la formule mathématique permettant de mettre en place ce type de tarification ?

Merci d'avance.
SebastieZ

Réponses

  • Bonjour.

    On appelle cela de l'interpolation linéaire. Si une quantité A varie linéairement en fonction d'une quantité B, A valant a si B vaut b, A valant a' si B vaut b', alors la valeur a" de A lorsque B vaut b" est donnée par :
    $\frac{a"-a}{b"-b}=\frac{a'-a}{b'-b}$
    qui exprime le fait que les variations de valeurs de A et B sont proportionnelles. On en tire facilement :
    $a" = a+(b"-b)\times\frac{a'-a}{b'-b}$
    dans ton cas, tu connais a et b (prix 0.0292€/cm2 et 1200 cm²), a' et b' (idem), et b" est la taille demandée.

    Tu peux aussi simplifier en utilisant le prix à la place du prix au cm², prendre a=32€ et a'=322,5 € et trouver directement le prix a".

    Cordialement.
  • Salut Gérard,
    Gérard a écrit:
    Tu peux aussi simplifier en utilisant le prix à la place du prix au cm², prendre a=32€ et a'=322,5 € et trouver directement le prix a".

    Tu suggères une interpolation linéaire sur le prix total ? Il me semble que ça ne donne pas le même résultat qu'une interpolation linéaire sur le prix au $cm^2$ (mais en fait c'est peut-être plus naturel).
  • Tu as raison, Egoroff.

    Et ça m'avait traversé l'esprit, puis à la fin de mon message, j'y suis revenu en pensant plus à ce que j'écrivais qu'à son sens mathématique. -1 pour moi !

    SébastieZ : Les deux méthodes ne donnent pas le même résultat. Avec la première, les petits tableaux valent moins qu'avec la deuxième. Et inversement pour les grands.

    Cordialement.
  • Je vote pour ta deuxième méthode Gérard, car sinon le prix du tableau devient négatif à partir d'une certaine superficie ! Alors qu'avec l'interpolation sur le prix, le prix par centimètre carré est strictement décroissant mais possède une limite $>0$ lorsque la surface demandée tend vers $+\infty$.
  • Rafff... la formule est correct et franchement merci de vous y être penchés dessus et surtout pour ces explications vraiment claires et très facilement compréhensibles.
    Cependant (et je vais certainement abuser de votre gentillesse une fois de plus) les tarifs obtenus sur les formats intermédiaires sont trop élevé pour rapport à la tarification que je souhaiterai apposer à chaque format. Je vais donc devoir modifier quelque peu le problème.

    Disons que la superficie minimum qui est de 1200cm2 coûte 0.0292€/cm2 et que la superficie maximum qui est de 28800cm2 coûte 0.0112€/cm2 mais une superficie de 7000cm2 coûte 0.015€/cm2.

    Ça donne donc un système de 3 équations à 3 inconnues et un graphique courbe. (trop dure pour moi )

    :S Y arriverez-vous ???
  • SebastieZ,

    le plus simple est de faire la même chose (interpolation linéaire) dans les deux intervalles de prix. On peut évidemment faire passer une courbe du second degré par les trois points, mais ça donne autre chose : La fonction $x\mapsto 0,000000824x^2-0,03123873843x+328,3$ donne une approximation du second degré qui correspond à tes contraintes. Elle a juste un petit problème : Pour une surface de 19000, le prix est de 0,0032 €/cm², très largement en dessous du prix pour 28800. C'est une conséquence de ton choix ! comme elle doit descendre très rapidement entre 1200 et 7000, elle descend encore longtemps avant de se redresser (la courbe est une parabole), puis doit remonter pour obtenir le bon résultat pour 28800.

    Donc si tu tiens à faire baisser rapidement le prix pour des surfaces faibles, choisis plutôt des variations linéaires sur chaque intervalle de prix.

    Cordialement.
  • (:P) Effectivement cela pose problème. Il m'est évidement pas possible d'appliquer une tel tarification cependant grâce à votre aide, je commence à atteindre mon but.

    Pourrais-tu m'écrire de façon simple et claire comme tu l'as si bien fait dans les précédents postes précédents (avec a a' b b' etc...) la formule qui t'a amené à ce résultat. Cela me permettrai d'ajuster les valeurs afin de réussir à obtenir une bonne courbe de prix.

    D'avance merci pour votre soutient.
    :)-D
  • Pour cette courbe d'ajustement, tu trouveras la formule générale pour n points en tapant "interpolation polynomiale" ou "polynômes de Lagrange" dans un moteur de recherche. Par exemple on trouve cela.
    Mais la technique n'est pas idéale (tu as pu le constater !). Je te le redis, sauf nécessité absolue, la décomposition en intervalles sur lesquels on fait une interpolation linéaire est le plus simple : On détermine dans quel intervalle on est puis on applique la fonction de l'intervalle.

    Cordialement.

    NB : Une grosse formule bien compliquée n'est généralement pas une bonne solution, sauf pour frimer.
  • Bonjour,
    J'ai donc repris vos explications de départ et j'ai donc résonné de la manière suivante :

    2 équations à 2 inconnues de la forme Y=Xa+b
    avec dans la 1ère équation qui est Y1=X1a+b
    • Y1 = 0.0292
    • X1 = 1200
    et dans la 2ème équation qui est Y2=X2a+b
    • Y2 = 0.0112
    • X2 = 28800

    J'obtien le résultat suivant :
    • a = (Y1-Y2) / (X1-X2) = -6,52174E-07
    • b = Y1-(X1*a) = Y1-(X1*a) = 0,029982609

    Mais lorsque j'application la formule à la liste de mes formats, j'obtient le graphique suivant
    graph1.jpg
    A la vue de cette représentation graphique, je m'aperçois qu'il un problème lorsqu'on arrive sur des grandes superficies. Il n'est pas normal que le prix d'une superficie de 22230cm2 est une tarification au cm2 plus élever qu'une superficie de 28800cm2 puisque la courbe des tarifs recherchés doit être dégressive.

    En comparaison, voici ce que pourrait donner (en rouge) approximativement la fonction que je recherche
    graph2.jpg

    :S Auriez-vous une idée de comment m'y prendre ?
  • Rafff... j'ai oublié d'expliquer les graphiques :
    A droite, le prix de vente d'un tableau
    En bas, la superficie d'un tableau au cm2

    Voilà ;)
  • Désolé, mais je ne comprends rien à tes courbes.

    Si j'ai bien suivi, le prix au cm² Y est donné en fonction de la superficie en cm² X par :
    $Y=-6,52174\times 10^{-7}X +0,029982609$, soit encore
    $Y=-0,000000652174 X +0,029982609$. Donc le prix est
    $Y=-0,000000652174 X^2 +0,029982609 X$
    Soit tu as n'importe quel format entre 1200 et 28800, donc une courbe continue qui, avec un prix au cm² linéaire donnera une courbe parabolique (rien à voir avec ta courbe en bleu); soit tu as seulement quelques formats (disons une vingtaine, voire une centaine), et il n'y a pas de courbe continue, seulement des points, mais tous situés sur cette courbe parabolique.

    Donc il y a manifestement un problème de tracé de tes courbes. Pour ma part, j'obtiens :
    file.php?2,file=20356

    J'ai représenté aussi de 0 à 1200 pour simplifier.
    Et le fait que le prix pour 23000 cm² est supérieur au prix pour 28800 est une conséquence de ton exigence : prix au cm² dégressif linéairement.

    Depuis le début, je me demande pourquoi tu tiens à raisonner sur le prix au cm² et pas sur le prix, tout simplement. Une courbe proche de ta courbe bleue peut facilement être trouvée.

    Cordialement.20356
  • Je pense que l'aspect irrégulier des courbes de SebastieZ vient du fait que les valeurs des abscisses ne sont pas régulièrement espacées.

    Par ailleurs, je continue à penser que l'interpolation linéaire sur le prix total est préférable. On cherche une fonction $P(S)$, affine sur $[1200;7000]$ et $[7000;28800]$, et telle que $P(1200)=35,04$, $P(7000)=105$ et $P(28800)=322.56$. On trouve aisément que :
    - si $1200 \leq S \leq 7000$, on a $P(S)=35,04 + 0,01206 \times (S-1200)$ ;
    - si $7000 \leq S \leq 28800$, on a $P(S)=105 + 0,00998 \times (S-7000)$ ;
    Les pentes étant très proches, on distingue à peine le changement sur le graphique :
    20357
    20358
  • Tu as raison, Egoroff !

    Du coup, j'ai l'impression que SebastieZ ne nous a pas tout dit. Est-ce que les prix sont fixés ? Pourquoi tient-il absolument à une formule plutôt qu'à un tableaux de prix (les prix au cm² étant calculés immédiatement si on fait le tableau avec un tableur) ?

    Cordialement.
  • La raison pour laquelle je cherche à appliquer une fonction plutôt qu'un tableau de prix c'est afin de permettre au client d'entrer directement ses dimensions sur-mesure et obtenir automatiquement le prix.

    Pour l’irrégularité des courbes de mes graphiques, c'est parce que j'ai précisé une liste de formats dans mon tableau excel. Ce que je voulais souligner en particulier, c'était la décroissance du prix au cm2 sur les plus grand format.

    Je vais me pencher sur la solution amicalement donner par egoroffski sur une interpolation linéaire du prix total qui à la vue des graphiques obtenus, semble pouvoir répondre à mes recherches.

    :)-D Je tiens déjà à vous remercier pour votre soutient mais surtout pour le temps et l'attention que vous mettez pour formuler une réponse simple et constructive. Encore merci (tu)

    Je pose ça dans mon tableau excel et je tiens au courant.
  • Ok,

    mais que ton programme utilise une fonction ou un tableau, c'est transparent pour l'utilisateur. L'avantage du tableau (*), c'est que si tu décides de changer les prix, tu n'as qu'à écrire, pas calculer. Par exemple si tu décides de faire 10% de remise sur les grands tableaux, il et suffit de modifier le tableau auquel se réfère ton programme.

    Cordialement.

    (*) En plus de traduire réellement ta politique de prix.
  • Alors après une suite de tests, le résultat obtenu par interpolation linéaire du prix total est concluant.
    Je remercie gerard0 et egoroffski pour m'avoir apporté la solution à mon problème.

    Pourquoi une fonction et non pas un tableau ?
    La boutique va proposer une liste de formats dans les standards mais également des formats sur-mesure ou l'utilisateur entrera lui-même la largeur et la hauteur du tableau qu'il souhaitera acheter et devra donc en connaitre le prix. Évidement, les prix des formats standards et ceux des formats définis par l'utilisateur doivent être calculés de la même manière afin qu'ils appartiennent à une même logique.

    Donc problème se résout avec 2 équations à 2 inconnues
    thumb.php?dt=20110726&msg=25&th=2
    avec a et b (prix 35€ et 1200 cm2),
    a' et b' (prix 321.8€ et 28800cm2),
    et b" est la taille demandée.
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!