Курсовая работа: Вычислительная техника и программирование
Result[1]:=-Mat_X[2];
Process:=3 {Начнем обработку с третьего множителя}
End;
Result[2]:=1; {В любом случае Result[2] = 1, т.к. все множители вида (X - Cn) }
For i:=Process To Number Do
If i<>Current Then
Begin
For j:=k DownTo 1 Do {Домнoжаемполученныйполиномна X}
Result[j+1]:=Result[j];
Result[1]:=0; {Поэтому C0 = 0}
Forj:=1 TokDo{Домнoжаем полученный полином на Cn = -X[n]}
Result[j]:=Result[j]-Mat_X[i]*Result[j+1];
Inc(k); {Размерность полинома увеличилась}
End;
End; {Recover}
PROCEDURE Nuton(Number:Byte;Var Mat_x,Mat_f:Matrix_Line);
{ИнтерполяционнаяформулаНьютона }
Var i,j:integer;
Temp,Result:Matrix_Line;
C:real;
{Функция вычисления разделенной разности по начальному и конечному узлам}
Function Div_Res(Beg_Usel,Fin_Usel:Byte;Var Xn,Fn:Matrix_Line):real;
Begin
Beg_Usel:=Beg_Usel+1;
If Beg_Usel=Fin_Usel Then
Div_Res:=(Fn[Fin_Usel]-Fn[Beg_Usel-1])/(Xn[Fin_Usel]-Xn[Beg_Usel-1])
Else Div_Res:=(Div_Res(Beg_Usel,Fin_Usel,Xn,Fn)-Div_Res(Beg_Usel-1,Fin_Usel-1,Xn,Fn))/(Xn[Fin_Usel]-Xn[Beg_Usel-1]);
End; {Div_Res}
Begin {Nuton}