Показать сообщение отдельно
Старый 12.10.2014, 19:11   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот это что за ахинея?
Цитата:
Сообщение от 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
Надеюсь, запрограммировать все эти суммы Вы сумеете.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070