f (a) sin

Relevanta dokument
Kontrollskrivning KS1T

Moment 10.1,10.2 Viktiga exempel Övningsuppgifter T10.1,T10.2,T10.3a,b,c,e,Ö10.1a-f,Ö10.3b-e

a = a a a a a a ± ± ± ±500

Maclaurins och Taylors formler. Standardutvecklingar (fortsättning), entydighet, numerisk beräkning av vissa uttryck, beräkning

5B1134 Matematik och modeller

Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den tillämpade.

Dagens ämnen. Entydighet hos Taylor- och Maclaurinpolynom

Beräkning av integraler

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Sidor i boken f(x) = a x 2 +b x+c

f(x + h) f(x) h f(x) f(x h) h

17.1 Kontinuerliga fördelningar

4. Bestäm eventuella extrempunkter, inflexionspunkter samt horisontella och vertikala asymptoter till y = 1 x 1 + x, och rita funktionens graf.

5B1134 Matematik och modeller Lösningsförslag till tentamen den 11 oktober 2004

5B1134 Matematik och modeller Lösningsförslag till tentamen den 29 augusti 2005

Euler-Mac Laurins summationsformel och Bernoulliska polynom

Lennart Carleson. KTH och Uppsala universitet

5B1134 Matematik och modeller Lösningsförslag till tentamen den 13 januari T = 1 ab sin γ. b sin β = , 956 0, 695 0, 891

x sin(x 2 )dx I 1 = x arctan xdx I 2 = x (x + 1)(x 2 2x + 1) dx

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Lösningsförslag till Tentamen i SF1602 för CFATE 1 den 20 december 2008 kl 8-13

MATEMATIKPROV, LÅNG LÄROKURS BESKRIVNING AV GODA SVAR

Lösningar till MVE016 Matematisk analys i en variabel för I yy 1 + y 2 = x.

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

y y 1 = k(x x 1 ) f(x) = 3 x

DERIVATA. = lim. x n 2 h h n. 2

Kapitel 5: Primitiva funktioner

Moment Viktiga exempel Övningsuppgifter. t 4 3t 2 +2 = 0. x 2 3x+2 = 0

Fler uppgifter på andragradsfunktioner

5B1134 Matematik och modeller Uppgifter från kontrollskrivningar och tentamina under läsåren och

1, 2, 3, 4, 5, 6,...

5B1134 Matematik och modeller Lösningsförslag till tentamen den 12 januari 2005

1 Föreläsning 12, Taylors formel, och att approximera en funktion med ett polynom

SF1600, Differential- och integralkalkyl I, del 1. Tentamen, den 9 mars Lösningsförslag. f(x) = x x

Gamla tentemensuppgifter

polynomfunktioner potensfunktioner exponentialfunktioner

Tentamen i Envariabelanalys 2

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Lösningar till MVE017 Matematisk analys i en variabel för I x 3x y = x. 3x2 + 4.

10x 3 4x 2 + x. 4. Bestäm eventuella extrempunkter, inflexionspunkter samt horizontella och vertikala asymptoter. y = x 1 x + 1

MATEMATIKPROV, LÅNG LÄROKURS BESKRIVNING AV GODA SVAR

TAYLORS FORMEL VECKA 4

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Del I: Lösningsförslag till Numerisk analys,

7 november 2014 Sida 1 / 21

Lösningsförslag envariabelanalys

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna

S n = (b) Med hjälp av deluppgift (a) beräkna S n. 1 x < 2x 1? i i. och

Institutionen för Matematik, KTH Lösningar till tentamen i Analys i en variabel för I och K (SF1644) 1/ e x h. (sin x) 2 1 cos x.

KOKBOKEN. Håkan Strömberg KTH STH

f(x) = 1 x 1 y = f(x) = 1 y = 1 (x 1) = 1 y x = 1+ 1 y f 1 (x) = 1+ 1 x 1+ 1 x 1 = 1 1 =

KOKBOKEN 3. Håkan Strömberg KTH STH

Lösningar och kommentarer till uppgifter i 3.1

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

10.1 Linjära första ordningens differentialekvationer

