Деление на полиноми

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Делението на полиноми е математически алгоритъм за решаване на уравнение от вида:

за дадени полиноми p и q, т.е. търсят се s и r. To e аналогично на делението с остатък при целите числа.


Приложение[редактиране | редактиране на кода]

Делението на полиноми се използва и за:

  • намаляване на степента и съответно приблизително изчисляване на уравнения от висока степен
  • изчисляване асимптоти на рационални функции
  • изчисляване на контролна сума при кодиране на информация
  • интегриране на рационални функции

Изчисление[редактиране | редактиране на кода]

На ръка[редактиране | редактиране на кода]

Процедира се точно както при писменото деление на цели числа и се изчислява по същата схема. Ето и етапите един по един:

  • Нека решим следната задача
  • Първо трябва да се погрижим за елиминирането на най-голямата степен на полинома. За тази цел трябва да умножим q с 4x3, тогава най-високата степен на q е и е в сила .
  • Продължава се по същия начин с елиминирането на съответната най-висока степен, докато получим остатък, който не може да бъде елиминиран, понеже степента му става по-малка от тази на q.

Алгоритъм[редактиране | редактиране на кода]

Следния код на BASIC показва същността на изчислението:

   For i = GradZ - GradN To 0 Step -1
       Quotient(i) = Zähler(i + GradN) / Nenner(GradN)
       For j = GradN To 0 Step -1
           Zähler(i + j) = Zähler(i + j) - Nenner(j) * Quotient(i)
       Next j
   Next i
   For j = GradN - 1 To 0 Step -1
       Rest(j) = Zähler(j)
   Next j

Променливата Zähler() е масив, който съдържа коефициентите на полинома в числителя, тоест Zähler(i) съдържа коефициента на степента xi. Съответно Nenner() е друг масив, който съдържа коефициентите на знаменателя. Резултата е полином, който се записва в Quotient() и Rest(). Променливите GradN и GradZ съдържат съответните степени на полиномите в числителя и знаменателя.

Алгоритъмът може да се оптимизира, като вътрешният цикъл се върти от 0 до (GradN-1) и резултатът се записва обратно в Zähler() и така променливите Quotient() и Rest() могат да отпаднат.