Symbolisches Rechnen
Vorlesung
Wintersemester 2006, 2014, 2026
Sommersemester 2021, 2025

Johannes Waldmann, HTWK Leipzig

<all>

Einleitung

Symbolisches Rechnen: Beispiele: Zahlen

Symbolisches Rechnen: Beisp.: Funktionen

Symbolisches Rechnen: Motivation

hat weitreichende Anwendungen:

ist nützlich im Studium, verwendet und vertieft:

Überblick

Literatur

Software

Beispiel: S.R. und Term-Ersetzung

Regeln für symbolisches Differenzieren (nach t):

 D(t) -> 1         D(constant) -> 0
 D(+(x,y)) -> +(D(x),D(y))
 D(*(x,y)) -> +(*(y,D(x)),*(x,D(y)))
 D(-(x,y)) -> -(D(x),D(y))

Robert Floyd 1967, zitiert in: Nachum Dershowitz: 33 Examples of Termination,

https://doi.org/10.1007/3-540-59340-3_2

Beispiel: Termersetzung (cont.)

data E = Zero | One | T 
       | Plus E E | Times E E  deriving Show

e :: E
e = let b = Plus T One in Times b b

d :: E ->  E
d e = case e of
    Zero -> Zero ; One -> Zero ; T -> One
    Plus x y -> Plus (d x) (d y)
    Times x y -> 
        Plus (Times y (d x)) (Times x (d y))

Beispiel: Inverse Symbolic Calculator

Hausaufgaben KW 15, Organisatorisches

  1. zum Haskell-Programm zum Symb. Differenzieren:

    • füge Syntax und Regel für Quotienten hinzu

    • schlage Regeln zur Vereinfachung vor

  2. ISC Simple Lookup and Browser sagt für 2+3\sqrt{2+\sqrt{3}}:

    Mixed constants with 5 operations
    1931851652578136 = 1/2/sin(Pi/12)

    begründen Sie das (geometrisch oder schriftlich)

  3. ein Polynom mit Nullstelle 22+33\sqrt[2]{2} +\sqrt[3]{3} bestimmen, nachrechnen.

  4. Geonext: Satz von Napoleon illustrieren (gleichseitige Dreiecke über den Seiten eines beliebigen Dreiecks)

  5. eigener Rechner: rlwrap maxima installieren,

    Rechner im Pool: ssh und tmux ausprobieren, auch Management von Sessions, Windows, Panes (split horizontal, vertikal), vgl. https://news.ycombinator.com/item?id=26670708

Organisatorisches:

Zahlen

Überblick

Darstellung natürlicher Zahlen

Natürliche Zahlen, Addition

Rekursive Multiplikation

Karatsuba-Multiplikation

Asymptotisch schnellere Multiplikation

Ganze Zahlen

Rationale Zahlen

Explosion der Stellenanzahl (Beispiel)

Endliche und unendliche „Dezimal“brüche

Berechenbare reelle Zahlen

Potenzreihen, Exponentialfunktion

Potenzreihe für Wurzelfunktion

Logarithmen

Taylor-Entwicklung log⁡(1+x)=x−x2/2+x3/3−…\log(1+x)=x-x^2/2+x^3/3- \ldots

konvergiert sehr langsam für x=1x=1, gar nicht für größere xx.

J.R. Young, 1835, siehe v. Mangoldt/Knopp, Bd. 2, S. 127 a=log⁡(16/15)=4log⁡2−1log⁡3−log⁡5,b=log⁡(25/24)=…c=log⁡(81/80)=…\begin{eqnarray*} a = \log (16/15) &=& 4\log 2-1 \log 3-\log 5, \\ b = \log (25/24) &=& \dots \\ c = \log (81/80) &=& \dots \end{eqnarray*} Umstellung ergibt log⁡2=7a+5b+3c,…\log 2 = 7a + 5b + 3c , \dots Aufgaben:

Pi

darüber gibt es ganze Bücher (Aufgabe: finde Beispiele)

Ansatz: Taylor-Entwicklung von arctan⁡x\arctan x

arctan⁡x=x−x3/3+x5/5−…\arctan x = x - x^3/3 + x^5/5 - \dots

(J. Machin, 1706, 100 Stellen; W. Shanks, 1873, 707 St.)

Approximiertes Rechnen

Hausaufgaben

