- •Модуль «Полиномы»
- •Процедура интегрирования многочлена
- •Процедура диффиренцирования многочлена
- •Interface //ќ §ў ёґ Їа®жҐ¤га ё дгЄжЁп
- •Implementation // ћїЁб ёґ дгЄжЁ© (ђҐ «ё§ жЁп)
- •I: word;
- •I: word;
- •I,k: word;
- •I,j,nu: word;
- •If not(d) then
- •I: word;
- •I,j,nu: word;
- •If not(d) then
- •I, l, t: word;
- •I: word;
- •I: word;
- •I,V,w : word;
I,j,nu: word;
d : BOOLEAN;
BEGIN
stl:= 0;
d:= FALSE;
nu:= 0;
FOR i:= 0 TO n DO
BEGIN
If not(d) then
IF abs(k^) < eps THEN
BEGIN
Inc(k);
nu:= nu+1;
END
ELSE
BEGIN
d := TRUE;
FOR j:= 0 TO v - nu DO
BEGIN
stl:= stl+1;
p^ := k^;
Inc (k);
Inc (p);
END;
END;
END;
END;
PROCEDURE PolySubsMult (a,b: RealPtr; c: REAL; l:WORD; VAR k: PolyF);
VAR
I: word;
BEGIN
FOR i := 0 TO l DO
BEGIN
k[i] := a^ - b^ * c;
Inc (a);
Inc (b);
END;
END;
PROCEDURE PolyCutOne (k: RealPtr; v:WORD; VAR stl: WORD; VAR p: PolyF);
VAR
I,j,nu: word;
d : BOOLEAN;
BEGIN
stl:= 0;
d:= FALSE;
nu:=0;
FOR i:= 0 TO n DO
BEGIN
If not(d) then
IF abs(k^) < eps THEN
BEGIN
Inc(k);
nu:= nu+1;
END
ELSE
BEGIN
d := TRUE;
FOR j:=0 TO v-nu DO
BEGIN
stl:= stl+1;
p[j] := k^;
Inc (k);
END;
END;
END;
END;
FUNCTION FindC (a, b :RealPtr): REAL;
BEGIN
FindC := a^ / b^;
END;
PROCEDURE PolyDiv (n,m : WORD; a, b: RealPtr; q: RealPtr {з б⮥};
r: RealPtr {®бв в®Є}; VAR pO : WORD);
VAR
c: REAL;
cN:PolyG;
k,p: PolyF;
I, l, t: word;
BEGIN
t := n - m - 1;
l := n;
c := 0;
FOR i:= 0 to n-m DO
cN[i]:= 0;
FOR i := 0 to n DO
k[i] := 0;
c := a^ / b^;
cN[n-m] := c;
PolySubsMult(a,b,c,l,k);
FOR i := 0 to n DO
BEGIN
p[i] := 0;
END;
PolyCutOne(@k,l,l,p);
Dec(l);
IF l>= m THEN
BEGIN
WHILE l >= m DO
BEGIN
c:= FindC(@p,b);
cN[t]:= c;
IF t<>0 THEN Dec(t);
FOR i := 0 to n DO
BEGIN
k[i] := 0;
END;
PolySubsMult (@p,b,c,l,k);
FOR i := 0 to n DO
BEGIN
p[i] := 0;
END;
PolyCutOne(@k,l,l,p);
Dec(l);
IF l<>0 THEN Continue;
END;
FOR i:= n DOWNTO 0 DO
BEGIN
r^ := p[i];
Inc(r);
END;
FOR i:= n-m DOWNTO 0 DO
BEGIN
q^ := cN[i];
Inc(q);
END;
END
ELSE
BEGIN
FOR i:= n DOWNTO 0 DO
BEGIN
r^ := p[i];
Inc(r);
END;
FOR i:= n-m DOWNTO 0 DO
BEGIN
q^ :=cN[i];
Inc(q);
END;
END;
pO := l;
END;
PROCEDURE PolyDiff (n:WORD; k: RealPtr; p: RealPtr);
VAR
I: word;
BEGIN
Inc(k,n);
Inc(p,n-1);
FOR i:= n-1 DOWNTO 0 DO
BEGIN
p^:= k^ * (i+1);
Dec(k);
Dec(p);
END;
END;
PROCEDURE PolyInt (n: WORD; k: RealPtr; p: RealPtr);
VAR