Формула для уменьшения большего числа - PullRequest
3 голосов
/ 09 мая 2011

Я, честно говоря, не могу придумать, что искать, но то, что я пробовал, не дало никаких результатов, поэтому я прошу прощения, если его уже спросили.

Это также больше математический вопрос, чем вопрос программирования, но я делаю это на JavaScript, и это кажется вполне подходящим.

Что я хочу сделать, так это уменьшить число больше, чем оно выше. Например, 10 может быть уменьшено до 9, а 100 - до 20. Я пытался использовать само число и деление, но, очевидно, это просто возвращает фиксированное число. Я также пробовал простое деление, но все это слишком сильно уменьшало меньшие числа и мало влияло на более высокие числа по сравнению. Есть ли какая-нибудь формула, чтобы сделать это, используя JavaScript-объект Math?

Ответы [ 3 ]

4 голосов
/ 09 мая 2011

Из двух приведенных вами примеров вы можете найти шкалу децилогов:

function reduce(x) {
    return 10 * Math.log(x) / Math.LN10 ;
}

Для ваших примеров

reduce(100) = 20
reduce(10)  = 10
1 голос
/ 09 мая 2011

Наконец, хороший пример использования Wolfram Alpha:

http://www.wolframalpha.com/input/?i=best+fit+[10%2C+9]%2C+[100%2C+20]

1 голос
/ 09 мая 2011

Несколько математических функций, которые могут оказать некоторую помощь:

  1. Квадратный корень (или любой корень в целом)
  2. Функция журнала (для базы, которая работает для ваших нужд масштабирования)

Объедините их с умножением результата или ввода на константу и / или добавлением значения к результату или вводу, и вы сможете найти достаточное количество вариантов масштабирования.

Вы могли бы даже рассмотреть объединение этих функций.

Быстрый способ увидеть, как выбранная вами функция будет масштабировать числа, - это ввести их в графический калькулятор (или wolframalpha.com) и просмотреть график для различных входных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...