diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp10.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp10.png new file mode 100644 index 0000000..735abb3 Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp10.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp11.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp11.png new file mode 100644 index 0000000..14105ad Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp11.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp12.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp12.png new file mode 100644 index 0000000..ae580b3 Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp12.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp13.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp13.png new file mode 100644 index 0000000..4fd192b Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp13.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp14.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp14.png new file mode 100644 index 0000000..95e6d9b Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp14.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp2.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp2.png new file mode 100644 index 0000000..7d60e3f Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp2.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp3.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp3.png new file mode 100644 index 0000000..18b0a8e Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp3.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp4.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp4.png new file mode 100644 index 0000000..1088c4c Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp4.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp6.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp6.png new file mode 100644 index 0000000..18089d3 Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp6.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp7.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp7.png new file mode 100644 index 0000000..fceba0e Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp7.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp8.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp8.png new file mode 100644 index 0000000..6ef7a46 Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp8.png differ diff --git a/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp9.png b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp9.png new file mode 100644 index 0000000..1aa1962 Binary files /dev/null and b/advanced_programming/slides_t2/img/T2_NumAnalysis-SymComp9.png differ diff --git a/advanced_programming/slides_t2/out.md b/advanced_programming/slides_t2/out.md new file mode 100644 index 0000000..7dc08de --- /dev/null +++ b/advanced_programming/slides_t2/out.md @@ -0,0 +1,201 @@ + __Topic \#2__ __Numerical__ __ __ __analysis__ __ __ __and__ __ __ __symbolic__ __ __ __computation__ + +![](img/T2_NumAnalysis-SymComp0.png) + +__What__ __ __ __is__ __ __ __it__ __?__ + +Numerical analysis + +Symbolic computation + +__Which__ __ __ __tools__ __ __ __can__ __ __ __we__ __ __ __use__ __?__ + + scipy + + sympy + +![](img/T2_NumAnalysis-SymComp1.png) + +__Background __ __info__ __ – __ __David‘s__ __ __ __compendium__ __ __ __reloaded__ __\!__ + +[https://davrot\.github\.io/pytutorial](https://davrot.github.io/pytutorial/)[/](https://davrot.github.io/pytutorial/) + +__Topics:__ + +Sympy + +Numerical Integration\, Differentiation\, and Differential Equations + +__Which__ __ __ __mathematical__ __ __ __problems__ __ __ __are__ __ __ __we__ __ __ __interested__ __ in?__ + +Solving equations \(only symbolic\) + +Integrals over functions + +Derivatives of functions + +Solving differential equations + +__Numerical__ __ __ __solutions__ __ will \(__ __almost__ __\) __ __always__ __ __ __be__ __ __ __approximations__ __\! __ + +Precision is limited + +Range is limited + +Algorithm is approximating + +Errors can accumulate dramatically \(stability of algorithms\) + +__Examples__ __ __ __of__ __ __ __errors__ __:__ + +Multiplication\, one decimal place: 2\.5 \* 2\.5 = 6\.25 + +Addition\, 8\-bit unsigned int: 200\+200 = 400 + +Euler integration of ODE __\(__ __ Whiteboard\)__ + + __Integrals __ __over__ __ __ __functions__ __ \(‚__ __quadrature__ __‘\)__ + +![](img/T2_NumAnalysis-SymComp2.png) + +__Numerical__ __ __ __methods__ + +Integral = area under curve + +Approximate area by many small boxes\, e\.g\. by _midpoint_ _ _ _rule_ : + +![](img/T2_NumAnalysis-SymComp3.png) + +![](img/T2_NumAnalysis-SymComp4.png) + +_Trapezoidal_ _ _ _rule_ _: _ + + __worse__ __ __ __than__ __ __ __midpoint__ __\!__ + +![](img/T2_NumAnalysis-SymComp5.png) + +approximate by parabolas + +_Simpson‘s_ _ _ _rule_ _: _ + +__Numerical__ __ __ __methods__ __:__ + +![](img/T2_NumAnalysis-SymComp6.png) + +__Symbolic__ __ __ __Methods__ + +We will use module __sympy__ \. + +For symbolic operations \(i\.e\.\, without concrete numbers\)\, we have to __declare__ __ variables/__ __symbols__ \(and later functions…\)\. + +For __mathematical__ __ __ __functions__ __ such __ __as__ __ cos\(…\)__ \, use the sympy equivalents \(not from math or numpy modules\!\) + +![](img/T2_NumAnalysis-SymComp7.png) + +For __definite __ __integrals__ \, we can specify boundaries a and b by __creating__ __ a __ __tuple__ __\(x\, a\, b\)__ for the second argument\. + +The solution can be __evaluated__ by using the methods __\.__ __subs__ __\(variable\, __ __value__ __\) __ to substitute a value for a variable and __\.__ __evalf__ __\(\) __ to get a numerical output\. + + __„Genug für heute?“__ + +[https://davrot\.github\.io/pytutorial/sympy/intro](https://davrot.github.io/pytutorial/sympy/intro/) [/](https://davrot.github.io/pytutorial/sympy/intro/) + +[https://davrot\.github\.io/pytutorial/numpy/7](https://davrot.github.io/pytutorial/numpy/7/) [/](https://davrot.github.io/pytutorial/numpy/7/) + +[https://davrot\.github\.io/pytutorial/numpy/8](https://davrot.github.io/pytutorial/numpy/8/) [/](https://davrot.github.io/pytutorial/numpy/8/) + + __Example__ __ live\-__ __coding__ __:__ integration and differentiation \, stability and instability + + __Differentiation __ __of__ __ __ __functions__ + +__Numerical__ __ __ __methods__ __:__ + +__centered__ __ __ __differentiation__ + +__right\-sided__ __ __ __differentiation__ + +![](img/T2_NumAnalysis-SymComp8.png) + +--- + +Note: also important for integration of DEQs, since differential approximated by the same equations + + +__Symbolic__ __ __ __methods__ __:__ + +For differentiation\, the corresponding command is __diff__ : + +![](img/T2_NumAnalysis-SymComp9.png) + + __Integration __ __of__ __ differential __ __equations__ + +__Differential __ __quotient__ __ __ __approximated__ __ __ __by__ __ finite __ __difference__ \, like in previous example\. Solution constructed by considering the following aspects: + +What do we want to know\, what is known? + +Where do we start?  __Initial __ __value__ __ __ __problem__ … + +How far do we step?  Smaller than fastest timescale implies __maximum__ __ __ __step__ __ __ __size__ + + __Warning__ __:__ + +differentiation / integration of functions can be performed in parallel\, + +differential equations require an iterative solution which can not be parallelized \! + + __What__ __ __ __about__ __ __ __systems__ __ __ __of__ __ differential __ __equations__ __?__ + +…just solve them in parallel \(see previous slide\) + +__Higher\-order __ __methods__ + +Idea: approximate differential quotient more precisely… + +__Solution \(Runge\-__ __Kutta__ __ 2nd __ __order__ __\):__ + +Go ahead with Euler by half of the stepsize… + +…use slope at that position for an Euler with the full stepsize\. + +__Numerical__ __ __ __methods__ __:__ + +![](img/T2_NumAnalysis-SymComp10.png) + +![](img/T2_NumAnalysis-SymComp11.png) + +__Symbolic__ __ __ __methods__ __:__ + +In addition to declaring variables\, you need… + +…to __declare__ __ __ __functions__ \(for the solution we are looking for\) + +…to __define__ __ __ __the__ __ \(differential\) __ __equation__ + +…and the __command__ __ __ __dsolve__ __ __ for \(trying to\) solve the DEQ: + +![](img/T2_NumAnalysis-SymComp12.png) + +__Symbolic__ __ __ __methods__ __\, __ __cont‘d__ __…__ + +For including initial conditions\, __dsolve__ __ __ has the __optional __ __argument__ __ __ __ics__ \. + +With __ __ __lambdify__ \, You can __convert__ __ __ __the__ __ RHS __ __of__ __ __ __the__ __ __ __solution__ __ __ __to__ __ a normal __ __numpy__ __ __ __function__ : + +Query the new function as to __which__ __ __ __arguments__ __ __ __it__ __ __ __takes__ \, and in which order \( __import__ __ __ __inspect__ __ __ for that purpose\) + +![](img/T2_NumAnalysis-SymComp13.png) + +__What__ __ __ __about__ __ partial differential __ __equations__ __?__ + +For example\, the cable equation: + +![](img/T2_NumAnalysis-SymComp14.png) + + __More __ __information__ __:__ + +[https://davrot\.github\.io/pytutorial/sympy/intro](https://davrot.github.io/pytutorial/sympy/intro/) [/](https://davrot.github.io/pytutorial/sympy/intro/) + +[https://davrot\.github\.io/pytutorial/numpy/7](https://davrot.github.io/pytutorial/numpy/7/) [/](https://davrot.github.io/pytutorial/numpy/7/) + +[https://davrot\.github\.io/pytutorial/numpy/8](https://davrot.github.io/pytutorial/numpy/8/) [/](https://davrot.github.io/pytutorial/numpy/8/) +