Показать сообщение отдельно
  #2  
Старый 08.03.2012, 16:59
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

собственно, тут задача состоит из 2х частей.
1. Если переданный X0 выходит за пределы значений Хов
2. Если он внутри значений.
В обоих случаях расчет будет одинаковый, а вот нахождение точек для него - разное. Сам расчет - надо расчитать коэф. по 2м точкам и просто тупо по формуле Y0 = k*X0 посчитать. K = (y2-y1)/(x2-x1).

В общем, как-то так:
Код:
function GetK(X0 : Double) : Double;
begin
  If X0 < X[0] Then Result := (Y[1]-Y[0])/(X[1]-X[0]) Else
    If X0 > X[9] Then Result := (Y[9]-Y[8])/(X[9]-X[8]) Else
      For I := 0 To 8 Do
        If X0 > X[i] Then
          Begin
            Result := (Y[I+1]-Y[i]) / (X[I+1]-X[i]);
            Break;
          End;
end;

function GetY0(X0 : Double) : Double;
var
  K : Double;
begin
  K := GetK(X0);
  Result := X0 * K;
end;
Ответить с цитированием