
03.03.2013, 12:22
|
Продвинутый
|
|
Регистрация: 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.
|