SF1620 (5B1134) Matematik och modeller Uppgifter från kontrollskrivningar och tentamina under tiden

Meningslöst nonsens. December 14, 2014

SF1625 Envariabelanalys Lösningsförslag till tentamen

SF1625 Envariabelanalys

Institutionen för Matematik, KTH Torbjörn Kolsrud

601. (A) Bestäm MacLaurinutvecklingarna av ordning 2 till följande uttryck. Resttermen ges på ordoform.

TATA42: Föreläsning 3 Restterm på Lagranges form

Dagens ämnen. Potensserier

Lösningar och kommentarer till uppgifter i 2.3

5B1134 Matematik och modeller Uppgifter från kontrollskrivningar och tentamina under läsåren , och

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 13 jan 2014

M0043M Integralkalkyl och Linjär Algebra, H14, Integralkalkyl, Föreläsning 4

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

L HOSPITALS REGEL OCH MACLAURINSERIER.

LABORATION 2. Trapetsregeln, MATLAB-funktioner, ekvationer, numerisk derivering

Prov i matematik Distans, Matematik A Analys UPPSALA UNIVERSITET Matematiska institutionen

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

7x 2 5x + 6 c.) lim x 15 8x + 3x Bestäm eventuella extrempunkter, inflexionspunkter samt horizontella och vertikala asymptoter

Planering för Matematik kurs D

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 2 juni 2014

LMA515 Matematik, del B Sammanställning av lärmål

Dagens tema är exponentialfunktioner. Egentligen inga nyheter, snarare repetition. Vi vet att alla exponentialfunktioner.

SF1625 Envariabelanalys Tentamen Lördagen den 11 januari, 2014

19.1 Funktioner av stokastiska variabler

Gruppuppgifter 1 MMA132, Numeriska metoder, distans

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Approximation av funktioner

LABORATION cos (3x 2 ) dx I =

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A. e x2 /4 2) = 2) =

12. Numeriska serier NUMERISKA SERIER

3.3. Symboliska matematikprogram

v0.2, Högskolan i Skövde Tentamen i matematik

TATA42: Föreläsning 6 Potensserier

Betygskriterier Matematik D MA p. Respektive programmål gäller över kurskriterierna

Repetitionsuppgifter

Mälardalens högskola Akademin för utbildning, kultur och kommunikation

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

3, 6, 9, 12, 15, 18. 1, 2, 4, 8, 16, 32 Nu är stunden inne, då vill vill summera talen i en talföljd

ÖVN 6 - DIFFERENTIALEKVATIONER OCH TRANSFORMMETODER - SF Nyckelord och innehåll. a n (x x 0 ) n.

f(x) = x 2 g(x) = x3 100

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Laboration 3. Funktioner, vektorer, integraler och felskattning

Transkript:

Hur kan datorn eller räknedosan känna till värdet hos till exempel sin0.23 eller e 2.4? Denna fråga är berättigad samtidigt som ingen tror att apparaterna innehåller en gigantisk tabell. Svaret på frågan är att sin0.23 kan utvecklas till serie av termer. Genom att summera ett visst antal av dessa får man ett tillräckligt bar närmevärde. Ju fler termer desto bättre resultat. Nyckeln ligger i Taylors formel f(x) = f(a) + x a f (a) + 1! (x a)2 f (a) +... + 2! (x a)n f (n 1) (a) + R n (x) n! Formeln påstår att om vi känner f(a),f (a),...,f (n 1) för ett bestämt värde a, som gärna får ligga nära x. Någon gång måste man sluta summera och summan av de termer som aldrig kom med, sammanfattas i resttermen R n (x). Vi har ersatt f(x) med ett polynom visserligen med oändligt många termer. Men nu känner vi ju inte dessa ovan nämnda funktionsvärden, så i detta läge är Taylors formel inget att ha för våra behov. Men om vi väljer a = 0 får vi MacLaurins formel f(x) = f(0) + x 1! f (0) + x2 2! f (0) +... + xn n! f(n 1) (0) + R n (x) Om vi då väljer f(x) = sinx så får vi Efter städning får vi sinx = sin0 + x 1! x2 x3 cos0 sin0 +... 2! 3! cos0... sinx = x x3 3! +... För att få ett bra värde är detta förstås för få termer. Vi får sin0.23 0.23 0.233 6 0.227972 Räknedosan ger 0.227978. Inte så dåligt eller hur? På liknade sätt kan man ta fram potensserier för alla elementära funktioner. Här följer några Håkan Strömberg 1 KTH Syd

