Как предсказать числовые последовательности, т. Е. Excel? - PullRequest
3 голосов
/ 24 июля 2011

В Excel есть замечательная функция, при которой, если вы введете 1, 2, 3 в три последовательные ячейки, а затем выберите ячейки и перетащите их вниз, он автоматически заполнит остальные ячейки как 4, 5, 6, 7.и т. д. Он также может соответствовать больше шаблонов.Например, если бы я сделал 2, 4, 6, 8, он бы узнал, что я добавляю 2, а затем предложил бы 10, 12, 14 и т. Д.

Как Excel узнает, какие числа?Они жестко кодируют различные случаи (то есть, добавляя некоторую константу, вычитая некоторую константу, умножая на некоторую константу), или есть какой-то алгоритм, который может автоматически предсказать это для вас?(Этот вопрос должен быть независимым от языка, но если это поможет, я хочу сделать это в jQuery)

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 июля 2011

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

1 голос
/ 28 июля 2011

Если вы хотите сделать это более обобщенно, чем в Excel (только сложение или вычитание постоянных значений), взгляните на некоторые алгоритмы интерполяции с точки зрения численных методов. Эта статья в викибуке - хороший учебник.

0 голосов
/ 24 июля 2011

В Excel он работает только с добавлениями и вычитаниями (насколько я знаю, я только что попробовал с умножениями, и результаты не следуют той же схеме, что и оригиналы).

Зная это, я думаю, что было бы легко рассчитать разницу между первыми двумя ячейками, а затем проверить разницу между ячейкой 2 и ячейкой 3, чтобы увидеть, одинакова ли она. Затем вы можете применить это преобразование к ячейкам, которые хотите предсказать.

*Example*

Cell1: 2
Cell2: 5
Cell3: 8

if(cell2 - cell1 == cell3 - cell2)
    cell4 = cell3 + (cell2-cell1); //Cell4 will now be 11 since it increments by steps of 3

Затем можно использовать цикл for, который скопирует требуемое значение во все выбранные ячейки (если вы хотите, чтобы следующие десять ячеек следовали шаблону, используйте цикл for или while, который обновит значение этих 10 клетки)

...