web-dev-qa-db-fra.com

Convertir l'échelle linéaire en logarithmique

J'ai une échelle linéaire qui varie de 0,1 à 10 avec des incréments de changement à 0,1:
| ---------- [] -------
0,1 5,0 10

Cependant, la sortie doit vraiment être:
| ---------- [] ---------- |
0,1 1,0 10 (échelle logarithmique)

J'essaie de comprendre la formule nécessaire pour convertir le 5 (par exemple) en 1.0. Par conséquent, si le cadran était déplacé à mi-chemin entre 1,0 et 10 (la valeur réelle sur une échelle linéaire étant de 7,5), quelle serait la valeur logarithmique résultante? J'y pense depuis des heures, mais je n'ai pas travaillé avec ce type de mathématiques depuis quelques années, donc je suis vraiment perdu. Je comprends le concept de base du journaldixX = 10y, mais c'est à peu près tout.

La valeur de pseudo de 5,0 deviendrait 10 (ou 101) alors que la valeur de pseudo-10 serait de 10dix. Alors, comment représenter la pseudo-valeur --- (et la valeur logarithmique résultante de, disons, le 7,5?

Faites-moi savoir si des informations supplémentaires sont nécessaires.

Merci pour toute aide fournie; cela m'a battu.

33
TurdPile

Notation

Comme c'est la convention à la fois en mathématiques et en programmation, la fonction "log" est prise pour être base-e. La fonction "exp" est la fonction exponentielle. N'oubliez pas que ces fonctions sont inverses, nous considérons les fonctions comme:

exp: ℝ → ℝ+, et

journal: ℝ+ → ℝ.

Solution

Vous venez de résoudre une simple équation ici:

y = a exp bx

Résoudre pour a et b en passant par les points x = 0,1, y = 0,1 et x = 10, y = 10.

Observez que le rapport y1/ y2 est donné par:

y1/ y2 = (a exp bx1)/(a ​​exp bx2) = exp b (x1-X2)

Ce qui vous permet de résoudre pour b

b = log (y1/ y2)/(X1-X2)

Le reste est facile.

b = log (10/0,1)/(10 - 0,1) = 20/99 log 10 ≈ 0,46516870565536284

a = y1 / exp bx1 ≈ 0,09545484566618341

En savoir plus sur la notation

Dans votre carrière, vous trouverez des personnes qui utilisent la convention selon laquelle la fonction de journal utilise la base e, la base 10 et même la base 2. Cela ne signifie pas que quiconque a raison ou tort. C'est simplement une convention de notation et tout le monde est libre d'utiliser la convention de notation qu'il préfère.

La convention en mathématiques et en programmation informatique est d'utiliser le logarithme de base e, et l'utilisation de base e simplifie la notation dans ce cas, c'est pourquoi je l'ai choisi. Ce n'est pas la même que la convention utilisée par les calculatrices telles que celle fournie par Google et votre TI-84, mais là encore, les calculatrices sont destinées aux ingénieurs et les ingénieurs utilisent une notation différente de celle des mathématiciens et des programmeurs.

Les langages de programmation suivants incluent une fonction de journal de base-e dans la bibliothèque standard.

En fait, je ne peux pas penser à un langage de programmation singlelog() est autre chose que le logarithme base-e. Je suis sûr qu'un tel langage de programmation existe.

44
Dietrich Epp