2017-03-31 2 views
0

Je n'ai pas beaucoup fait attention en cours de maths, et ce problème me pose tellement de problèmes. J'essaie de créer une fonction pour estimer les prix en fonction des quantités, sur une courbe logistique. Je n'ai pas encore décidé de la pente ou du point médian, j'allais jouer avec jusqu'à ce que je l'aime, mais le point de départ est 1 et le point final est 7,5. résoudre: si une quantité de 12 a une valeur de 1 sur la courbe, et qu'une quantité de 500 a une valeur de 7,5 sur la courbe, comment puis-je obtenir la valeur d'une quantité de 48? J'ai fait des recherches toute la journée sur les raccords courbes et toutes ces formules algébriques, mais les convertir en un algorithme de programmation s'avère difficile, et ne pas savoir tous les bons termes n'aide pas ma recherche. Toute aide est très appréciée!!!Obtenir la valeur entre deux points sur une courbe

Nous vous remercions de votre temps.

+0

Il n'y a pas de bonne réponse quant à * comment * le prix devrait varier avec la quantité. La réponse est vraiment: vous pouvez adapter n'importe quelle courbe entre les deux points, alors c'est facile à calculer. Mais jusqu'à ce que vous décidiez que vous ne pouvez pas vraiment inverser une fonction inconnue en PHP. – avy

+0

Eh bien, vous n'avez pas besoin de nous pour la roue pertinente et l'adaptation de ces formules aussi. – hassan

+0

Il existe des équations de courbes infinies qui possèdent deux points mais seulement une équation de ligne droite: https://www.mathsisfun.com/straight-line-graph-calculate.html – dparoli

Répondre

0

Vous devez d'abord décider du type de fonction que vous souhaitez adapter à vos points. Je suppose, pour cet exemple, que vous souhaitez faire un ajustement linéaire. Cela signifie que vous chercherez une ligne qui passe par les deux points que vous avez donnés. L'objectif final est d'avoir une fonction y = mx + b où x et y sont les variables et m et b sont les paramètres que vous calculez à partir de vos points donnés. Dans votre cas, x sera la quantité. Une fois que vous avez trouvé des nombres pour m et b, vous devez simplement coder une fonction qui renvoie y lorsque vous entrez x.

Vos deux points (que la ligne doit traverser) sont (x, y) = (12,1) et (500, 7,5). La façon dont vous trouvez m et b est de traiter m et b comme les variables et de brancher les deux points donnés et de résoudre pour m et b. Ainsi, vous voulez résoudre ces deux équations simultanées: 1 = m * 12 + b 7,5 = m * 500 + b

Une façon de le faire est de résoudre la première équation b: b = 1 - m * 12. Ensuite, branchez cela dans la deuxième équation, c'est-à-dire, remplacez b dans la deuxième équation par (1 - m * 12) puis résolvez m, comme ceci: 7,5 = m * 500 + 1 - m * 12 m = 6.5/488 Maintenant que vous avez m, vous le rebranchez dans la première équation et résolvez b: 1 = 12 * 6.5/488 + b ou b = 1 - 12 * 6.5/488. Ceux-ci ne sortent pas comme de beaux nombres propres mais ils sont approximativement b = 0.84 et m = 0.0133.

Vérifiez votre travail pour voir que y = 0.0133 * x + 0.84 passe, en fait, à travers vos deux points donnés. Autrement dit, si x vaut 12, vous devez calculer y est approximativement égal à 1 et si x vaut 500, vous devez calculer y est approximativement égal à 7,5. Puisque j'ai arrondi les valeurs de m et b, cela ne sera pas exact. Vous pouvez l'obtenir plus précisément en spécifiant m dans votre fonction comme 6.5/488 et de même pour b (laissez l'ordinateur faire le calcul) ou en utilisant simplement plus de chiffres. Si vous voulez ajuster une ligne courbe à ces points, vous devez d'abord décider quel type de fonction vous allez adapter (quadratique, exponentielle, racine carrée, logarithme, autre loi de puissance, etc.).