Показать сообщение отдельно
Старый 12.10.2014, 18:44   #2 (permalink)
oleum
Новичок
 
Регистрация: 24.02.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вот что мне удалось написать по поводу интерполяции, но не факт что правильно.....а как быть с аппроксимацией? кто-нибудь может помочь?
Цитата:
Program interpol;
uses crt;

const N=20;
var x:array [1..N] of real;
y:array [1..N] of real;
a,b,c,xp,yp,deltaA,deltaB,deltaC,delta:real;
i:integer;
begin
for i:=1 to N do
begin {ввод данных через массивы}
write('x[',I,']=');
readln(x[i]);
write('y[',I,']=');
readln(y[i]);
end;
write('введите x= '); {ввод промежуточного значения}
readln(xp);
for i:=2 to N do
if (x[i-1]<=xp) and (xp<=x[i-1]) then
begin {вычисление}
delta:=x[i-1]*x[i-1]*x[i]-x[i-1]*x[i-1]*x[i+1]+x[i-1]*x[i+1]*x[i+1]-x[i-1]*x[i]*x[i]-x[i+1]*x[i+1]*x[i]+x[i+1]*x[i]*x[i];
deltaA:=x[i+1]*y[i]-x[i-1]*y[i]+y[i-1]*x[i]-x[i+1]*y[i-1]-y[i+1]*x[i]+x[i-1]*y[i+1];
deltaB:=x[i-1]*x[i-1]*y[i]-x[i+1]*x[i+1]*y[i]-y[i-1]*x[i]*x[i]+y[i+1]*x[i]*x[i]-x[i-1]*x[i-1]*y[i+1]+x[i+1]*x[i+1]*y[i-1];
deltaC:=y[i+1]*x[i-1]*x[i-1]*x[i]-y[i]*x[i-1]*x[i-1]*x[i+1]+y[i]*x[i-1]*x[i+1]*x[i+1]-y[i+1]*x[i-1]*x[i]*x[i]-y[i-1]*x[i+1]*x[i+1]*x[i]+y[i-1]*x[i+1]*x[i]*x[i];
a:=delta/deltaA;
b:=delta/deltaB;
c:=delta/deltaC;
yp:=a*xp*xp+b*xp+c;
end;
writeln('y= ',yp); {вывод искомого значения}
readln;
end.
oleum вне форума   Ответить с цитированием
Ads

Яндекс

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