Вот это что за ахинея?
Цитата:
Сообщение от oleum
if (x[i-1]<=xp) and (xp<=x[i-1])
|
Вероятно, имеется в виду
if (x[i-1]<=xp) and (xp<=x[i
+1])?
Повнимательнее, пожалуйста.
Далее - при вычислении коэффициентов a, b и c в квадратичной интерполяции у Вас дроби (числитель и знаменатель) перевернуты.
Могу привести формализм, которым сам пользуюсь (отлаженный и проверенный). Если парабола проходит через точки с координатами (X1,Y1), (X2,Y2), (X3,Y3) и требуется определить значение Y в точке X, лежащей между X1 и X3, то
Код:
det:=(X1-X2)*(X2-X3)*(X1-X3);
A:=(Y1*(X2-X3)+Y2*(X3-X1)+Y3*(X1-X2))/det;
B:=(Y1*(X3*X3-X2*X2)+Y2*(X1*X1-X3*X3)+Y3*(X2*X2-X1*X1))/det;
C:=(Y1*X2*X3*(X2-X3)+Y2*X1*X3*(X3-X1)+Y3*X1*X2*(X1-X2))/det;
Y:=A*X*X+B*X+C;
Линейной интерполяции я у Вас вообще не вижу.
Теперь насчет аппроксимаций, линейной и квадратичной. Формализм достаточно подробно изложен, например, здесь:
http://edu.dvgups.ru/METDOC/ENF/VMAT...GZ/frame/2.htm
Надеюсь, запрограммировать все эти суммы Вы сумеете.