Approximation av funktioner



Relevanta dokument
Kapitel 3. Approximation av funktioner

SF1625 Envariabelanalys

TATA42: Föreläsning 6 Potensserier

Instuderingsfrågor i Funktionsteori

SF1625 Envariabelanalys Lösningsförslag till tentamen

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:

Läsanvisningar till kapitel 4 i Naturlig matematik

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson, Sebastian Pöder

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Kontinuitet och gränsvärden

2301 OBS! x används som beteckning för både vinkeln x och som x-koordinat

Konvergens för iterativa metoder

SF1661 Perspektiv på matematik Tentamen 24 oktober 2013 kl Svar och lösningsförslag. z 11. w 3. Lösning. De Moivres formel ger att

Lösningsförslag till tentan i 5B1115 Matematik 1 för B, BIO, E, IT, K, M, ME, Media och T,

Funktionsserier och potensserier. som gränsvärdet av partialsummorna s n (x) =

TMV225+TMV176 Inledande matematik M, TD Sammanfattning. Läsanvisningar inför tentamen.

DIFFERENTIALEKVATIONER AV FÖRSTA ORDNINGEN

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

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

2320 a. Svar: C = 25. Svar: C = 90

Kap Generaliserade multipelintegraler.

SF1661 Perspektiv på matematik Tentamen 20 oktober 2011 kl Svar och lösningsförslag

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

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

Matematik D (MA1204)

Fall 1 2x = sin 1 (1) + n 2π 2x = π 2 + n 2π. x = π 4 + n π. Fall 2 2x = π sin 1 (1) + n 2π. 2x = π π 2 + n 2π

NpMa3c vt Kravgränser

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

Euler-Mac Laurins summationsformel och Bernoulliska polynom

Kap Inversfunktion, arcusfunktioner.

LABORATION cos (3x 2 ) dx I =

f (a) sin

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

7 november 2014 Sida 1 / 21

Lösningsförslag envariabelanalys

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

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

Kap. P. Detta kapitel utgör Inledande kurs i matematik. I kapitlet beskrivs vilka bakgrundskunskaper som förutsätts.

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

1.1 Den komplexa exponentialfunktionen

M0038M Differentialkalkyl, Lekt 10, H15

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.

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

Institutionen för Matematik, KTH Torbjörn Kolsrud

5B1147. Envariabelanalys. MATLAB Laboration. Laboration 1. Gränsvärden och Summor

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

Modul 5: Integraler. Det är viktigt att du blir bra på att integrera, så träna mycket.

5. Förklara varför sannolikheten att en slumpvis vald lottorad har 7 rätt är x + x 2 innehåller termen 14x. Bestäm

BASPROBLEM I ENDIMENSIONELL ANALYS 1 Jan Gustavsson

Dugga 2 i Matematisk grundkurs

Några saker att tänka på inför dugga 2

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

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

D 1 u(x, y) = e x (1 + x + y 2 ), D 2 u(x, y) = 2ye x + 1, (x, y) R 2.

Kap 5.7, Beräkning av plana areor, rotationsvolymer, rotationsareor, båglängder.

x 2 5x + 4 2x 3 + 3x 2 + 4x + 5. d. lim 2. Kan funktionen f definieras i punkten x = 1 så att f blir kontinuerlig i denna punkt? a.

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

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Något om Taylors formel och Mathematica

Icke-linjära ekvationer

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

Lösningsförslag TATM

Lösningsförslag, preliminär version 0.1, 23 januari 2018

Institutionen för Matematik. SF1625 Envariabelanalys. Modul 5 Integraler

Planering Matematik II Period 3 VT Räkna själv! Gör detta före räkneövningen P1. 7, 17, 21, 37 P3. 29, 35, 39 P4. 1, 3, 7 P5.

Lab 1, Funktioner, funktionsfiler och grafer.

+ 5a 16b b 5 då a = 1 2 och b = 1 3. n = 0 där n = 1, 2, 3,. 2 + ( 1)n n

TATA42: Föreläsning 5 Serier ( generaliserade summor )

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

För att uttrycka den primitiva funktionen i den ursprungliga variabeln sätter vi in θ = arcsin 2x. Lektion 14, Envariabelanalys den 23 november 1999

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

med angivande av definitionsmängd, asymptoter och lokala extrempunkter. x 2 e x =

Lösningsförslag till TATA42-tentan

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

A1:an Repetition. Philip Larsson. 6 april Kapitel 1. Grundläggande begrepp och terminologi

Lennart Carleson. KTH och Uppsala universitet

