Python-program med rasjonal funksjon og feilmelding

Python-program med rasjonal funksjon og feilmelding

Lest inn av KI og ikke kontrollert manuelt enda — kan inneholde feil.

def f(x):
    return (1 - 2 * x) / (x - 2)

x = 8

while x >= -8:

    print(x , f(x))
    x = x - 1
8 -2.5
7 -2.6
6 -2.75
5 -3.0
4 -3.5
3 -5.0

Lars har skrevet en programkode. Ovenfor ser du koden, og resultatet Lars får når han kjører programmet.

Når programmet har skrevet ut de seks linjene, kommer en feilmelding.

Hva ønsker Lars å bruke programmet til, og hvorfor får han en feilmelding?

Foreslå endringer Lars kan gjøre i koden for å unngå feilmeldingen.

Skisser grafen til funksjonen ff som Lars har definert i linje 1 og 2 i koden.

Fasit

Lars ønsker å beregne og skrive ut funksjonsverdier f(x)f(x) for heltallsverdier av xx fra 88 ned til 8-8. Feilmeldingen skyldes divisjon med null når x=2x = 2.

Legg til et if-uttrykk slik at x=2x = 2 hoppes over.

Loddrett asymptote x=2x = 2, vannrett asymptote y=2y = -2, nullpunkt x=12x = \frac{1}{2}, skjæring med yy-akse i (0,12)\left(0, -\frac{1}{2}\right).

LøsningsforslagKI-generert

Programmet starter med x=8x = 8 og teller ned med 11 for hver runde i løkken, helt til x<8x < -8. For hver verdi av xx regner det ut f(x)=12xx2f(x) = \dfrac{1 - 2x}{x - 2} og skriver ut xx og f(x)f(x).

Formålet er altså å lage en tabell over funksjonsverdiene f(x)f(x) for heltall fra 88 til 8-8.

Etter at de seks linjene er skrevet ut, er neste verdi x=2x = 2. Da er nevneren x2=0x - 2 = 0, og Python klarer ikke å dividere med null. Programmet krasjer med feilmeldingen ZeroDivisionError: division by zero.

Svar: Lars ønsker å lage en tabell over f(x)f(x) for heltallsverdier av xx fra 88 til 8-8. Feilmeldingen kommer fordi f(2)f(2) er udefinert — nevneren x2=0x - 2 = 0 når x=2x = 2.

En måte å unngå feilmeldingen på er å hoppe over x=2x = 2 med en if-setning:

def f(x):
    return (1 - 2 * x) / (x - 2)

x = 8

while x >= -8:
    if x != 2:
        print(x, f(x))
    x = x - 1

En annen mulighet er å fange feilen med try/except:

def f(x):
    return (1 - 2 * x) / (x - 2)

x = 8

while x >= -8:
    try:
        print(x, f(x))
    except ZeroDivisionError:
        print(x, "udefinert")
    x = x - 1

Funksjonen er f(x)=12xx2f(x) = \dfrac{1 - 2x}{x - 2}.

Vi finner viktige punkter og linjer:

Loddrett asymptote: Nevneren er null når x2=0x - 2 = 0, altså x=2x = 2.

Vannrett asymptote: For store x|x| dominerer leddene med høyest grad. Da er

f(x)=2xx=2f(x) = \frac{-2x}{x} = -2

Vannrett asymptote: y=2y = -2.

Nullpunkt: f(x)=0f(x) = 0 gir 12x=01 - 2x = 0, altså x=12\underline{x = \dfrac{1}{2}}.

Skjæring med yy-aksen: f(0)=1002=12f(0) = \dfrac{1 - 0}{0 - 2} = -\dfrac{1}{2}.

Skisse:

Grafen har to grener, én for x<2x < 2 og én for x>2x > 2. Begge grenene nærmer seg asymptotene x=2x = 2 og y=2y = -2. Grafen skjærer xx-aksen i (12,0)\left(\dfrac{1}{2}, 0\right) og yy-aksen i (0,12)\left(0, -\dfrac{1}{2}\right).

For x>2x > 2 er telleren 12x<01 - 2x < 0 og nevneren x2>0x - 2 > 0, så f(x)<0f(x) < 0. Grenen går fra -\infty (ved x=2+x = 2^+) opp mot 2-2 (når xx \to \infty).

For x<2x < 2 er grenen over asymptoten y=2y = -2 for x<12x < \frac{1}{2} (med skjæring i xx-aksen og yy-aksen som markert), og fortsetter opp mot ++\infty når x2x \to 2^-.

Tastatursnarveier

Navigasjon

⌘K / Ctrl+K
Åpne søk
G F
Gå til Fag
G E
Gå til Eksamener
G T
Gå til Temaer
G K
Gå til Kompetansemål
G H
Hjem
?
Vis snarveier

I oppgave

←/→ · J/K
Forrige / neste oppgave
0
Marker som ikke prøvd
1
Marker som prøvd
2
Marker som trenger hjelp
3
Marker som klart
S
Vis / skjul løsningsforslag
A
Legg til i liste
Esc
Tilbake / avslutt