1.1 Ekvationslösning

1.1
Ekvationslösning
Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den
tillämpade.
1.1.1 Polynomekvationer
Ett polynom i en variabel x är som bekant en summa av termer på formen akxk. Där ak är
en konstant och k är ett icke negativt heltal.
p(x) = a0 + a1x + a2x2 + . . . + anxn
Det är när ett polynom sätts till 0, som en polynomekvation bildas, p(x) = 0. Ekvationens
gradtal bestäms av den term som har högsta exponenten k och som samtidigt har en
koefficient ak 6= 0.
Tittar vi först på polynomekvationer kan vi konstatera att ekvationer av första graden
lärde vi oss att lösa redan på högstadiet. Denna typ av ekvationer, hur komplicerade de
ursprungligen än är, kan de alltid reduceras till
ax + b = 0
Roten vi söker är x-koordinaten då den räta linjen y = ax + b skär x-axeln. Ekvationen
saknar lösning då a = 0 eftersom motsvarande linje då är parallell med x-axeln.
Polynomekvationer av andra graden, ’andragradare’, lärde vi oss att lösa i början av gymnasiet, eller kanske rent av i högstadiet. På samma sätt kan alla sådana ekvationer reduceras
till
ax2 + bx + c = 0
Rötterna vi söker är de skärningspunkter med x-axeln som grafen till funktionen f(x) =
ax2 + bx + c har. Ofta finns det sådana, men ibland saknas skärningspunkter. Någon gång
talar vi om dubbelrot, när grafen tangerar x-axeln. Normalt löser vi dessa ekvationer med
den av studenter kallade ’pq’-formeln. Då vi utgår från ekvationen x2 + px + q = 0
s
p2
p
−q
x1,2 = − ±
2
4
Uttrycket under rottecknet kallas diskriminanten och det då
p2
−q<0
4
Håkan Strömberg
1
KTH Syd
1.1. EKVATIONSLÖSNING
som vi i början sa att ekvationen ’saknar rötter’, det finns inga skärningspunkter. I själva
verket har ekvationen likväl två rötter, så kallade komplexa eller imaginära. Då diskriminanten är = 0 är det frågan om en dubbelrot, båda rötterna är lika.
Alternativa metoder för att lösa andragradsekvationer är formeln:
√
b ± b2 − ac
x1,2 =
2a
där man alltså först inte behöver utföra divisionen med a eller kvadratkomplettering. Här
ett exempel som visar tekniken.
x2 + 3x − 4 = 0
2
2
x + 23 − 23 − 4 = 0
2
= 25
x + 23
4
x+
3
2
= ± 25
x = − 32 ±
x1 = 1
5
2
x2 = −4
Vi ser att omskrivningen av ekvationen är korrekt genom att granska
x+
px p 2 p 2
p 2 p 2
−
+ q = x2 + 2 ·
−
+ q = x2 + px + q
+
2
2
2
2
2
Om färdigheten att lösa polynomekvationer av första och andra graden tillhör allmänbildningen är det få som kan lösa en godtycklig ekvation av tredje graden utan tillgång till
matematisk handbok eller dator.
Vi har alltså att lösa
ax3 + bx2 + cx + d = 0
eller på normalform
x3 + rx2 + sx + t = 0
Vi vet att motsvarande funktion f(x) = x3 + rx2 + sx + t har åtminstone ett nollställe
(skärning med x-axeln). I figur 1.1 ser vi tre olika möjligheter till rötter. Funktionen f(x)
har uppenbarligen tre reella nollställen, ekvationen f(x) = 0 har tre reella rötter. Ekvationen
g(x) = 0 verkar ha en enkel reell rot och en dubbelrot. Slutligen ekvationen h(x) = 0, som
verkar endast ha en reell rot när vi granskar grafen. Har den en reell rot måste den ha två
komplexa rötter.
Med Cardano’s formel kan vi lösa tredjegradsekvationer. Vi utgår från ekvationen
Ax3 + Bx2 + Cx + D = 0
och går över till normalform
x3 + rx2 + sx + t = 0
där
r=
Håkan Strömberg
B
A
s=
2
C
A
t=
D
A
KTH Syd
Figur 1.1:
Genom att substituera
x=y−
r
3
får vi ekvationen
y3 + py + q = 0
där
p= s−
r2
3
Vi beräknar nu
δ=
q=
q 2
+
2r3 rs
−
+t
27
3
p 3
2
3
Om δ ≥ 0 bestämmer vi de tre rötterna genom
q
√
+ δ
u = 3 −q
2
q
√
v = 3 −q
2 − δ
x1 = u + v −
r
3
x2 = − u+v
2 −
r
3
+
x3 = − u+v
2 −
r
3
−
√
3(u−v)
i
2
√
3(u−v)
i
2
Om däremot δ > 0 får vi rötterna genom
q
3
u = −p
27
q
cos α = − 2u
α
3
√
3
u − 3r
3
2π √
u−
x2 = 2 cos α
3 + 3
4π √
3
u−
x3 = 2 cos α
3 + 3
x1 = 2 cos
r
3
r
3
När det gäller polynomekvationer av fjärde graden är proceduren än mer komplicerad,
så vi lämnar den därhän. Polynomekvationer av högre gradtal än fyra är inte lösningsbar
genom att följa en given algoritm där endast de fyra räknesätten och rotutdragning används.
Detta bevisades av Niels Henrik Abel, norsk matematiker.
Håkan Strömberg
3
KTH Syd
1.1. EKVATIONSLÖSNING
1.1.2 Andra ekvationer
Logaritmekvationer, rotekvationer, trigonometriska ekvationer och exponentialekvationer
är andra typer av ekvationer som tillhör de man lär sig hantera i gymnasiet. Här några
exempel med tillhörande grafer:
Logaritmekvation
1.5
1
0.5
4.25 4.5 4.75
5.25 5.5 5.75
6
-0.5
Figur 1.2: Lograitmekvation
lg 2x
=2
lg(4x − 15)
Rotekvation
2.5
2
1.5
1
0.5
1
2
4
3
-0.5
Figur 1.3: Rotekvation
√
1+x+
√
4−x=
√
2x + 1
Trigonometrisk ekvation
2
4
6
8
10
12
-2
-4
-6
-8
-10
-12
Figur 1.4: Trigonometrisk ekvation
5 sin x + 6 cos2 x = 7
Håkan Strömberg
4
KTH Syd
Exponetialekvation
40
20
-1
1
2
4
3
-20
-40
Figur 1.5: Exponentialekvation
2x + 2x+1 + 2x+2 = 56
Vi har nu studerat ekvationer där det är möjligt att finna exakta lösningar. Långt ifrån alla
ekvationer är lösbara i den meningen. Till exempel:
ex − x2 − 2x − 2 = 0
Här går det inte att lösa ut x. Just nu vet vi ganska lite om hur många rötter ekvationen har
och hur grafen till f(x) = ex − x2 − 2x − 2. Vi ser att
lim f(x) = ∞
x→∞
eftersom ex-termen ’tar över’. dessutom ser vi också att
lim f(x) = −∞
x→−∞
då −x2-termen ’tar över’. Däremellan skär grafen x-axeln åtminstone en gång. Plottar vi
grafen får vi (se figur 1.6). Vi gissar att det bara finns en rot och kan avläsa den från grafen
till x ≈ 2.7. Om denna noggrannhet inte räcker tar vi till Maple:
2
-3
-2
-1
1
2
3
-2
-4
Figur 1.6:
>solve(exp(x)-x^2-2*x-2=0);
RootOf(-exp(_Z)+_Z^2+2 _Z+2)
>fsolve(exp(x)-x^2-2*x-2=0);
2.674060314
>Digits:=20;
> fsolve(exp(x)-x^2-2*x-2=0);
2.6740603137235603179
Håkan Strömberg
5
KTH Syd
1.1. EKVATIONSLÖSNING
Först försöker vi med solve, som vi använt tidigare. Av svaret att döma förstår vi att
solve-funktionen inte klarar av sitt uppdrag.
Funktionen vi ska använda heter fsolve, som i sitt grundutförande är lik solve. Om
inget annat sägs får vi svaret med 10 siffror, som vi litar på. Skulle inte noggrannheten
räcka kan vi med Digits beställa antalet siffror vi vill ha i svaret!
Även om man kan få rötterna till en ekvation via Maple, så ingår det i denna kurs att
kunna skriva och hantera program som löser ekvationer numeriskt. Det vill säga att genom
ett iterativt förfarande komma närmare och närmare den önskade roten.
Vi ska här ta upp två metoder för att finna rötter till ekvationer Intervallhalvering och
Newton Raphsons metod
1.1.3 Intervallhalvering
En kontinuerlig funktion, som har olika tecken i ändpunkterna av ett intervall, har minst
ett nollställe i intervallet. Genom att bestämma funktionens tecken i intervallets mittpunkt
kan man stänga in nollstället i ett hälften så stort intervall, vilket kan i sin tur halveras ...
Ett exempel där funktionen f(x) = x2 − x − 6 leder till andragradsekvationen x2 − x − 6 = 0.
Då f(1) = −6 < 0 och f(4) = 6 > 0 vet vi att det finns minst en rot i intervallet [1, 4]. Det
är den vi ska ha tag i.
I nästa steg tar vi reda på f( 1+4
2 ) = f(2.5) = −2.25 < 0. Flyttar vi upp den undre gränsen
av intervallet får vi ett nytt, där vi med säkerhet vet att vi stängt in en rot, [2.5, 4].
I nästa steg får vi f( 2.5+4
2 ) = f(3.25) = 1.3125 > 0. Nu är det dags att flytta den övre
gränsen. Vi vet att roten ligger i intervallet [2.5, 3.25]. Så här förändras intervallet i följande
steg:
Undre gräns Övre gräns
2.500000
4.000000
2.500000
3.250000
3.250000
2.875000
3.062500
2.875000
2.968750
3.062500
...
...
2.999998
3.000004
3.000001
2.999998
3.000000
3.000001
3.000000
3.000000
och till sist har vi nått fram till roten x = 3, som vi enkelt kan verifiera. Felet hos den
framräknade roten kan inte vara större än det sista intervallet. Eftersom vi är avbrutit
iterationen när intervallets längd blivit < 10−7 kan felet inte vara större.
1.1.4 Newton Raphson
Den mest kända av de numeriska metoder som finns för att finna rötter till ekvationer.
Här behövs det bara ett startvärde x0. Men om det är ekvationen f(x) = 0 som ska lösas
behöver man dessutom f ′ (x).
Håkan Strömberg
6
KTH Syd
Iterationsformeln skrivs
xn+1 = xn −
f(xn)
f ′ (xn)
Ett exempel där vi håller oss kvar vid f(x) = x2 − x − 6 och alltså ska lösa x2 − x − 6 = 0.
Vi får f ′ (x) = 2x − 1 och formeln övergår i:
xn+1 = xn −
x2n − xn − 6
2xn − 1
Vi hugger ett startvärde x0 = 5. Framöver, men inte här, kommer valet av x0 att visa sig
vara ganska viktigt.
x1 = 5 −
14
9
≈ 3.4444
x2 = 3.44444 −
2.41973
5.88888
x3 = 3.03354 −
0.168825
5.06708
x3 = 3.00022 −
0.00110005
5.00044
≈ 3.03354
≈ 3.00022
≈ 3.00000
Vi är framme (därför att vi vet resultatet) redan efter fyra iterationer. Metoden har en
konvergenshastighet överlägsen intervallhalvering. Däremot är det svårare att bestämma
felet hos den beräknade roten.
Problem 1. Skriv ett program i C som löser andragradsekvationer, där du använder
complex.h för att hantera komplexa rötter. Lös därefter ekvationen
x2 + 4x + 5 = 0
Problem 2. Implementera Cardano’s formel i C och lös följande tre ekvationer
a) 3x3 − 21x + 18 = 0
b) 2x3 + 2x2 − 16x − 24 = 0
c) x3 + x2 + x + 1 = 0
Jämför dina svar med graferna i figur 1.1
Problem 3. Lös logaritmekvationen, rotekvationen, trigonometriska ekvationen och exponentialekvationen ovan med hjälp av Maple och funktionen solve
Problem 4. Implementera intervallhalvering i C och bestäm den enda roten till ekvationen
ex − x2 = 0
med sex korrekta siffror. Kolla upp resultatet med hjälp av Maple. (Använd genomgående
double istället för float)
Problem 5. Implementera Newton Raphson i C och bestäm den enda roten till ekvationen
ex − x2 = 0
(Använd genomgående double istället för float)
Håkan Strömberg
7
KTH Syd
1.1. EKVATIONSLÖSNING
Problem 6. Hur många rötter har ekvationen
ln x = 2 sin 2x
Alla hjälpmedel tillåtna
Svar 1.
x1 = −2 − i, x2 = −2 + i
Svar 2.
a) x1 = −3 x2 = 1
x3 = 2
b) x1 = −2 x2 = −2 x3 = 3
c) x1 = −1 x2 = i x3 = −i
Svar 3.
Typ
Logaritmekvationen
Rotekvationen
Tigonometriska ekvationen
Exponentialekvationen
Svar
x = 92
x1 = 72
x1 = π
6 + n · 2π
5π
x2 = 6 + n · 2π
x3 ≈ 0.34 + n · 2π
x4 ≈ 2.80 + n · 2π
x=3
Svar 4. x = −0.703467
Svar 5. x = −0.703467
Figur 1.7:
Svar 6. 5 stycken. Se figur 1.7
Håkan Strömberg
8
KTH Syd