Innskrevet rektangel og Lars sitt program

Innskrevet rektangel og Lars sitt program

En funksjon ff er gitt ved

f(x)=x2+4,0x2.f(x) = -x^2 + 4, \quad 0 \le x \le 2.

Lars har tegnet grafen til ff med et innskrevet rektangel ABCDABCD. Lars har også skrevet et program.

Grafen til f(x)

def f(x):
    return -x**2 + 4

def areal(x):
    return x*f(x)

h = 0.0001
def der_areal(x):
    return (areal(x + h) - areal(x))/h

x = 0
dx = 0.01
while der_areal(x + dx) > 0:
    x = x + dx

print(areal(x))

Forklar hva Lars prøver å finne ut med programmet. Hva blir svaret hvis man kjører programmet?

Hvilken strategi bruker Lars i programmet sitt? Vil strategien fungere uavhengig av hvilken funksjon ff er?

Fasit

Programmet finner det største arealet av et rektangel innskrevet under grafen. Svaret er ca. 3,079\underline{\underline{3{,}079}}.

Lars bruker en numerisk trinnvis tilnærming der han leter fremover til deriverte av arealet skifter fortegn. Strategien er ikke universell.

LøsningsforslagKI-generert

Rektangelet ABCDABCD har ett hjørne på grafen til ff. Hjørnet over xx-aksen befinner seg i punktet (x,f(x))(x,\, f(x)). Siden rektangelet er symmetrisk om yy-aksen, har det bredde 2x2x og høyde f(x)f(x).

Av figuren leser vi imidlertid at bare halvparten av rektangelet vises (fra x=0x = 0 til xx-verdien på grafen), altså bredde xx og høyde f(x)f(x). Arealet er:

A(x)=xf(x)=x(x2+4)=x3+4xA(x) = x \cdot f(x) = x(-x^2 + 4) = -x^3 + 4x

Hva programmet gjør:

  • areal(x) beregner A(x)=xf(x)A(x) = x \cdot f(x).
  • der_areal(x) beregner den numeriske deriverte A(x)A(x+h)A(x)hA'(x) \approx \dfrac{A(x+h) - A(x)}{h} med h=0,0001h = 0{,}0001.
  • Løkken starter på x=0x = 0 og øker xx med dx=0,01\mathtt{dx} = 0{,}01 i hvert steg, så lenge den numeriske deriverte i neste steg er positiv (dvs. arealet fortsatt vokser).
  • Løkken stopper når der_areal(x + dx) <= 0, altså når arealet er i ferd med å avta — ved et (lokalt) maksimum.

Programmet prøver å finne xx-verdien som maksimerer arealet, og skriver deretter ut A(x)A(x) i dette punktet.

Kjøring: xx øker fra 00 i steg på 0,010{,}01. Den eksakte maksimumsverdien er x=231,1547x = \dfrac{2}{\sqrt{3}} \approx 1{,}1547. Programmet stopper siste gang der_areal(x+0,01)>0\mathtt{der\_areal}(x + 0{,}01) > 0, noe som gir x=1,15x = 1{,}15 (siden A(1,16)<0A'(1{,}16) < 0).

Programmet skriver ut:

A(1,15)=1,15((1,15)2+4)=1,152,67753,079A(1{,}15) = 1{,}15 \cdot (-(1{,}15)^2 + 4) = 1{,}15 \cdot 2{,}6775 \approx \underline{\underline{3{,}079}}

(Det eksakte maksimale arealet er 16393,0792\dfrac{16\sqrt{3}}{9} \approx 3{,}0792.)

Strategi: Lars antar at arealet begynner med å vokse fra x=0x = 0, og leter trinnvis fremover til den numeriske deriverte skifter fra positiv til ikke-positiv. Han finner altså det første punktet der A(x)A'(x) snur fra positiv til negativ — et lokalt toppunkt.

Strategien er ikke universell. Den kan feile i følgende situasjoner:

  • Hvis A(x)A'(x) allerede er negativ eller lik null for x=0x = 0 (arealet avtar fra start), stopper løkken umiddelbart uten å finne noe maksimum.
  • Hvis A(x)A(x) har flere lokale maksimumspunkter, finner programmet bare det første og overser et eventuelt høyere globalt maksimum lenger ut.
  • Steglengden dx=0,01\mathtt{dx} = 0{,}01 gir en numerisk tilnærming, ikke det eksakte maksimumet. Her gir programmet x=1,15x = 1{,}15 istedenfor det eksakte x=2331,1547x = \dfrac{2\sqrt{3}}{3} \approx 1{,}1547.

Strategien fungerer kun for funksjoner der arealet er positivt, starter med å vokse, og har nøyaktig ett lokalt maksimum.