Syntetisk division

Inom algebra är syntetisk division en metod för att manuellt utföra euklidisk division av polynom, med mindre skrivning och färre beräkningar än långdivision .

Det lärs mestadels ut för division med linjära moniska polynom (känd som Ruffinis regel ), men metoden kan generaliseras till division med vilket polynom som helst .

Fördelarna med syntetisk division är att den låter en räkna utan att skriva variabler, den använder få beräkningar och den tar betydligt mindre plats på papper än lång division. Dessutom omvandlas subtraktionerna i långdivision till additioner genom att byta tecken i början, vilket hjälper till att förhindra teckenfel.

Regelbunden syntetdelning

Det första exemplet är syntetisk division med endast en monisk linjär nämnare .

Täljaren kan skrivas som ( .

Nollan för nämnaren är .

Koefficienterna för är ordnade enligt följande, med nollpunkten för till vänster:

Den första koefficienten efter stapeln "släpps" till sista raden.

Det tappade talet multipliceras med talet före stapeln och placeras i nästa kolumn .

En tillägg görs i nästa kolumn.

De två föregående stegen upprepas och följande erhålls:

Här är den sista termen (-123) resten medan resten motsvarar kvotens koefficienter.

Termerna skrivs med ökande grad från höger till vänster med början på grad noll för resten och resultatet.

Därför är kvoten och resten:

Utvärdera polynom genom restsatsen

Ovanstående form av syntetisk division är användbar i sammanhanget med polynomrestsatsen för att utvärdera univariata polynom. För att sammanfatta, värdet av vid är lika med resten av divisionen av med

Fördelen med att beräkna värdet på detta sätt är att det krävs drygt hälften så många multiplikationssteg som naiv utvärdering. En alternativ utvärderingsstrategi är Horners metod .

Utökad syntetisk division

Denna metod generaliserar till division med vilket moniskt polynom som helst med endast en liten modifiering med ändringar i fetstil . Använd samma steg som tidigare och utför följande uppdelning:

Vi sysslar endast med koefficienterna. Skriv koefficienterna för polynomet som ska delas överst.

Negera koefficienterna för divisorn.

Skriv in varje koefficient men den första till vänster i en uppåtriktad höger diagonal (se nästa diagram).

Notera ändringen av tecken från 1 till −1 och från −3 till 3 . "Släpp" den första koefficienten efter stapeln till den sista raden.

Multiplicera det tappade talet med diagonalen före stapeln och placera de resulterande posterna diagonalt till höger från den tappade posten.

Gör ett tillägg i nästa kolumn.

Upprepa de två föregående stegen tills du skulle gå förbi posterna överst med nästa diagonal .

Lägg sedan helt enkelt ihop eventuella återstående kolumner.

Räkna termerna till vänster om stapeln. Eftersom det finns två har resten grad ett och detta är de två termerna längst till höger under stapeln. Markera separationen med en vertikal stapel.

Termerna skrivs med ökande grad från höger till vänster med början på grad noll för både resten och resultatet.

Resultatet av vår division är:

För icke-moniska divisorer

Med lite påtryckningar kan den utökade tekniken generaliseras ytterligare för att fungera för vilket polynom som helst, inte bara för moniker . Det vanliga sättet att göra detta skulle vara att dividera divisorn med dess ledande koefficient (kalla det a ):

använd sedan syntetisk division med som divisor, och dividera sedan kvoten med a för att få kvoten av den ursprungliga divisionen (resten förblir densamma). Men detta producerar ofta fula fraktioner som tas bort senare och är därför mer benägna att fel. Det är möjligt att göra det utan att först reducera koefficienterna för .

, divideras koefficienterna för efter "släpp" och innan multiplicering.

Låt oss illustrera genom att utföra följande uppdelning:

En något modifierad tabell används:

Notera den extra raden längst ner. Detta används för att skriva värden som hittats genom att dividera de "bortfallna" värdena med den inledande koefficienten för (i det här fallet indikeras av /3 ; observera att, till skillnad från resten av koefficienter för tecknet för detta tal ändras inte).

tas den första koefficienten av

och sedan divideras det tappade värdet med 3 och placeras i raden nedan:

Därefter används det nya (delade) värdet för att fylla de översta raderna med multiplar av 2 och 1, som i den utökade tekniken:

5:an tas bort härnäst, med obligatoriskt tillägg av 4:an under, och svaret delas igen:

Sedan används 3:an för att fylla de översta raderna:

Vid denna tidpunkt, om vi, efter att ha fått den tredje summan, skulle försöka använda den för att fylla de översta raderna, skulle vi "falla av" den högra sidan, så den tredje summan är den första koefficienten av resten, som i vanlig syntetisk uppdelning. Men värdena på resten inte med den ledande koefficienten för divisorn:

Nu kan vi läsa av koefficienterna för svaret. Som i utökad syntetisk division är de två sista värdena (2 är graden av divisor) koefficienterna för resten, och de återstående värdena är koefficienterna för kvoten:

och resultatet är

Compact Expanded Synthetic Division

Diagonalformatet ovan blir dock mindre utrymmeseffektivt när divisorgraden överstiger hälften av utdelningsgraden. Tänk på följande uppdelning:

Det är lätt att se att vi har fullständig frihet att skriva varje produkt i vilken rad som helst så länge den är i rätt kolumn, så algoritmen kan kompakteras med en girig strategi , som illustreras i indelningen nedan:

Följande beskriver hur man utför algoritmen; den här algoritmen innehåller steg för att dividera icke-moniska divisorer:

  1. Skriv utdelningskoefficienterna på en stapel.
  2. Ignorera den första (ledande) koefficienten för divisorn, negera varje koefficient och placera dem på den vänstra sidan av stapeln.
  3. Från antalet koefficienter placerade på den vänstra sidan av stapeln, räkna antalet utdelningskoefficienter ovanför stapeln, med början från kolumnen längst till höger. Placera sedan en vertikal stapel till vänster, samt raden nedanför, om den kolumnen. Denna vertikala stapel markerar separationen mellan kvoten och resten.
  4. Släpp den första koefficienten av utdelningen under ribban.

    • Dividera det tidigare tappade/summerade talet med divisorns ledande koefficient och placera den på raden nedanför (detta behöver inte göras om den ledande koefficienten är 1). I detta fall där indexet har valts genom att subtrahera divisorns index från utdelningen.
    • Multiplicera det tidigare tappade/summerade talet (eller det dividerade tappade/summerade talet) till varje negerad divisorkoefficient till vänster (börjar med den längst till vänster); hoppa över om det tappade/summerade talet är noll. Placera varje produkt ovanpå de efterföljande kolumnerna.
  5. Utför ett kolumnvis tillägg på nästa kolumn. I det här fallet är .
  6. Upprepa de två föregående stegen. Stopp när du utförde de två föregående stegen på numret precis före den vertikala stapeln.
    1. Låt .
    2. Låt .
    3. Låt .
  7. Utför de återstående kolumnvisa tilläggen på de efterföljande kolumnerna (beräkna resten).
  8. De nedersta resultaten under den horisontella stapeln är koefficienterna för polynomen (kvoten och resten), där koefficienterna för kvoten är till vänster om den vertikala stapelseparationen och koefficienterna för resten är till höger. Dessa koefficienter tolkas som att de har ökande grad från höger till vänster, med början på grad noll för både kvoten och resten.

    Vi tolkar resultaten för att få:

Python implementering

Följande kodavsnitt implementerar Expanded Synthetic Division i Python för godtyckliga univariata polynom:

  
    





        
      0
           
        
        
          

          
           0  
            
            
                
                      

    
    
    
    
    
        
         def  expanded_synthetic_division  (  dividend  ,  divisor  ):  """Snabb polynomdivision med hjälp av expanderad syntetisk division.  Fungerar även med icke-moniska polynom.  Dividend och divisor är båda polynom, som här helt enkelt är listor med koefficienter.  T.ex.: x**2 + 3*x + 5 kommer att representeras som [1, 3, 5]  "  ""  ut  =  lista  (  utdelning  )  # Kopiera utdelningsnormaliseraren  =  divisor  [  ]  för  i  inom  intervallet  (  len  (  dividend  )  -  len  (  divisor  )  +  1  ):  # För allmän polynomdivision (när polynom är icke-moniska),  # måste vi normalisera genom att dividera koefficienten med divisorns första koefficient  ut  [  i  ]  /=  normaliserare  coef  =  ut  [  i  ]  if  coef  !=  :  # Useless för att multiplicera om koefficienten är 0  # I syntetisk division hoppar vi alltid över den första koefficienten för divisorn,  # eftersom den bara används för att normalisera utdelningskoefficienterna  för  j  i  intervallet  (  1  ,  len  (  divisor  )):  ut  [  i  +  j  ]  +=  -  divisor  [  j  ]  *  coef  # Det resulterande resultatet innehåller både kvoten och resten,  # resten är storleken på divisorn (resten  # har nödvändigtvis samma grad som divisorn eftersom det är  # vad vi kunde inte dividera från utdelningen), så vi beräknar index  # där denna separation är, och returnerar kvoten och resten.  separator  =  1  -  len  (  divisor  )  return  out  [:  separator  ],  out  [  separator  :]  # Return quotient, rest. 

Se även

  • Lianghuo Fan (2003). "En generalisering av syntetisk division och en allmän sats för division av polynom" ( PDF) . Matematiskt medley . 30 (1): 30–37.
  • Li Zhou (2009). "Kort division av polynom". College Mathematics Journal . 40 (1): 44–46. doi : 10.4169/193113409x469721 .

externa länkar