2013-05-08 11 views
0

У меня есть программа на C#, которая запрашивает у пользователя 4 значения. Они:Линейные уравнения

MinIndex, MaxIndex, MinValue, MaxValue

Я хочу, чтобы иметь возможность определить значение для любого данного индекса в пределах [MinIndex MaxIndex] диапазона. Диапазон индексов не всегда будет таким же, поэтому мне нужно сначала его найти и использовать его как-то.

В качестве примера сказать

 
MinIndex=250, MaxIndex=750 the range is 500; 
MinValue=0.025, MaxValue=0.254 range is 0.229. 

Если я сделать valueRange/indexRage я получаю 0.000458.

Это число позволяет мне сделать любой индекс «267» и умножить его на 0.000458, и я получу значение для этого индекса.

Однако это работает с 0-500. Как я могу использовать мои исходные индексы, скажем, [250-750] и иметь одно значение, которое я могу умножить, чтобы получить это значение для этого индекса, т.е. [298 *?]

Расчет является линейным и потому, что я знаю значение от максимального индекса и значения индекса min, я знаю, что есть способ выработать остальные.

Извините, если это глупый вопрос, но математика не один из моих точек струны

большого спасибо заранее

ответ

1

Формула:

(Значение - MinValue)/(MaxValue-MinValue) = (индекс - MinIndex)/(MaxIndex - MinIndex)

решающему по значению:

value = (MaxValue-MinValue) * ((Index-MinIndex)/(MaxIndex-MinIndex)) + MinValue

1

вычитают MinIndex из индекса и разделите на диапазоне индекса, дает значение от 0 до 1. Это означает, насколько вы далеко от MinIndex на пути к MaxIndex.

Умножьте диапазон значений на это соотношение и добавьте MinValue, чтобы получить результат.

Это известно как линейная интерполяция

 Смежные вопросы

  • Нет связанных вопросов^_^