e x = 1 + x 1! + x2 2! + x3 ( x 1 lnx = x 1 x + 1 2 3! +... x ) 2 + 1 3 ln(1 + x) = x x2 2 + x3 3 x4 4 +... sinx = x x3 3! + x5 5! x7 7! +... cos x = 1 x2 2! + x4 4! x6 6! +... ( ) x 1 3 +... arctanx = x x3 3 + x5 5 x7 7 +... Genom att studera dem ser du säker ett mönster. Observera att de serier där nämnaren ökar linjärt konvergerar sakta. Vilket betyder att man måste ta med fler termer i summan för att få acceptabelt värde. Dessutom förstår man att för att beräkna sin 100 krävs det fler termer än för sin0.1. Med en stor täljare krävs det fler termer för att nämnaren ska få övertag. I Maple kan man bestämma serieutvecklingen genom taylor(tan(x),x=0,10) x x + 1 3 x3 + 2 15 x5 + 17 315 x7 + 62 2835 x9 +... för en lite mer komplicerad funktion än den vi gav ovan 6.0.1 Egen SIN-funktion Jag gav mig ut på följande äventyr, där jag sökte ett polynom som skulle kunna beräkna sin x med relativt hög precision. Det känns naturligt att anta att ett 3-gradspolynom skulle kunna fungera bra. Jag startade med att generera sinx med hjälp av den inbyggda funktionen för alla vinklar från 0... 90, som jag förstås måste räkna om till radianer. Får jag bra värden för dessa vinklar kan jag sedan fixa större vinklar med hjälp av trigonometriska formler. De 91 värdena lagrade jag i kolumnvektorn b. Med ansatsen p(x) = ax 3 + bx 2 + c byggde jag sedan upp A A = A har typen (91 4). 0 0 0 1 0.00000531657 0.000304617 0.0174533 1... 3.87578 2.46740 1.57080 1 Nu bildade jag A t A och A t b. A t A har typen (4 4) och A t b har typen (4 1) Håkan Strömberg 2 KTH Syd

Jag löste nu ekvationssystemet A t Ax = A t b och lösningen gav förslag till de fyra koefficienterna a,b,c,d Jag bestämde sedan den största skillnaden mellan det verkliga sin x och mitt försök. Resultatet blev inte tillfredsställande. Istället för att ta till ett högre gradtal bestämde jag mig för att anpassa ett polynom för vinklarna 0...45 och ett annat för 45...90. Inte heller det blev någon succé, men här är koden 1 double egensin(double x){ 2 if(x<0.785398) 3 return (( 0.152611 x 0.00936304) x+1.00179) x 0.0000677351; 4 else 5 return (( 0.0632135 x 0.233242) x+1.19543) x 0.0574609; 6 } 7 8 int main(void){ 9 double x,s1,s2; 10 int v; 11 for(v=0;v<=90;v++){ 12 x=(double)v M PI/180.0; 13 s1=sin(x); 14 s2=egensin(x); 15 printf("%2d %10.8f %10.8f %10.8f\n",v,s1,s2,fabs(s1 s2)); 16 } 17 } Observera att det sparar resurser att beräkna sinx med hjälp av Horners schema, som i programmet ovan i jämförelse med alternativet: return -0.152611*pow(x,3)-0.00936304*pow(x,2)+1.00179*x-0.0000677351; Programmet ovan bestämmer sin x med fyra korrekta decimaler. Sämre än förväntat men bättre med två polynom än med ett. Problemet kvarstår. Hur beräknas sin x i math.lib? Finns det instruktioner i processorerna som direkt beräknar sinx. 6.0.2 Differensräkning Givet funktionen f(x) = sin(x) ln(cos x) Sökt f (1). Vi vet att det är möjligt att bestämma derivatan för alla f(x), sammansatta av elementära funktioner, hur komplicerade de än är. Men orkar vi? Med hjälp av Maple får vi först f (x) = cos(x) ln(cos(x)) sin(x) tan(x) f (1) 1.643137813 (från Maple). Frågan är nu kan vi bestämma f (x) numeriskt tillräckligt bra, utan att först utföra deriveringen? Håkan Strömberg 3 KTH Syd