WS26 empfohlen: 2, 4, 6 (andere sind nicht verboten)

  1. Multiplikation in GMP (GNU Multiprecision Library) https://gmplib.org/manual/Multiplication-Algorithms

    1. Karatsuba-Rechnung ist dort etwas anders als hier auf der Folie, warum?

    2. GHC verwendet GMP für den Typ Integer.

      Bestimmen Sie experimentell den Anstieg der Rechenzeit bei Verdopplung der Stellenzahl, z.B.

      :set +s
      x = 10^10^8 :: Integer
      odd x -- damit x ausgewertet wird
      odd ((x-1)*(x+1)) -- die eigentliche Messung
        True
        (3.73 secs, 166,159,792 bytes)
      y = x*x -- hat doppelte Stellenzahl

      Ist die Anzahl der Bytes plausibel?

      Diskutieren Sie mögliche verkürzte Auswertungen für odd .... Kann GMP/GHC das?

    3. Zusatz: warum ist (oder erscheint) (x+1)^2 schneller als (x+1)*(x+1)?

  2. zu Multiplikation nach Toom (3 Blöcke): ergänzen Sie den Ausdruck CC sowie die fehlenden Linearkombinationen

  3. diskutieren (Zusatz: implementieren) Sie die Darstellung von ganzen Zahlen mit negativer Basis B≤−2B\le -2

    (und nichtnegativen Ziffern ∈{0,…,|B|−1}\in\{0,\dots,|B|-1\} wie bisher)

    Bsp: B=−2B=-2,

    −3=1⋅B0+0⋅B1+1⋅B2+1⋅B3=1+0+4−8-3 = 1\cdot B^0 + 0\cdot B^1 + 1\cdot B^2+1\cdot B^3 =1+0+4-8

    1. Eindeutigkeit, Konstruktion

    2. Arithmetik (Nachfolger, Addition, Multiplikation)

  4. Bestimmen Sie die Taylor-Reihe für den Arcustangens an der Stelle 0

    wie auf Folie Potenzreihe für Wurzelfunktion

    Bestimmen Sie damit x=arctan⁡(1/2),y=arctan⁡(1/3)x=\arctan(1/2), y=\arctan(1/3) auf (z.B.) 20 Stellen.

    Begründen Sie x+y=π/4x+y=\pi/4. Rechnen Sie den Wert für π\pi aus und vergleichen Sie mit einer verläßlichen Quelle.

    Kann man π\pi nach diesem Verfahren, aber mit anderen Parametern, besser bestimmen? (mehr Stellen bei gleichem Aufwand)

  5. Bestimmen Sie die Taylor-Reihe für den (natürlichen) Logarithmus an der Stelle 1. Bestimmen Sie damit a=log⁡(6/5),b=log⁡(9/8),c=log⁡(10/9)a=\log(6/5), b=\log(9/8), c=\log(10/9) auf (z.B.) 100 Stellen und daraus log⁡2\log 2 als eine Linearkombination.

  6. wie bestimmt man 3\sqrt{3}, 5\sqrt{5}, 23\sqrt[3]{2}

    Hinweis: 23\sqrt[3]{2} als Fixpunkt von x↦(2x+2/x2)/3x \mapsto (2x + 2/x^2)/3,

    diese Gewichte ergeben quadratische Konvergenz,

    ist äquivalent zu Bestimmung der Nullstelle von f(x)=x3−2f(x)=x^3-2 nach Newton-Verfahren:

    f′(x)=3x2,x↦x−f(x)/f′(x)=…f'(x)=3x^2, x\mapsto x - f(x)/f'(x) = \dots

  7. Was macht dieses Programm?

    int n = 1000;
    int [] d = new int [n];
    for (int i=2; i<n; i++) { d[i]=1; }
    for (int j=2; j<n; j++) {
        int c = 0;
        for (int i=n-1; i>=1; i--) {
            int h = 10 * d[i] + c;
            d[i] = h % i; c = h / i;
        }
        System.out.print(c); System.out.flush();
    }

    Ist die Ausgabe korrekt? Wie weit darf man n erhöhen?

  8. Jerzy Karczmarczuk: The Most Unreliable Technique in the World to compute pi, 2003? https://web.archive.org/web/20051017081559/http://users.info.unicaen.fr/~karczma/arpap/lazypi.ps.gz

Plan (vorläufig)