собственно, тут задача состоит из 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;