Projekt: Inovace výuky optiky se zaměřením na získání experimentálních dovedností Registrační číslo: CZ.1.07/2.2.00/28.0157 Numerické metody a programování Lekce 1 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
Numerické metody a programování Obsah přednášky 1. Mathematica: základy programování, symbolické výpočty, vizualizace dat. 2. Programování v prostředích Matlab/Octave: srovnání s jazykem C, knihovny funkcí, vytváření uživatelských funkcí. 3. Úvod do numerických metod: přesnost, zaokrouhlovací chyby, stabilita. 4. Algebra: práce s vektory a maticemi, řešení algebraických rovnic, SVD, Choleského dekompozice. 5. Aproximace funkcí: interpolace, extrapolace, interpolační mnohočleny, spliny. 6. Numerická integrace/derivace: elementární a pokročilé algoritmy, multi dimenzionální integrace, integrace obyčejných diferenciálních rovnic. 7. Řešení soustav nelineárních rovnic: bisekce, Newtonova Raphsonova metoda. 8. Optimalizace: gradientní metody, downhill simplex ve více dimenzích, metoda konjugovaného gradientu, lineární programování. 9. Modelování: metoda nejmenších čtverců, teorie odhadu, nelineární modely, konfidenční intervaly. 10. Fourierova transformace: spojitá a diskrétní transformace, FFT algoritmus a jeho použití, Nyquistova frekvence, diskrétní Fourierova transformace 2D a 3D. 11. Aplikace I: numerická simulace šíření optického signálu, Fresnelova difrakce, požadavky na vzorkování, aliasing. 12. Aplikace II: analýza zobrazovacích systémů a aberací, šíření v turbulentním prostředí, rekonstrukce vlnoplochy. Doporučená literatura E. Vitásek, Numerické metody (SNTL, Praha, 1987). W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery, Numerical Recipes in C, (Cambridge University Press, Cambridge, 1992); dostupné online na http://www.nr.com J.D. Schmidt, Numerical Simulation of Optical Wave Propagation (SPIE Press, 10) Manuály Matlab/Octave (http://www.octave.cz), Mathematica, Oslo (http://www.lambdares.com) Mathematica (Wolfram Research) http://www.wolfram.com/mathematica/ symbolické výpočty numerické výpočty vizualizace dat a výsledků
prirazeni, relace a 1 1 a 1 a. a a a 1 1 a a 1 2 a ; a 3 a 5 8 b 1 1 a b True a b False komplexni cisla x 2 I 2 x^2 3 4 Re x 2 1 math_tisk.nb
Im x 1 Abs x 5 Arg x ArcTan 1 2 Conjugate x 2 x. f x^2 Abs x ^2 x 2 Abs x 2 Simplify f x 2 Abs x 2 Simplify f, Im x 0 0 ridici struktury a 2; b 4; If a b, mensi a, mensi b ; mensi 2 For i 1, i 10, i, Print i 1 2 3 4 5 6 7 8 9 10 2 math_tisk.nb
suma 0 0 For i 1, i 10, i, suma i Print suma 55 suma 0; i 1; While i 10, suma i; i 2 Print suma 25 min a_, b_ : If a b, a, b min 1, 2 1 min 3, 4 3 vektory, matice v 1, 2, 3 1, 2, 3 Sqrt v 1, 2, 3 v.v 14 v Table Cos x, x, 0, 2 Π, Π 2 1, 0, 1, 0, 1 v2 Table x, x, 0, 2 Π, Π 2 0, Π 2, Π, 3 Π Cos v2 2, 2 Π 1, 0, 1, 0, 1 m 2, 1, 1, 3 2, 1, 1, 3 MatrixForm m 2 1 1 3 3 math_tisk.nb
m 1, 2 1 v 1, 1 1, 1 MatrixForm v 1 1 MatrixForm m.v 3 2 a a11, a12, a21, a22 a11, a12, a21, a22 b b11, b12, b21, b22 b11, b12, b21, b22 c a.b; c MatrixForm a11 b11 a12 b21 a11 b12 a12 b22 a21 b11 a22 b21 a21 b12 a22 b22 Det a a12 a21 a11 a22 Tr a a11 a22 linearni algebra a 0, 1, 1, 1, 1, 1, 1, 1, 0 ; a MatrixForm 0 1 1 1 1 1 1 1 0 eig Eigenvalues a 1 2, 1, 1 2 vec Eigenvectors a 1, 2, 1, 1, 0, 1, 1, 2, 1 a.vec 1 1 2, 2 2, 1 2 4 math_tisk.nb
eig 1 vec 1 1 2, 2 1 2, 1 2 b Inverse a ; b MatrixForm 1 1 0 1 1 1 0 1 1 a.b MatrixForm 1 0 0 0 1 0 0 0 1 prava 1, 2, 3 1, 2, 3 x b.prava 1, 2, 1 a.x prava True vyrazy a.; b.; c.; x.; f1 x x f2 Exp x x f f1 f2 x x derivace D f, x x x x D f, x, x 2 x x x integrace 5 math_tisk.nb
integral Integrate f, x x 1 x tem D integral, x x x 1 x simp Simplify tem x x simp f True Integrate Exp x^2, x, Infinity, Infinity Π vysl Integrate Exp a x^2, x, Infinity, Infinity If Re a 0, Π a, Integrate a x2, x,,, Assumptions Re a 0 Simplify vysl, a 0 Π a Plot Cos x^2, x, 0, 5 1.0 0.5 1 2 3 4 5 0.5 1.0 Integrate Cos x^2, x, 0, Α Π 2 2 FresnelC Π Α 6 math_tisk.nb
Plot Integrate Cos x^2, x, 0, Α, Α, 0, 10, PlotRange 0, 1, PlotPoints 5 1.0 0.8 0.6 0.4 0.2 0 2 4 6 8 10 Integrate Cos x^2, x, 0, 1 N 0.904524 NIntegrate Cos x^2, x, 0, 1 0.904524 i1 Integrate Cos x^2, x, 0, 100 N 0.625129 NIntegrate Cos x^2, x, 0, 100 NIntegrate::ncvb : NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in x near x 0.. NIntegrate obtained 0.4808197282114536` and 0.0116887984970139` for the integral and error estimates. 0.48082 i2 NIntegrate Cos x^2, x, 0, 100, MaxRecursion 10 0.625129 i1 i2 8.54872 10 15 soucty rad Sum n^2, n, 1, 3 14 Sum 1 n^2, n, 1, Infinity Π 2 6 7 math_tisk.nb
Sum 1 2^n, n, 0, Infinity 2 Simplify Sum n, n, 1, a 1 a 1 a 2 rovnice Solve 2 x 5 0, x x 5 2 Solve 2 x y 1, x y 2, x, y x 1, y 1 Solve a x^2 b x c 0, x x b b2 4 a c 2 a, x b b2 4 a c 2 a f Expand x 2 x 1 x 2 4 4 x x 2 x 3 Solve f 0, x x 2, x 1, x 2 f Cos x x x Cos x Solve f 0, x Solve::tdep : The equations appear to involve the variables to be solved for in an essentially non algebraic way. Solve x Cos x 0, x vysl FindRoot f, x, 1 x 0.739085 Cos vysl 1, 2 0.739085 diferencialni rovnice 8 math_tisk.nb
DSolve y' x y x a Sin x, y x, x y x x C 1 1 a Cos x Sin x 2 DSolve y'' x k^2 y x 0, y x, x y x C 1 Cos k x C 2 Sin k x DSolve y'' x k^2 y x 0, y 0 1, y x, x y x Cos k x C 2 Sin k x DSolve y'' x k^2 y x 0, y 0 1, y' 0 0, y x, x y x Cos k x trigonometricke funkce Cos x y Cos x y vysl TrigExpand Cos x y Cos x Cos y Sin x Sin y TrigFactor vysl Cos x y f n1 Cos Α 2 n2 Cos Α 1 n1 Cos Α 2 n2 Cos Α 1 n2 Cos Α 1 n1 Cos Α 2 n2 Cos Α 1 n1 Cos Α 2 n1 n2 Sin Α 2 Sin Α 1 n2 Csc Α 1 Sin Α 2 f2 Simplify f Sin 2 Α 1 Sin 2 Α 2 Sin 2 Α 1 Sin 2 Α 2 TrigFactor f2 Cot Α 1 Α 2 Tan Α 1 Α 2 TrigToExp Sin x 1 2 x 1 2 x 9 math_tisk.nb
ExpToTrig Exp I x Cos x Sin x rozvoj v radu Series Exp x, x, 0, 3 1 x x2 2 x3 6 O x 4 Series Sqrt 1 x, x, 0, 3 1 x 2 x2 8 x3 16 O x 4 Series n 2 n 3, n, Infinity, 3 1 1 n 3 n 2 9 n 3 O 1 n 4 Normal 1 9 n 3 3 n 2 1 n grafy funkci plot1 Plot Sin x, x, 5, 5 1.0 0.5 4 2 2 4 0.5 1.0 10 math_tisk.nb
plot2 Plot Sin x 1, x, 5, 5 1.0 0.5 4 2 2 4 0.5 1.0 Show plot1, plot2, AxesLabel x, y y 1.0 0.5 4 2 2 4 x 0.5 1.0 f Sin Sqrt x^2 y^2 Sqrt x^2 y^2 Sin x 2 y 2 x 2 y 2 11 math_tisk.nb
Plot3D f, x, 30, 30, y, 30, 30 0.1 0.0 0.1 0 0 Plot3D f, x, 30, 30, y, 30, 30, PlotRange 0.2, 1 1.0 0.5 0.0 0 0 12 math_tisk.nb
Plot3D@f, 8x, - 30, 30<, 8y, - 30, 30<, PlotRange 8-0.1, 1<, PlotPoints 50D 1.0 0.5 0.0 0-0 - DensityPlot@f, 8x, -, <, 8y, -, <, PlotRange 8-0.22, 0.7<, PlotPoints 100D 10 0-10 - - -10 0 10 H* vizualizace dat *L a = Table@Sin@xD, 8x, - 5, 5, 0.1<D; 13 math_tisk.nb
ListPlot a 1.0 0.5 40 60 80 100 0.5 1.0 a Table x, Sin x, x, 5, 5, 0.1 ; ListPlot a 1.0 0.5 4 2 2 4 0.5 f 1.0 Sin x 2 y 2 x 2 y 2 a Table Sin x, x, 0, 5, 0.5 ; BarChart a 1.0 0.5 0.5 1.0 a Table f, x, 10.001, 10, y, 10.001, 10 ; 14 math_tisk.nb
ListPlot3D a, InterpolationOrder 0 0.4 0.2 0.0 0.2 15 5 10 10 15 5 ListPlot3D a 0.4 0.2 0.0 0.2 15 5 10 10 15 5 15 math_tisk.nb
ListDensityPlot a, InterpolationOrder 0 15 10 5 5 10 15 ListDensityPlot a, InterpolationOrder 3 15 10 5 5 10 15 a Table Exp i j, i, 1, 4, j, 1, 4 1, 1, 1 2, 1 3,, 1, 1, 1 2, 2,, 1, 1, 3, 2,, 1 16 math_tisk.nb
BarChart3D a, ChartLayout "Grid", Boxed False, ChartStyle Directive EdgeForm Black, Blue, ChartLabels 1, 2, 3, 4, Method "Canvas" None, Ticks None, ViewPoint 10, 30, 15, PlotRange Max a, Max a 1 2 3 4 cteni dat ze souboru data ReadList "data.txt", Number, RecordLists True ; Max data 232. Min data 35. 17 math_tisk.nb
obr1 = ListDensityPlot@data, PlotRange All, Frame False, InterpolationOrder 0D obr2 = ListPlot3D@data, Mesh False, Ticks FalseD H* export grafiky do souboru *L Export@"obrazek1.jpg", obr1d obrazek1.jpg 18 math_tisk.nb
Export "obrazek2.jpg", obr2 obrazek2.jpg cviceni prvocisla prvocisla max_ : Print 2 ; For i 3, i max, i 2, prvoc True; For del 3, del Sqrt i, del 2, If Divisible i, del, prvoc False If prvoc, Print i prvocisla 100 19 math_tisk.nb
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 prvocisla max_ : list 2 ; For i 3, i max, i 2, prvoc True; For del 3, del Sqrt i, del 2, If Divisible i, del, prvoc False If prvoc, list Append list, i ; list prvocisla 100 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 statistika d ReadList "statistika.txt", Number ; math_tisk.nb
pocet Length d 10 000 Mean d N 3.9678 Variance d N 3.94736 plot1 Histogram d 00 1500 1000 500 5 10 15 p Table pocet PDF PoissonDistribution 4, i, i, 0, 15 ; plot2 ListPlot p 00 1500 1000 500 5 10 15 21 math_tisk.nb
Show plot1, plot2 00 1500 1000 500 5 10 15 p2 Table i 0.5, pocet PDF PoissonDistribution 4, i, i, 0, 15 ; plot3 ListPlot p2 00 1500 1000 500 Show plot1, plot3 5 10 15 00 1500 1000 500 5 10 15 difrakce z. 22 math_tisk.nb
u Integrate Exp I x Ξ ^2 z, Ξ, 1, 1 z 1 2 2 Π Erf 1 1 4 1 x 2 z z Erf 1 1 4 1 x z z 0.01 0.01 Plot Abs u, x, 2, 2, AxesOrigin 0, 0, PlotRange All 15 10 5 2 1 1 2 z 0.3 0.3 Plot Abs u, x, 10 z, 10 z, AxesOrigin 0, 0, PlotRange All 4 3 2 1 3 2 1 1 2 3 z 100 100 23 math_tisk.nb
Plot Abs u, x, 10 z, 10 z, AxesOrigin 0, 0, PlotRange All 0.0 0.015 0.010 0.005 1000 500 500 1000 z. u 1 2 2 Π Erf 1 1 4 1 x 2 z z Erf 1 1 4 1 x z fresnel x_, z_ : 1 2 2 Π 2 Erf 1 1 4 1 x z z Erf 1 1 4 1 x z 24 math_tisk.nb
Animate Plot Abs fresnel x, z, x, 10 z, 10 z, AxesOrigin 0, 0, PlotRange All, z, 0.1, 1, AnimationRunning False z 1.0 0.5 1.0 0.5 0.5 1.0 0.5 1.0 25 math_tisk.nb