Я не уделял много внимания на уроках математики, и эта проблема доставляет мне столько хлопот. Я пытаюсь создать функцию для оценки цен на основе количества, на логистической кривой. Я еще не определился с крутизной или средней точкой, я собирался играть с ней, пока не получу ее там, где она мне нравится, но начальная точка равна 1, а конечная точка равна 7,5.
Таким образом, в основном, функция должна решить: если количество 12 имеет значение 1 на кривой, а количество 500 имеет значение 7,5 на кривой, то как мне получить значение 48?
Я целый день проводил исследования фитингов кривой и всех этих алгебраических формул, но преобразование их в алгоритм программирования оказывается трудным, и незнание всех правильных терминов не помогает моему поиску. Любая помощь высоко ценится!!!
Спасибо за ваше время.
Сначала вам нужно решить, какую функцию вы хотите использовать в соответствии с вашими требованиями. Для этого примера я предполагаю, что вы хотите выполнить линейную подгонку. Это означает, что вы будете искать линию, которая проходит через две точки, которые вы дали. Конечная цель состоит в том, чтобы иметь функцию y = mx + b, где x и y — переменные, а m и b — параметры, которые вы вычисляете по вашим заданным точкам. В вашем случае х будет количество. Как только вы нашли числа для m и b, вы просто кодируете функцию, которая возвращает y при вводе x.
Ваши две точки (через которые должна пройти линия): (x, y) = (12,1) и (500, 7,5). То, как вы находите m и b, состоит в том, чтобы рассматривать m и b как переменные, вставлять две заданные точки и решать для m и b. Таким образом, вы хотите решить эти два уравнения:
1 = м * 12 + б
7,5 = м * 500 + б
Один из способов сделать это — решить первое уравнение для b: b = 1 — m * 12.
Затем включите это во второе уравнение, то есть замените b во втором уравнении на (1 — m * 12), а затем решите для m, например, так:
7,5 = m * 500 + 1 — m * 12, что дает m = 6,5 / 488
Теперь, когда у вас есть m, вы включаете его обратно в первое уравнение и решаете для b: 1 = 12 * 6,5 / 488 + b или b = 1 — 12 * 6,5 / 488. Они не выглядят как хорошие чистые числа, но они приблизительно b = 0,84 и m = 0,0133.
Проверьте свою работу, чтобы увидеть, что у = 0,0133 * х + 0,84, фактически, проходит через две ваши заданные точки. То есть, если х равен 12, вы должны вычислить у приблизительно 1, а если х 500, вы должны вычислить у приблизительно 7,5. Поскольку я округлил значения m и b, это не будет точным. Вы можете получить это более точно, указав m в своей функции как 6.5 / 488 и аналогично для b (пусть компьютер выполнит математику) или просто используя больше цифр.
Если вы хотите подогнать изогнутую линию к этим точкам, вы должны сначала решить, какую функцию вы будете использовать (квадратичная, экспоненциальная, квадратный корень, логарифм, другой степенной закон и т. Д.).
Других решений пока нет …