Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль Многочлены.docx
Скачиваний:
2
Добавлен:
08.12.2018
Размер:
32.57 Кб
Скачать

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