Om vi antar att vi enkelt kan bestämma f(x) för olika värden för x kan en idé vara att bestämma f f(1 + 0.001) f(1) (1) = 1.64516 0.001 Kanske tillräckligt bra? Om vi går åt andra hållet f (1) = f(1) f(1 0.001) 0.001 1.64112 Får vi av ett ungefär lika bra resultat. Nu går vi åt båda hållen f (1) = f(1 + 0.001) f(1 0.001) 0.002 1.64314 och då stämmer det exakt med 6 signifikanta siffror! Hade vi fått ett lika bra resultat om vi tagit ett mindre h? Svaret är ja. f (1) = f(1 + 0.0001) f(1 0.0001) 0.0002 1.64314 6.0.3 Upprepad Richarsonextrapolation Richardson-extrapolering är en sekvens accelerations-metod som används för att förbättra konvergenshastigheten. Dess användbarhet, inom tillämpad matematik och numerisk analys, kan knappast överskattas Nu ska här visas hur man kan få ett ännu bättre resultat utan att känna mer än ett fåtal funktionsvärden f(x). Vi antar att f(x) = e x och att vi ska bestämma f (1). Vi vet att f (1) = e 1 2.71828182845905 De värden vi behöver, ligger symmetriskt kring x = 1. Vi bestämmer dem med hög precision. Observera också att h halveras hela tiden i takt med att vi kryper närmare x = 1 h f(x h) f(x + h) 1.0000000 1.00000000000000 7.38905609893065 0.5000000 1.64872127070013 4.48168907033806 0.2500000 2.11700001661267 3.49034295746184 0.1250000 2.39887529396710 3.08021684891803 0.0625000 2.55358945806293 2.89359594417176 0.0312500 2.63464908881563 2.80456935623723 0.0156250 2.67613877489448 2.76108853855010 0.0078125 2.69712799144392 2.73960157707417 Med hjälp av f(x + h) f(x h) 2h räknar vi så ut 8 uppskattningar av derivatan i och placerar i första kolumnen i tabellen nedan. Från den kolumnen bestämmer vi sedan nästa, enligt Richardson-extrapolation, med hjälp av formeln D i,j+1 = D i,j + D i,j D i 1,j 2 j+1 1 Håkan Strömberg 4 KTH Syd

När vi sedan upprepar den proceduren från kolumn till kolumn kallas detta upprepad Richardson-extrapolation. f(x+h) f(x h) 2h 2 2 1 2 3 1 2 4 1 3.19452804946533 2.83296779963794 2.71244771636214 2.74668588169833 2.71792524238513 2.71870774610270 2.72536621980373 2.71825966583887 2.71830744061797 2.71828075358565 2.72005188887067 2.71828044522632 2.71828341371024 2.71828181191639 2.71872427874553 2.71828174203715 2.71828192729584 2.71828182820154 2.71839243697999 2.71828182305814 2.71828183463257 2.71828182845502 2.71830948033612 2.71828182812149 2.71828182884483 2.71828182845898 2 5 1 2 6 1 2 7 1 2 8 1 2.71828184605610 2.71828182872687 2.71828182845180 2.71828182846319 2.71828182845901 2.71828182845906 2.71828182845911 2.71828182845904 2.71828182845905 2.71828182845905 Vi har bestämt det korrekta värdet för f (1) = e med 15 siffrors noggrannhet. Detta resultat når vi inte förrän i näst sista kolumnen. 6.0.4 Richardson-extrapolation och Integrering Med hjälp av Maple kan vi bestämma π/2 π/6 1 + ln sin(x) dx 0.828806324300223848498 Med hjälp av trapetsregeln får vi följande resultat där vi startar med h = π 2 π 6 1.0472 och sedan successivt halveras till h = π 2 π 6 128 0.00818123. n h f(x)dx 1 1.04719755119660 0.68426653614600 2 0.52359877559830 0.79041705322263 4 0.26179938779915 0.81899842650775 8 0.13089969389957 0.82633869234860 16 0.06544984694979 0.82818837957210 32 0.03272492347489 0.82865177227053 64 0.01636246173745 0.82876768216017 128 0.00818123086872 0.82879666350665 När vi delar in intervallet i 128 delintervall får vi 4 korrekta decimaler. Nu ska vi se om vi Håkan Strömberg 5 KTH Syd

