1.1 Ekvationslösning
Transcription
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