Je veux ajouter un nombre à une variable. Ce nombre doit être plus grand lorsque la variable est petite et plus petit lorsque la variable est grande. J'ai calculé les valeurs optimales : lorsque var=1, la fonction doit ajouter 125. Lorsque var=50, la fonction doit ajouter 420. J'ai pensé à la fonction sin, mais je n'ai aucune idée de comment "personnaliser" cette fonction pour qu'elle fonctionne. (J'utilise php)
Réponses
Trop de publicités?La fonction sinus est périodique et ne convient probablement pas à cette tâche.
Votre exemple n'est pas clair : vous dites d'ajouter "un plus grand nombre lorsque var est petit et un plus petit nombre lorsque var est plus grand", mais vous ajoutez 125 à 1 et 420 à 50, ce qui contredit le texte.
Une possibilité est la fonction réciproque - elle répond à vos exigences déclarées mais pas à celles de votre exemple.
Avec seulement 2 points de données, nous pouvons déduire une relation linéaire :
y = 125 + (420 - 125) / (50 - 1) * (x - 1)
qui est approximativement :
y = 119 + 6x
Vérifiez :
x = 1; y = 125
x = 50; y = 419
Le facteur 6 approximatif est un arrondi de 6,0204081632 ... ce qui constitue une séquence intrigante dans la partie fractionnaire.
Pour une fonction avec la forme :
f[x_] := x + Sin[y*x + z]
Sous réserve des contraintes
f[1] == 1 + 125 && f[50] == 50 + 420
Vous avez
{{y -> 1/49 (-ArcSin[125] + ArcSin[420]),
z -> 1/49 (50 ArcSin[125] - ArcSin[420])}}
qui est approximativement
{{y -> 0. - 0.0247338 I, z -> 1.5708 - 5.49671 I}}
Entre 0 et 70, cela donne :
Une fonction approximative, utilisant uniquement des valeurs réelles, est :
f(x) = x + 121.94629730754633 cosh(0.02473378688005212 x) +
121.94219707312345 sinh(0.02473378688005212 x)