Polynomdivisjon I

<div class="alert alert-block alert-warning">

Mål for opplæringa er at eleven skal kunne

  • formulere og løyse problem ved hjelp av algoritmisk tenking, ulike problemløysingsstrategiar, digitale verktøy og programmering
  • forklare polynomdivisjon og bruke det til å omskrive algebraiske uttrykk, drøfte funksjonar og løyse likningar og ulikskapar

Numerisk heltallsfaktorisering av polynom

Vi starter med å se hvordan vi kan bruke programmering til å numerisk finne heltallsfaktorer av et polynom. For å gjøre dette må vi først vite hva som kjennetegner en faktor i et polynom.

<div class="alert alert-block alert-info">

Oppgave 1

a) Hvordan kan vi vite at polynomet P(x)=x3+3x2x3P(x) = x^3 + 3x^2 - x - 3 er delelig med (x+3)(x+3) uten å gjennomføre en polynomdivisjon?

b) Finn alle faktorene til P(x)P(x) ved hjelp av polynomdivisjon

</div>

Vi skal nå lage et program som kan finne alle heltallsfaktorene til et polynom. For å gjøre dette trenger vi å bruke metoden fra oppgaven over, nemlig at hvis P(a)=0P(a) = 0, så er (xa)(x-a) en faktor til P(x)P(x).

<div class="alert alert-block alert-info">

Oppgave 2

Diskuter med sidemannen hvordan vi kan bruke dette til å finne alle heltallsfaktorene til en gitt polynom

Første del av programmet

Koden vår trenger å vite polynomet vi ønsker å finne faktorene til. Deretter må vi gå gjennom et passe antall verdier og sjekke om det er faktorer. I skjelettprogrammet under har vi valgt å sjekke heltallsfaktorer i intervallet [10,10][-10, 10]. Merk at koden under ikke vil kjøre, se oppgave 3

1 
2
3
4
5
6
7
def P(x):
    y = x**3 + 3*x**2 - x - 3     # Polynomet vi ønsker å finne faktorene til
    return y

for i in range(-10, 11):
    if ???
        print(???)
<div class="alert alert-block alert-info">

Oppgave 3

Diskuter med makkeren din hva som skal stå istedenfor ??? både i linje 6 og linje 7.

<div class="alert alert-block alert-danger">

Løsning:

def P(x):
    y = x**3 + 3*x**2 - x - 3     # Polynomet vi ønsker å finne faktorene til
    return y

for i in range(-10, 11):
    if P(i) == 0:
        print("En faktor er x -",i)
<div class="alert alert-block alert-info">

Oppgave 4

Test programmet flere ganger for andre polynomer fra for eksempel læreboken. Er det noen ganger programmet ikke fungerer? I så tilfelle, hvorfor ikke?

Pynting av programmet

Det er litt uheldig at vi for negative faktorer får dobbelt subtraksjonstegn.

<div class="alert alert-block alert-info">

Oppgave 5 (frivillig)

Hvordan kan vi endre programmet slik at vi alltid får et svar på formen (x+1)(x+1) eller (x1)(x-1)?

</div>
<div class="alert alert-block alert-danger">

Løsning:


def P(x):
    y = x**3 + 3*x**2 - x - 3     # Polynomet vi ønsker å finne faktorene til
    return y

for i in range(-10, 11):
    if P(i) == 0:
        if i < 0:
            print("En faktor er x +",abs(i))
        elif i == 0:
            print("En faktor er x")
        else:
            print("En faktor er x -",i)
<div class="alert alert-block alert-info">

Oppgave 6

Diskuter med makkeren din hva vi kan gjøre hvis det ikke er noen heltallige faktorer til polynomet. Kan dere tenke en metode vi kan sjekke for disse faktorene på?

</div> <div class="alert alert-block alert-warning">

Hvis man ønsker å gå videre og løse dette, gå til neste opplegg kalt Polynomdivison II.

</div>
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
# Fullstendig kode

def P(x):
    y = x**3 + 3*x**2 - x - 3     # Polynomet vi ønsker å finne faktorene til
    return y

for i in range(-10, 11):
    if P(i) == 0:
        if i < 0:
            print("En faktor er x +",abs(i))
        elif i == 0:
            print("En faktor er x")
        else:
            print("En faktor er x -",i)