Показать сообщение отдельно
  #5  
Старый 03.03.2013, 12:22
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Вот тебе Лагранж на паскале

Код:
program Langrange;

type
 TValues = array [0..3] of real;

var
 vX, vY: TValues;
 
function getF(x: real): real;
begin
 Result := exp(x - 10);
end; 

function getL(x: real; n: integer): real;
var
 i, j: integer;
 mul: real;
 res: real;
begin
res := 0;            
 for i := 0 to n do begin   
  mul := 1;
  for j := 0 to n do
   if i <> j then
    mul := mul * (x - vX[j]) / (vX[i] - vX[j]) ;  
   res := res + vY[i] * mul;         
 end;
 Result := res;
end;

procedure Init;
begin
 vx[0] := 1;   vy[0] := 0.00012;
 vx[1] := 1.5; vy[1] := 0.000203;
 vx[2] := 2;   vy[2] := 0.000335;
 vx[3] := 2.5; vy[3] := 0.00055;
end;


var
 i: integer;
 x0: real;
 f1, f2: real;
begin
 Init;
 x0 := 1.6;
 f1 := getL(x0, 1);
 f2 := getF(x0);
 writeln('Лагранж: ', f1);
 writeln('Точное: ', f2);
 writeln('Погрешность: ', (f2 - f1):0:10);

end.