Uppgift 1. Bestäm definitionsmängder för följande funktioner 2. lim

Tentamen i Envariabelanalys 1

Bose-Einsteinkondensation. Lars Gislén, Malin Sjödahl, Patrik Sahlin

x 2 + x 2 b.) lim x 15 8x + x 2 c.) lim x 2 5x + 6 x 3 + y 3 xy = 7

Institutionen för Matematiska Vetenskaper TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1/TM1, TMA

Lösningsförslag till Tentamen: Matematiska metoder för ekonomer

Fyra fyror. Mikael Knutsson. Tredje utgåvan, Mikael Knutsson

R AKNE OVNING VECKA 2 David Heintz, 13 november 2002

Fixpunktsiteration. Kapitel Fixpunktsekvation. 1. f(x) = x = g(x).

HEM KURSER SKRIV UT HEM ÄMNE SKRIV UT

TANA17 Matematiska beräkningar med Matlab

sin (x + π 2 ) = sin x cos π 2 + cos x sin π 2 = cos π 2 = 0 sin π 2 = 1 Svar: cos x

6.2 Implicit derivering

TATA42: Föreläsning 7 Differentialekvationer av första ordningen och integralekvationer

KTH Matematik Tentamensskrivning i Differentialekvationer och transformer III, SF1637.

Komplexa tal: Begrepp och definitioner

gränsvärde existerar, vilket förefaller vara en naturlig definition (jämför med de generaliserade integralerna). I exemplet ovan ser vi att 3 = 3 n n

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

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

Komplexa tal. Sid 1: Visa att ekvationerna på sid 1 saknar reella lösningar genom att plotta funktionerna.

Mer om funktioner och grafik i Matlab

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

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

Transkript:

Vetenskapliga beräkningar III 8 Kapitel Approximation av funktioner Vi skall nu övergå till att beskriva, hur man i praktiken numeriskt beräknar funktioner I allmänhet kan inte ens elementära funktioner såsom sinus- och cosinusfunktionerna beräknas exakt utom i speciella fall Några av dem definieras också med hjälp av integraler som inte kan beräknas exakt algebraiskt eller analytiskt Sålunda brukar man ofta definiera den naturliga logaritmfunktionen som ln x x t dt Metoder att beräkna dylika integraler skall vi studera senare Andra funktioner (som tex arcus tangenten) definieras som inversa funktioner De blir då implicit definierade som lösningar till olinjära ekvationer som inte kan lösas algebraiskt Detta är också något som vi skall studera senare Ofta är det mycket enklare att använda serieutvecklingar eller sk CORDIC algoritmer för att beräkna funktioner Vid serieutvecklingen av funktioner är det viktigt att känna till konvergensradien, och att bestämma antalet termer som behövs för att reducera felet under en given toleransgräns Därefter är det enkelt att summera det erforderliga antalet termer Både om man använder serieutvecklingar och CORDIC algoritmer uppstår svårigheter då argumentet hamnar utanför konvergensintervallet I sådana fall använder man oftast någon intervallreduktionsmetod Ett exempel på detta är de vanliga trigonometriska funktionerna sinus och cosinus, som är periodiska med perioden 2π Om man har bra algoritmer för att beräkna funktionerna inom intervallet 0, 2π, så kan man reducera större argument till detta intervall genom att subtrahera en multipel av 2π Serieutveckling av funktioner Det finns två fundamentala potensserier från vilka många andra kan härledas, nämligen den geometriska serien x och exponentialserien exp(x) e x x k + x + x 2 + ( x < ) x k k! + x + x2 2! + x! + ( x) Med hjälp av identiteten e ix cos x + i sin x

Vetenskapliga beräkningar III 9 får vi serieutvecklingarna för de trigonometriska funktionerna: ( ) k x 2k cos x (2k)! x2 2! + x4 4! ( x) sin x ( ) k x 2k+ (2k + )! x x! + x5 5! ( x) samt serieutvecklingarna för de hyperboliska funktionerna: cosh x 2 (ex + e x ) sinh x 2 (ex e x ) x 2k (2k)! + x2 2! + x4! + ( x) x 2k+ (2k + )! x + x! + x5 5! + ( x) Genom att termvis integrera den geometriska serien får vi ln( x) x k+ k + och om vi ersätter x med x x2 x 2 x ( x < ), ( ) k+ x k+ ln( + x) k + x x2 2 + x x4 ( x ) 4 Denna metod att beräkna den naturliga logaritmen är dock inte särskilt effektiv Eftersom serien konvergerar för x, så har vi ln 2 + Om vi 2 4 beräknar summan av de åtta första termerna i denna serie, får vi ln 2 064528 Eftersom det exakta värdet är 069478, så är felet ca 006, eller närmare 9% Serien konvergerar ytterst långsamt En snabbare konvergent serie erhålls genom att subtrahera de båda logaritmiska serierna från varandra: ln + x ( ) ln( + x) ln( x) 2 x + x x + x5 5 + Genom att lösa ekvationen +x x ln 2 2 + (/)2 + (/)4 5 2 får vi x /, så att + 2 (2k + ) 2k Om vi vill beräkna logaritmen med ett fel som understiger 0 6 så får vi antalet termer N som behövs genom att kräva att olikheten 2 2N + 9 N < 0 6

