Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
MATEMATISKA VETENSKAPER TMV225 2016
Chalmers tekniska h
¨
ogskola L
¨
asvecka 5
Examinator: Anders Logg
TMV225 Inledande matematik M
Veckoprogram f
¨
or l
¨
asvecka 5
Efter att ha avslutat vart studie av derivator kommer vi den h
¨
ar veckan att fokusera pa ber
¨
aknings-
matematik och f
¨
orbereda oss inf
¨
or l
¨
asvecka 6 da vi skall studera och implementera generella
algoritmer f
¨
or ekvationsl
¨
osning. Det blir en f
¨
orel
¨
asning med ny teori da vi studerar Lipschitz-
kontinuitet som
¨
ar ett centralt verktyg f
¨
or konstruktion och analys av l
¨
osningsalgoritmerna, men
vi kommer framf
¨
orallt att fokusera pa programmering, bade pa f
¨
orel
¨
asningarna och
¨
ovningarna.
Ta chansen att jobba ikapp med tidigare uppgifter om du ligger efter, och gl
¨
om inte att g
¨
ora
veckans datordugga (dugga nummer 2) f
¨
or att samla bonuspo
¨
ang inf
¨
or tentan!
Vi ses pa f
¨
orel
¨
asningarna!
Anders
Forelasningar Avsnitt1 Innehall
F12 — Lipschitz-kontinuitetF13 — Flyttal och avrundningsfelF14 — Berakningsmatematik
Ovningar Uppgifter2
O12 Ovning 5.1–5.10 (a) och (b)O13 Problem 5.1–5.5 + gamla uppgifter om du ligger efterO14 Datorovning 5.1–5.5
http://xkcd.com/
1AE = Adams/Essex, AL = Anteckningar i inledande matematik, RP = Pettersson, JM = Madjarova
2Understrukna uppgifter = extra viktiga, alternativt demonstreras av
¨
ovningsledare.
Uppgifter läsvecka 5
Övningar
Övning 5.1 Bestäm en Lipschitz-konstant på intervallet [�10,10] för följande funktionergenom att använda Lipschitz-konstantens definition.(a) f (x) = kx+m (b) f (x) = 5 (c) f (x) = 1/x (d) f (x) = |x| ⌅
Övning 5.2 Bestäm en Lipschitz-konstant på intervallet [2,5] för följande funktioner genomatt använda Lipschitz-konstantens definition.(a) f (x) = x
2 (b) f (x) = x
3 (c) f (x) = x
n (n 2 Z+) (d) f (x) = x
�n (n 2 Z+) ⌅
Övning 5.3 Bestäm en Lipschitz-konstant för funktionen f (x) = x
2/(x+ 1) på följandeintervall genom att använda Lipschitz-konstantens definition.(a) [0,1] (b) [1,2] (c) [�3,�1] (d) [�3,�2] ⌅
Övning 5.4 Bestäm en Lipschitz-konstant för funktionen f (x) = 3+2p
1+ |x| på följandeintervall genom att använda Lipschitz-konstantens definition.(a) [1,2] (b) [0,1] (c) [�1,0] (d) [�1,1] ⌅
Övning 5.5 Bestäm den bästa möjliga Lipschitz-konstanten på intervallet [�10,10] förföljande funktioner genom att derivera.(a) f (x) = kx+m (b) f (x) = 5 (c) f (x) = 1/x (d) f (x) = |x| ⌅
Övning 5.6 Bestäm den bästa möjliga Lipschitz-konstanten på intervallet [2,5] för följandefunktioner genom att derivera.(a) f (x) = x
2 (b) f (x) = x
3 (c) f (x) = x
n (n 2 Z+) (d) f (x) = x
�n (n 2 Z+) ⌅
Övning 5.7 Bestäm den bästa möjliga Lipschitz-konstanten för funktionen f (x) = x
2/(x+1)på följande intervall genom att derivera.(a) [0,1] (b) [1,2] (c) [�3,�1] (d) [�3,�2] ⌅
Övning 5.8 Bestäm den bästa möjliga Lipschitz-konstanten för funktionen f (x) = 3 +2p
1+ |x| på följande intervall genom att derivera.(a) [1,2] (b) [0,1] (c) [�1,0] (d) [�1,1] ⌅
Övning 5.9 Bestäm Taylor-polynomet P3(x) runt x = 1 för följande funktioner.(a) f (x) = sin(px) (b) f (x) = sin(lnx) (c) f (x) = 3x
2 +5x+1(d) f (x) = sin(lnx)+3x
2 +5x+1 ⌅
Övning 5.10 Bestäm Taylor-polynomet P3(x) för f (x) = (x+1)/(x+2) runt följande punk-ter.(a) x = 0 (b) x =�1 (c) x =�2 (d) x = 2 ⌅
Problem
Problem 5.1 Visa att om f : R ! R är Lipschitz-kontinuerlig och talföljden (xn
)•n=0 är
konvergent, så är också talföljden ( f (xn
))•n=0 konvergent. ⌅
Problem 5.2 Visa att f (x) =p
x inte är Lipschitz-kontinuerlig på intervallet [0,1]. ⌅
Problem 5.3 För vilka a är f (x) = x
a Lipschitz-kontinuerlig på intervallet [0,1]? ⌅
Problem 5.4 En kula med vikten 7.26 kg skall tillverkas av järn (densitet r = 7.874 g/cm3).Hur noggrannt måste kulans radie bestämmas (i absoluta tal) för att noggrannheten i kulansvikt skall vara 1h? Ledning: Använd Lipschitz-villkoret. ⌅
Problem 5.5 Hur noggrannt måste längden L på ett pendelur bestämmas för att uret skalldra sig maximalt en sekund på ett år? Ledning: Använd Lipschitz-villkoret och antag attperiodtiden T = 1 s ges av T = 2p
pL/g för g = 9.81 m/s2. ⌅
Datorövningar
Datorövning 5.1 Skriv ett program som (approximativt) beräknar Lipschitz-konstanten förfunktionen f (x) = sin(cos(ln(px))) på intervallet [1,100]. Ledning: Låt x=linspace(1,100,N) och använd funktionerna diff och max. ⌅
Datorövning 5.2 Försök att på samma sätt bestämma Lipschitz-konstanten för funktionenf (x) = sin(tan(x)) på intervallet [0,p/2]. ⌅
Datorövning 5.3 Skriv ett program som beräknar summan ÂN
n=1 n, dels genom att användaen loop och dels genom att använda funktionen sum. Plotta tiden det tar att beräkna summansom funktion av N för båda tillvägagångssätten. Ledning: Använd funktionen time.time iPython och funktionerna tic och toc i MATLAB. ⌅
Datorövning 5.4 Skriv ett program som beräknar produkten PN
n=1n = 1 · 2 · 3 · · ·N, delsgenom att använda en lopp och dels genom att använda funktionen prod. Plotta tiden det taratt beräkna summan som funktion av N för båda tillvägagångssätten. ⌅
Datorövning 5.5 Undersök hur många flyttal som maximalt kan lagras i datorns minne. Hurmånga bytes motsvarar detta? Jämför med datorns arbetsminne (RAM). Ledning: Användfunktionen ones(N) och experimentera med allt större N. Använd gärna en systemmonitor(“Aktivitetskontroll”, top eller liknande verktyg) för att övervaka processen när den allokerarminne. ⌅
FacitÖvningarÖ5.1 (a) L
f
= |k| (b) L
f
= 0 (c) Ej Lipschitz-kontinuerlig (d) L
f
= 1Ö5.2 (a) L
f
= 10 (b) L
f
= 75 (c) L
f
= n ·5n�1 (d) L
f
= n ·5n�1 ·2�2n
Ö5.3 (a) L
f
= 3 (b) L
f
= 2 (c) Ej Lipschitz-kontinuerlig (d) L
f
= 15Ö5.4 (a) L
f
= 1/p
2 (b) L
f
= 1 (c) L
f
= 1 (d) L
f
= 1Ö5.5 (a) L
f
= |k| (b) L
f
= 0 (c) Ej Lipschitz-kontinuerlig (d) L
f
= 1Ö5.6 (a) L
f
= 10 (b) L
f
= 75 (c) L
f
= n ·5n�1 (d) L
f
= n ·2�(n+1)
Ö5.7 (a) L
f
= 3/4 (b) L
f
= 8/9 (c) Ej Lipschitz-kontinuerlig (d) L
f
= 3/4
Ö5.8 (a) L
f
= 1/p
2 (b) L
f
= 1 (c) L
f
= 1 (d) L
f
= 1Ö5.9 (a) P3(x) = �p(x� 1)+ p
3(x� 1)3/6 (b) P3(x) = (x� 1)� (x� 1)2/2+(x� 1)3/6(c) P3(x) = 3x
2 +5x+1 (d) P3(x) = (x�1)� (x�1)2/2+(x�1)3/6+3x
2 +5x+1Ö5.10 (a) P3(x) = 1/2+ x/4� x
2/8+ x
3/16 (b) P3(x) = x+1� (x+1)2 +(x+1)3
(c) Existerar inte (d) P3(x) = 3/4+(x�2)/16� (x�2)2/64+(x�2)3/256
ProblemP5.1 Låt x = lim
n!• x
n
(som existerar) och låt f = f (x). Då gäller att | f � f (xn
)| = | f (x)�f (x
n
)|6 L
f
|x�x
n
|< e när |x�x
n
|< e/L
f
, vilket är uppfyllt för n tillräckligt stort eftersom(x
n
)•n=0 är konvergent.
P5.2 Antag att f (x) =p
x är Lipschitz-kontinuerlig med Lipschitz-konstant L
f
. Tag x1 = 0 ochx2 = x > 0. Då gäller att | f (x1)� f (x2)|6 L
f
|x1 � x2|, det vill säga |0�p
x|6 L
f
|0� x|,
px 6 L
f
x , L
f
> 1/p
x. Genom att låta x ! 0 ser vi att Lipschitz-konstanten inte ärbegränsad och att funktionen därmed inte är Lipschitz-kontinuerlig.
P5.3 Derivatan f
0(x) = ax
a�1 är begränsad på [0,1] för a > 1, vilket innebär att funktionen ärLipschitz-kontinuerlig med Lipschitz-konstanten L
f
= a .P5.4 Massan ges av m(r) = 4pr
3r/3. Derivera och få |Dm| 6 L
f
|Dr| med L
f
= 4pr
2r . Sätt
|Dm|/m 6 L
f
|Dr|/m = 1h, vilket ger |Dr|= 1⇥10�3 ·m/L
f
⇡ 20 µm.P5.5 Derivera och få |DT |6 L
f
|DL| med L
f
= p/p
Lg = 2p
2/(gT ). Sätt 365 ·24 ·3600 · |DT |6365 ·24 ·3600 ·L
f
|DL|= 1 s, vilket ger |DL|⇡ 16 nm.
DatorövningarD5.1
Python code
1 from pylab import *23 def f(x):4 return sin(cos(log(pi*x)))56 Ns = logspace(1, 6, 20)7 L_fs = []89 for N in Ns:
1011 x = linspace(1, 100 , int(N))12 y = f(x)1314 L_f = max(abs(diff(y) / diff(x)))15 L_fs.append(L_f)1617 print N, L_f18
19 figure ()20 plot(x, f(x))21 xlabel(’x’)22 ylabel(’f(x)’)23 grid(True)2425 figure ()26 semilogx(Ns , L_fs , ’-o’)27 xlabel(’N’)28 ylabel(’L_f’)29 grid(True)3031 show()
MATLAB code
1 f = @(x) sin(cos(log(pi*x)))23 Ns = logspace(1, 6, 20);4 L_fs = [];56 format long78 for N = Ns9
10 x = linspace(1, 100, round(N));11 y = f(x);1213 L_f = max(abs(diff(y) ./ diff(x)));14 L_fs = [L_fs L_f];1516 [N, L_f]1718 end1920 figure ()21 plot(x, f(x))22 xlabel(’x’)23 ylabel(’f(x)’)24 grid on2526 figure ()27 semilogx(Ns , L_fs , ’-o’)28 xlabel(’N’)29 ylabel(’L_f’)30 grid on
Lipschitz-konstanten skall konvergera mot L
f
= sin(log(p)) · cos(cos(log(p)))⇡ 0.8339.
D5.2
Python code
1 from pylab import *23 def f(x):4 return sin(tan(x))56 Ns = logspace(1, 6, 20)7 L_fs = []89 for N in Ns:
1011 x = linspace(0, pi/2, int(N))12 y = f(x)1314 L_f = max(abs(diff(y) / diff(x)))15 L_fs.append(L_f)1617 print N, L_f1819 figure ()20 plot(x, f(x))21 xlabel(’x’)22 ylabel(’f(x)’)23 grid(True)2425 figure ()26 semilogx(Ns , L_fs , ’-o’)27 xlabel(’N’)28 ylabel(’L_f’)29 grid(True)3031 show()
MATLAB code
1 f = @(x) sin(tan(x))23 Ns = logspace(1, 6, 20);4 L_fs = [];56 format long78 for N = Ns9
10 x = linspace(0, pi/2, round(N));11 y = f(x);1213 L_f = max(abs(diff(y) ./ diff(x)));14 L_fs = [L_fs L_f];1516 [N, L_f]1718 end1920 figure ()21 plot(x, f(x))22 xlabel(’x’)23 ylabel(’f(x)’)24 grid on2526 figure ()27 semilogx(Ns , L_fs , ’-o’)28 xlabel(’N’)29 ylabel(’L_f’)30 grid on
Funktionen är ej Lipschitz-kontinuerlig: L
f
! • på [0,b] då b ! p/2.
D5.3
Python code
1 from pylab import *2 from time import time34 Ns = logspace(1, 6, 20)5 t1 = []6 t2 = []78 for N in Ns:9
10 t = time()11 s = 012 for n in range(1, int(N) + 1):13 s += n14 t1.append(time() - t)1516 t = time()17 s = sum(range(1, int(N) + 1))18 t2.append(time() - t)1920 loglog(Ns, t1 , ’g-o’)21 loglog(Ns, t2 , ’r-o’)22 legend([’Loop’, ’sum()’])23 grid(True)24 show()
MATLAB code
1 Ns = logspace(1, 6, 20);2 t1 = [];3 t2 = [];45 for N = Ns67 tic()8 s = 0;9 for n = 1:N
10 s = s + n;11 end12 t1 = [t1, toc()];1314 tic()15 s = sum (1:N);16 t2 = [t2, toc()];1718 end1920 loglog(Ns, t1 , ’g-o’)21 hold on22 loglog(Ns, t2 , ’r-o’)23 legend(’Loop’, ’sum()’)24 grid on
D5.4
Python code
1 from pylab import *2 from time import time34 Ns = logspace(1, 5, 20)5 t1 = []6 t2 = []78 for N in Ns:9
10 t = time()11 p = 112 for n in range(1, int(N) + 1):13 p *= n14 t1.append(time() - t)1516 t = time()17 p = prod(range(1, int(N) + 1))18 t2.append(time() - t)1920 loglog(Ns, t1 , ’g-o’)21 loglog(Ns, t2 , ’r-o’)22 legend([’Loop’, ’prod()’])23 grid(True)24 show()
MATLAB code
1 Ns = logspace(1, 6, 20);2 t1 = [];3 t2 = [];45 for N = Ns67 tic()8 s = 1;9 for n = 1:N
10 s = s*n;11 end12 t1 = [t1, toc()];1314 tic()15 s = prod (1:N);16 t2 = [t2, toc()];1718 end1920 loglog(Ns, t1 , ’g-o’)21 hold on22 loglog(Ns, t2 , ’r-o’)23 legend(’Loop’, ’prod()’)24 grid on
D5.5
Python code
1 from pylab import *23 x = ones(8e9)4 print len(x)
MATLAB code
1 x = ones(2e9, 1);2 size(x)
(Python) På en modern laptop (2016) med 16 GB internminne (RAM) och väl tilltagetväxlingsutrymme (swap space) går gränsen vid ca 8⇥109 element (innan processen kraschar),vilket innebär 8⇥109 ·8 byte = 8⇥109 ·8/10243 GB ⇡ 59.6 GB. I god överensstämmelse meddetta rapporterar operativsystemet att Python-processen använder 60 GB.
(MATLAB) Med MATLAB går gränsen vid 2⇥109 element (innan MATLAB själv sätterstopp för större allokering), vilket innebär 2⇥109 ·8 byte = 2⇥109 ·8/10243 GB ⇡ 14.9 GB. Igod överensstämmelse med detta rapporterar operativsystemet att MATLAB-processen använder15 GB.