kan förbättra detta genom att använda upprepad Richardson-extrapolation. f(x)dx 2 2 1 2 3 1 2 4 1 0.68426653614600 0.79041705322263 0.82580055891484 0.81899842650775 0.82852555093612 0.82891483551059 0.82633869234860 0.82878544762888 0.82882257572785 0.82881642507566 0.82818837957210 0.82880494197993 0.82880772688723 0.82880673696452 0.82865177227053 0.82880623650334 0.82880642143526 0.82880633440512 0.82876768216017 0.82880631879005 0.82880633054530 0.82880632448597 0.82879666350665 0.82880632395548 0.82880632469339 0.82880632430327 2 5 1 2 6 1 2 7 1 2 8 1 0.82880642444480 0.82880632141934 0.82880631978401 0.82880632416599 0.82880632420959 0.82880632424444 0.82880632429737 0.82880632429946 0.82880632430017 0.82880632430039 Plötsligt har vi ett resultat med 12 korrekta decimaler! Figur 6.1: Hur fungerar då Richardson-extrapolation? I figur 6.1 visas ett enkelt fall. Om, då vi bestämmer integralen b a f(x) dx med hjälp av trapetsregeln T(2h) är felet det summan av de areor som ligger mellan trapetsen och kurvan. Felet är ungefär fyra gånger så stort som för T(h). Skillnaden mellan felen är därför ungefär 3 felet i T(h). Om man därför korrigerar T(h) genom att addera T 2 (h) = T(h) + T(h) T(2h) 3 bör man få ett bättre värde på T(h). Denna teknik är användbar i många situationer, inte enbart vid integrering. Lewis Fry Richardson (1881-1953) anses vara den förste, som redan på 1920-talet, med matematikens hjälp försökte spå vädret. Alltså långt innan dagens superdatorer. Det var under det arbetet han upptäckte Richardson-extrapolation. Håkan Strömberg 6 KTH Syd

Problem 1. Skriv ett program som för α = 0...90 med steget 10 grader skriver ut en tabell över sinα beräknad, dels med den i C inbyggda funktionen och en funktion som använder sig av MacLaurin-utvecklingen. Observera att en sats liknande sinx=x-pow(x,3)/6.0+pow(x,5)/120.0-pow(x,7)/5040.0; är ganska resurskrävande. Då är det bättre att summera och skapa nästa term i serien genom att utgå från föregående. Dessutom kan du då genom en konstant ange hur många termer du vill ta med utvecklingen. Hur många termer behövs det för att alla värden ska överensstämma med 5 respektive 7 decimaler. Vi antar alltså att den inbyggda sin-funktionen är korrekt. Problem 2. Hur många termer måste man ta med i MacLaurin-utvecklingen av e x för att alla x [0... 1] ska kunna beräknas med 8 korrekta decimaler? Lös problemet med ett C-program eller Maple. Problem 3. Man kan visa att π 4 = 1 1 3 + 1 5 1 7 +... Hur många termer måste man ta med för att få π med 5 korrekta decimaler? Man kan också visa att π 4 = 2arctan 1 5 + arctan 1 7 + 2arctan 1 8 Använd i Maple ett antal termer från MacLaurin-utvecklingen av arctan x för att beräkna π med 5 korrekta decimaler. För att i Maple konvertera ett polynom givet från taylor används convert(taylor(...),polynom) Problem 4. För hur stort värde x kommer 20 termer ur MacLaurin-utvecklingen av arctan x att producera ett resultat med 6 korrekta decimaler? Håkan Strömberg 7 KTH Syd