Vetenskapliga beräkningar III 20 skall gälla Detta ger N 6, varför 6 termer är tillräckligt Vi får då resultatet ln 2 2 5 0694707, (2k + )2k som stämmer mycket väl överens med det exakta värdet Som ett annat exempel skall vi studera hur man kan beräkna ett värde av π utgående från identiteten arctan π/4 Vi börjar med att konstruera en serieutveckling av denna funktion Genom substitution av x t 2 i den geometriska serien finner en serieutveckling av arcus tangentens derivata d dt arctan t +t 2 : d dt arctan t t2 + t 4 t 6 som konvergerar för t < Genom termvis integration av denna potensserie får vi arctan x x 0 ( t 2 + t 4 t 6 )dt x x + x5 5 x7 7, som konvergerar för x Vi finner således, att π 4 arctan + 5 7 De åtta första termerna ger approximationen π 4 7 ( ) k 2k + 07078 Om vi tillägger nästa term får vi 252659, vilket fortfarande skiljer sig mycket från det korrekta värdet av π (45926) För dubbel precision enligt IEEE standarden, borde 2 5 termer beräknas! En betydligt snabbare konvergent serie får vi med hjälp av identiteten arctan π/6 Om vi substituerar detta argument i arcustangentens serieutveckling, så får vi π 6 /2 /2 + 5/2 5 6 + 5 2 2 ( ) k (2k + ) k Felet i denna serieutveckling får man genom att beräkna storleken av den första bortlämnade termen Om vi kräver enkel precisions nogrannhet, så måste felet bli mindre än 2 2, och antalet termer N bör vara så stort, att villkoret 2 (2N + ) N < 2 2

Vetenskapliga beräkningar III 2 är uppfyllt Vi finner alltså N Samma noggrannhet kräver minst 7 millioner termer, om man använder den förstnämnda metoden att beräkna π Med hjälp av den nya serien får vi π 2 ( ) k (2k + ) k 45926, vilket är ett verkligt bra resultat Som ett sista exempel på användningen av serieutvecklingar, skall vi undersöka hur många termer som man behöver beräkna i exponentialserien för att uppnå en viss noggrannhet Låt oss anta, att x 2 och att felet < 0 5 Eftersom felet växer med x och serien är alternerande för x < 0, så kan vi nöja oss med att behandla x 2 Om serien avbryts efter N termer, får vi approximationen exp x N xk k! och det absoluta felet kan då uttryckas e N (x) kn xn N! xn N! x k k! xn N! + xn+ (N + )! + xn+2 (N + 2)! + + x N + + x 2 (N + )(N + 2) + + x N + + x 2 (N + ) + 2 xn N! x, N+ under förutsättning att 0 < x < N + För x 2 förenklas denna olikhet till e N (2) 2N N! N + N, som alltså skall vara mindre än 0 5 enligt vårt antagande Efter prövning finner vi att 2 5 0 5, medan 22 855 0 6 För N 2 blir faktorn N+ 8,! 2! N så att övre gränsen blir 0 0 5, som är något för stort Med termer blir gränsen säkert mindre än 0 5 : 2 4 5! 2 0 6 Om x <, behöver vi endast medta 7 termer för att uppnå samma noggrannhet 2 Antalet termer som behövs växer alltså snabbt med x För att beräkna exponentialfunktionen för stora värden av x kan man använda intervallreduktion För att beräkna e 2 kan man alltså först använda 7 termer för att beräkna e 2, och sedan beräkna e 2 genom två kvadreringar : e 2 (e 2 ) 2 2 (visserligen kommer felet då att växa, vilket man måste ta i beaktande) 2 CORDIC algoritmer Vi skall nu studera en metod som kan uppfattas som ett modernt sätt att interpolera i funktionstabeller CORDIC metoden används för att approximativt

Vetenskapliga beräkningar III 22 beräkna funktionsvärden på alla moderna grafiska räknare, som tex TI-85 Algoritmen är inte baserad på serieutveckling eller polynomapproximation, utan istället på ett elementärt system av iterativa ekvationer CORDIC algoritmen (COordinate Rotation DIgital Computer) infördes av Jack Volder år 959 för att beräkna trigonometriska funktionsvärden, och utvidgades till andra elementära funktioner av John Walther år 97 I CORDIC metoden används endast additioner, subtraktioner, skiftoperationer, jämförelser och uppladdning av lagrade konstanter, vilket gör den speciellt lämpad just för räknare och PC-processorer Med CORDIC metoden kan man tom utföra multiplikation och division CORDIC algoritmen kodas i decimalsystemet, eftersom det tar tid att konvertera från basen 0 till basen 2 Men det är lättare att förstå metoden, om den uttrycks i binärsystemet I allmänhet kan algoritmen uttryckas med hjälp av tre iterativa ekvationer: x k+ x k mδ k y k 2 k y k+ y k + δ k x k 2 k z k+ z k δ k σ k, där värdet av konstanterna m, δ k och σ k beror på vilken typ av beräkning som skall utföras m är antingen 0, eller Värdet m används för trigonometriska och inversa trigonometriska funktioner, medan m används för hyperboliska, inversa hyperboliska och logaritmiska funktioner, liksom även för kvadratrötter Värdet m 0 används slutligen för multiplikation och division Värdet av δ k bestäms av två signum-funktioner: { {, zk 0, δ k sgn(z k ), z k < 0 eller δ yk < 0 k sgn(y k ), y k 0 Den förstnämnda funktionen kallas för rotationsmoden, där z värdena reduceras mot 0, och den andra kallas vektoriseringsmoden, där y värdena reduceras mot 0 Observera, att beräkningen av δ k endast kräver en jämförelse Talen σ k är lagrade konstanter, vilkas värden beror av värdet på m Om m, så är σ k arctan 2 k, om m 0, så är σ k 2 k, och om m, så är σ k tanh 2 k För att kunna använda dessa ekvationer, måste man ange utgångsvärdena x 0,y 0 och z 0 Ett av dessa tal (tex z 0 ) kan vara den vinkel vars sinus vi önskar beräkna Eller också kan två av talen (tex x 0 och y 0 ) vara täljare och nämnare i den kvot vi vill approximera I varje fall måste utgångsvärdena var begränsade till ett visst intervall kring origo, så att man kan försäkra sig om konvergens Som vi ser av

Vetenskapliga beräkningar III 2 exemplen, kommer en av variablerna att gå mot noll, medan någon av de andra närmar sig den önskade approximationen Vi skall nu tillämpa CORDIC algoritmen på division Antag att m 0, δ k sgn(y k ) och σ k 2 k Nedanstående iterativa ekvationer kommer då att ge successiva approximationer för kvoten y 0 /x 0 då y 0 /x 0 2: x k+ x 0 y k+ y k + δ k x 0 2 k z k+ z k δ k 2 k (σ k 2 k ) Som vi ser, innehåller ekvationerna endast additioner, subtraktioner, jämförelser och binära skiftoperationer Om z 0 0, så finner vi att z n+ y 0 /x 0 < 2 n, förutsatt att y 0 /x 0 2 Detta inses på följande sätt Efter ett stort antal iterationer n, så är y k+ 0, och vi får y 0 n δ k x 0 2 k, eller alltså y 0 /x 0 n δ k 2 k med ett fel som understiger 2 n Å andra sidan följer av den tredje ekvationen ovan att z n+ n δ k 2 k (eftersom z 0 0), varav påståendet följer Som ett exempel på användningen, kan vi beräkna 2/2 05274 Vi får då x 0 2 samt k y k z k δ k 0 2 0 + 2 005 05 0525 075 + 4 0275 0625 + 5 00975 05625 + 6 002875 0525 + 7 0040625 055625 8 00090625 052475 + Som vi ser, är felet i z 8 0007 < 2 8 0009 För att approximera sinus och cosinus av en vinkel z 0 θ, π/2 θ π/2 använder vi CORDIC algoritmen med m, δ k sgn(z k ) och σ k arctan 2 k : x k+ x k δ k y k 2 k y k+ y k + δ k x k 2 k z k+ z k δ k arctan 2 k (σ k arctan 2 k ) Begynnelsevärdena är x 0 K n j0 cos(σ j ), y 0 0 och z 0 θ, som är den givna vinkeln (i radianer) På grund av det sätt varpå z konstrueras, kommer z k att närma sig 0 Därvid närmar sig x cos θ och y sin θ, som vi ser av exemplet nedan

Vetenskapliga beräkningar III 24 Nedanstående MATLAB program gör 47 iterationer av algoritmen för att approximera sinus och cosinus av en vinkel θ inom intervallet π/2, π/2 Vi ger också en utskrift från programmet, som visar hur z värdena avtar, samtidigt som x värdena närmar sig cos och y värdena sin function cordtrig(t) n48; xzeros(n,); yx; zx; s2^(0:-:-46); sigatan(s); Kprod(cos(sig)); x()k; y()0; z()t; for j:n-, delsign(z(j)); if del 0 del ; end; x(j+) x(j) - del*y(j)*s(j); y(j+) y(j) + del*x(j)*s(j); z(j+) z(j) - del*sig(j); end answer x y z Resultatet av en beräkning med t (endast början och slutet): 06072529500888 0 00000000000000 06072529500888 06072529500888 024608660255 0062646750444 09087940252-02490457729825 05468277 084972785672-000406709279 0657796742 076855449587062 0202878852757 058768260455 08082868656470 00578690752794 05624242957942 08266596752750 0026629248495 05495078588059 085498474929 00005522867 054298098499574 089728772967 0009726857 0597007784480 084858967688-000070579640 05400205875 08447098480468 000000000000595 0540020587009 08447098480665 0000000000002 0540020586855 0844709848076 000000000000049 0540020586779 0844709848082-000000000000042 054002058687 08447098480788 000000000000004 0540020586798 08447098480800-00000000000009 0540020586808 08447098480794-000000000000008 054002058682 0844709848079-000000000000002 054002058685 08447098480789 00000000000000 054002058684 08447098480790 000000000000000 Varför fungerar algoritmen? Låt oss först analysera geometrin genom att omskriva ekvationerna för x och y i matrisform: xk+ y k+ δ k 2 k δ k 2 k xk y k

Vetenskapliga beräkningar III 25 Eftersom σ k arctan 2 k så är tan σ k 2 k och sin σ k cos σ k 2 k Härav följer, att den tvåradiga matrisen ovan kan skrivas cos σ k cos σ k δ k cos σ k 2 k δ k cos σ k 2 k cos σ k cos σ k cos σ k Detta är en skalad rotation i planet, eftersom matrisen cos(δk σ k ) sin(δ k σ k ) sin(δ k σ k ) cos(δ k σ k ) cos σk δ k sin σ k δ k sin σ k cos σ k cos(δk σ k ) sin(δ k σ k ) sin(δ k σ k ) cos(δ k σ k ) ger upphov till en motsols rotation med rotationsvinkeln δ k σ k ±σ k ± arctan 2 k, medan faktorn / cos σ k skalar resultatet Geometriskt kommer vektorn (x k, y k ) att roteras vinkeln ±σ k ± arctan 2 k, varpå den töjs ut med en faktor / cos σ k Härefter är det lätt att se att algoritmen fungerar Av ekvationen z k+ z k δ k arctan 2 k och z 0 θ följer att z n+ θ n δ k σ k Man kan visa, att för stora värden av n gäller z n+ 0, och således är θ n δ k σ k Genom att kombinera n + rotationer, finner vi att x värdena närmar sig cos θ och y värdena närmar sig sin θ: x y x2 y 2 xn+ y n+ cos(δ0 σ 0 ) sin(δ 0 σ 0 ) K cos σ 0 sin(δ 0 σ 0 ) cos(δ 0 σ 0 ) 0 cos σ 0 cos σ cos(δ0 σ 0 + δ σ ) sin(δ 0 σ 0 + δ σ ) sin(δ 0 σ 0 + δ σ ) cos(δ 0 σ 0 + δ σ ) K 0 cos( n δ k σ k ) sin( n δ k σ k ) K cos σ 0 cos σ cos σ n sin( n δ k σ k ) cos( n δ k σ k ) 0 cos θ sin θ K cos θ K sin θ cos θ 0 sin θ Av programkoden ovan verkar det som om man borde känna värden både av arctan och cosinus för att kunna använda den Observera dock, att endast speciella värden av σ k och cos σ k behövs då algoritmen kodas i hårdvaran Dessa värden kan beräknas på förhand och lagras i flyttalsprocessorn