Quellcode

swprak-algebra-2011-10-18.tgz

Übersetzen mittels ghc --make -Wall -O2 Main.hs, dann ./Main demos oder ./Main tests.

Getestet mit GHC 6.12.1, 7.0.3 und 7.2.1.

HTML-Dokumentation

mit Haddock erzeugt

Demo-Ausgabe

>> SimpleExtension
Ganzheitsgleichungen über Q(sqrt2):
` sqrt2:                    [(-1) % 1*X] + X
` goldenRatio:              [(-1) % 1] + [(-1) % 1]*X + X^2
` sqrt2 + goldenRatio:      [1 + X] + [(-1) % 1 + (-2) % 1*X]*X + X^2
` (sqrt2 + goldenRatio)^2:  [(-7) % 1 + (-5) % 1*X] + [14 % 1 + 11 % 1*X]*X + [(-8) % 1 + (-3) % 1*X]*X^2 + X^3

>> Smith
Die Smithsche Normalform (also die Liste der Elementarteiler) von A = ...
5          0          0         
4          3          0         
-2         1          3         
...ist: [1,1,45]
Die Elementarteiler von X 1 - A sind:	
[1,1,(-45) % 1 + 39 % 1*X + (-11) % 1*X^2 + X^3]

Die Smithsche Normalform (also die Liste der Elementarteiler) von A = ...
18         12         24         42        
7          9          7          3         
10         12         7          10        
4          -6         9          10        
...ist: [1,1,2,3630]
Die Elementarteiler von X 1 - A sind:	
[1,1,1,7260 % 1 + 2484 % 1*X + 43 % 1*X^2 + (-44) % 1*X^3 + X^4]

>> Complex
Approximationen von sqrt2:
` auf Genauigkeit < 1/1:     1 % 1      ~~ 1.0 :+ 0.0
` auf Genauigkeit < 1/10:    7 % 5      ~~ 1.4 :+ 0.0
` auf Genauigkeit < 1/100:   41 % 29    ~~ 1.4137931034482758 :+ 0.0
` auf Genauigkeit < 1/1000:  99 % 70    ~~ 1.4142857142857144 :+ 0.0
` auf Genauigkeit < 1/10000: 577 % 408  ~~ 1.4142156862745099 :+ 0.0

Approximationen von goldenRatio:
` auf Genauigkeit < 1/1:     1 % 1      ~~ 1.0 :+ 0.0
` auf Genauigkeit < 1/10:    8 % 5      ~~ 1.6 :+ 0.0
` auf Genauigkeit < 1/100:   34 % 21    ~~ 1.619047619047619 :+ 0.0
` auf Genauigkeit < 1/1000:  144 % 89   ~~ 1.6179775280898876 :+ 0.0
` auf Genauigkeit < 1/10000: 987 % 610  ~~ 1.618032786885246 :+ 0.0

Approximationen von sqrt2^2 + 3*goldenRatio:
` auf Genauigkeit < 1/1:     174 % 25   ~~ 6.96 :+ 0.0
` auf Genauigkeit < 1/10:    74836 % 10933 ~~ 6.8449647855117535 :+ 0.0
` auf Genauigkeit < 1/100:   2989089 % 436100 ~~ 6.854136665902316 :+ 0.0
` auf Genauigkeit < 1/1000:  430143353 % 62756928 ~~ 6.854117413140426 :+ 0.0
` auf Genauigkeit < 1/10000: 61898361861 % 9030849748 ~~ 6.854101617038663 :+ 0.0

Approximationen von (sqrt2 * goldenRatio)^3:
` auf Genauigkeit < 1/1:     10907217 % 910000 ~~ 11.985952747252748 :+ 0.0
` auf Genauigkeit < 1/10:    613220260455 % 51179800126 ~~ 11.981685331816609 :+ 0.0
` auf Genauigkeit < 1/100:   6706315591216976 % 559725243392055 ~~ 11.981442092150902 :+ 0.0
` auf Genauigkeit < 1/1000:  28428869909407645935712 % 2372749236042787045125 ~~ 11.981405147060807 :+ 0.0
` auf Genauigkeit < 1/10000: 78802069665924033400189375 % 6577028353892392832636928 ~~ 11.981409449039045 :+ 0.0

Bei diesen Berechnungen maximal benötigte Approximation von sqrt2: 1/4400000

>> Algebraic
Zur Zahl z = 41:
` ungefährer Wert    von z: 41.0 :+ 0.0
` Ganzheitsgleichung von z: (-41) % 1 + X
` ungefährer Wert    von 1/z: 2.4390243902439025e-2 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 41 + X
` ist rational? Just (41 % 1)

Zur Zahl z = zero:
` ungefährer Wert    von z: 0.0 :+ 0.0
` Ganzheitsgleichung von z: X
` ist nicht invertierbar.
` ist rational? Just (0 % 1)

Zur Zahl z = sqrt2 - sqrt2:
` ungefährer Wert    von z: 0.0 :+ 0.0
` Ganzheitsgleichung von z: (-8) % 1*X + X^3
` ist nicht invertierbar.
` ist rational? Just (0 % 1)

Zur Zahl z = goldenRatio * (sqrt2 - sqrt2):
` ungefährer Wert    von z: 0.0 :+ 0.0
` Ganzheitsgleichung von z: 64 % 1*X + (-24) % 1*X^3 + X^5
` ist nicht invertierbar.
` ist rational? Just (0 % 1)

Zur Zahl z = goldenRatio:
` ungefährer Wert    von z: 1.619047619047619 :+ 0.0
` Ganzheitsgleichung von z: (-1) % 1 + (-1) % 1*X + X^2
` ungefährer Wert    von 1/z: 0.6181818181818182 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 1 + X + X^2
` ist rational? Nothing

Zur Zahl z = sqrt2:
` ungefährer Wert    von z: 1.4137931034482758 :+ 0.0
` Ganzheitsgleichung von z: (-2) % 1 + X^2
` ungefährer Wert    von 1/z: 0.7073170731707317 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 2 + X^2
` ist rational? Nothing

Zur Zahl z = sqrt2^2:
` ungefährer Wert    von z: 2.000204081632653 :+ 0.0
` Ganzheitsgleichung von z: (-4) % 1 + X^2
` ungefährer Wert    von 1/z: 0.49994898479746963 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 4 + X^2
` ist rational? Just (2 % 1)

Zur Zahl z = sqrt2^5:
` ungefährer Wert    von z: 5.657137026390815 :+ 0.0
` Ganzheitsgleichung von z: (-32) % 1 + X^2
` ungefährer Wert    von 1/z: 0.17676661487513334 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 32 + X^2
` ist rational? Nothing

Zur Zahl z = goldenRatio + sqrt2:
` ungefährer Wert    von z: 3.0314401622718052 :+ 0.0
` Ganzheitsgleichung von z: (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4
` ungefährer Wert    von 1/z: 0.32972387655657825 :+ 0.0
` Ganzheitsgleichung von 1/z: (-1) % 1 + 2 % 1*X + 5 % 1*X^2 + (-6) % 1*X^3 + X^4
` ist rational? Nothing

Nach Größe sortiert:
["zero","sqrt2 - sqrt2","goldenRatio * (sqrt2 - sqrt2)","sqrt2","goldenRatio","sqrt2^2","goldenRatio + sqrt2","sqrt2^5","41"]

>> RootFinding
Nullstellen von 1 + X + X^2 + X^3 + X^4 (aus Q[X]):
` auf Genauigkeit < 1/1:
  ` ((-1) % 2+i(-1) % 2)                     ~~ (-0.5) :+ (-0.5)
  ` (1 % 2+i(-1) % 2)                        ~~ 0.5 :+ (-0.5)
  ` ((-1) % 2+i1 % 2)                        ~~ (-0.5) :+ 0.5
  ` (1 % 2+i1 % 2)                           ~~ 0.5 :+ 0.5
` auf Genauigkeit < 1/10:
  ` ((-25) % 32+i(-19) % 32)                 ~~ (-0.78125) :+ (-0.59375)
  ` (9 % 32+i(-31) % 32)                     ~~ 0.28125 :+ (-0.96875)
  ` ((-25) % 32+i19 % 32)                    ~~ (-0.78125) :+ 0.59375
  ` (9 % 32+i31 % 32)                        ~~ 0.28125 :+ 0.96875
` auf Genauigkeit < 1/100:
  ` ((-207) % 256+i(-151) % 256)             ~~ (-0.80859375) :+ (-0.58984375)
  ` (79 % 256+i(-243) % 256)                 ~~ 0.30859375 :+ (-0.94921875)
  ` ((-207) % 256+i151 % 256)                ~~ (-0.80859375) :+ 0.58984375
  ` (79 % 256+i243 % 256)                    ~~ 0.30859375 :+ 0.94921875
` auf Genauigkeit < 1/1000:
  ` ((-1657) % 2048+i(-1203) % 2048)         ~~ (-0.80908203125) :+ (-0.58740234375)
  ` (633 % 2048+i(-1947) % 2048)             ~~ 0.30908203125 :+ (-0.95068359375)
  ` ((-1657) % 2048+i1203 % 2048)            ~~ (-0.80908203125) :+ 0.58740234375
  ` (633 % 2048+i1947 % 2048)                ~~ 0.30908203125 :+ 0.95068359375
` auf Genauigkeit < 1/10000:
  ` ((-26509) % 32768+i(-19261) % 32768)     ~~ (-0.808990478515625) :+ (-0.587799072265625)
  ` (10125 % 32768+i(-31165) % 32768)        ~~ 0.308990478515625 :+ (-0.951080322265625)
  ` ((-26509) % 32768+i19261 % 32768)        ~~ (-0.808990478515625) :+ 0.587799072265625
  ` (10125 % 32768+i31165 % 32768)           ~~ 0.308990478515625 :+ 0.951080322265625
Anzahl Nullstellen im Einheitsquadrat: 2/2

Nullstellen von 2 % 1 + (3 % 1+i5 % 1)*X + X^3 (aus Q(i)[X]):
` auf Genauigkeit < 1/1:
  ` (21 % 16+i(-35) % 16)                    ~~ 1.3125 :+ (-2.1875)
  ` ((-7) % 16+i7 % 16)                      ~~ (-0.4375) :+ 0.4375
  ` ((-21) % 16+i35 % 16)                    ~~ (-1.3125) :+ 2.1875
` auf Genauigkeit < 1/10:
  ` (329 % 256+i(-567) % 256)                ~~ 1.28515625 :+ (-2.21484375)
  ` ((-49) % 256+i77 % 256)                  ~~ (-0.19140625) :+ 0.30078125
  ` ((-273) % 256+i497 % 256)                ~~ (-1.06640625) :+ 1.94140625
` auf Genauigkeit < 1/100:
  ` (2597 % 2048+i(-4571) % 2048)            ~~ 1.26806640625 :+ (-2.23193359375)
  ` ((-371) % 2048+i609 % 2048)              ~~ (-0.18115234375) :+ 0.29736328125
  ` ((-2233) % 2048+i3969 % 2048)            ~~ (-1.09033203125) :+ 1.93798828125
` auf Genauigkeit < 1/1000:
  ` (20797 % 16384+i(-36617) % 16384)        ~~ 1.26934814453125 :+ (-2.23492431640625)
  ` ((-2961) % 16384+i4921 % 16384)          ~~ (-0.18072509765625) :+ 0.30035400390625
  ` ((-17843) % 16384+i31703 % 16384)        ~~ (-1.08905029296875) :+ 1.93499755859375
` auf Genauigkeit < 1/10000:
  ` (332857 % 262144+i(-585963) % 262144)    ~~ 1.2697486877441406 :+ (-2.235271453857422)
  ` ((-47341) % 262144+i78701 % 262144)      ~~ (-0.18059158325195313) :+ 0.3002204895019531
  ` ((-285509) % 262144+i507269 % 262144)    ~~ (-1.0891304016113281) :+ 1.9350776672363281
Anzahl Nullstellen im Einheitsquadrat: 0/2

>> Factoring
Irreduzible Faktoren von 1 + X^2:
` 1 + X^2

Irreduzible Faktoren von (-1) % 1 + X^2:
` (-1) % 1 + X
` 1 + X

Irreduzible Faktoren von (-1) % 1 + X^3:
` (-1) % 1 + X
` 1 + X + X^2

Irreduzible Faktoren von (-1) % 1 + X^4:
` (-1) % 1 + X
` 1 + X
` 1 + X^2

Irreduzible Faktoren von (-1) % 1 + X^5:
` (-1) % 1 + X
` 1 + X + X^2 + X^3 + X^4

Irreduzible Faktoren von (-1) % 1 + X^6:
` (-1) % 1 + X
` 1 + X
` 1 + X + X^2
` 1 + (-1) % 1*X + X^2

Zur Zahl Ext "sqrt2" <<nondet>>:
` Ganzheitsgleichung: (-2) % 1 + X^2
` Minimalpolynom:     (-2) % 1 + X^2

Zur Zahl Mult (Ext "sqrt2" <<nondet>>) (Ext "sqrt2" <<nondet>>):
` Ganzheitsgleichung: (-4) % 1 + X^2
` Minimalpolynom:     (-2) % 1 + X

Zur Zahl Mult (Mult (Ext "sqrt2" <<nondet>>) (Ext "sqrt2" <<nondet>>)) (Ext "sqrt2" <<nondet>>):
` Ganzheitsgleichung: (-8) % 1 + X^2
` Minimalpolynom:     (-8) % 1 + X^2

Zur Zahl Add [Ext "sqrt2" <<nondet>>,Ext "goldenRatio" <<nondet>>]:
` Ganzheitsgleichung: (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4
` Minimalpolynom:     (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4


>> IdealExtension
Rechnungen im ideellen Oberkörper Q(sqrt(2)), wobei wir von sqrt(2)
nur wissen wollen, dass es Nullstelle von
	f = 6 % 1 + (-2) % 1*X + (-3) % 1*X^2 + X^3
ist:
` Inverses von S (-2) % 1 + X: Just (S (-2) % 1 + (-1) % 2*X + 1 % 2*X^2)
` Inverses von S (-3) % 1 + X: Just (S (-3) % 7 + (-1) % 7*X)
Für die zweite Rechnung wurde dabei ein Neustart benötigt,
denn 3 ist eine Nullstelle von f.

>> Galois
Zur Galoisgruppe von (-1) % 1 + X^4:
` Nullstellen:        [0.0 :+ (-1.0),1.0 :+ 0.0,0.0 :+ 1.0,(-1.0) :+ 0.0]
` Prim. Element t:    [0,1,1,0] * xs ~~ 1.0 :+ 1.0
  ` Min.Polynom:      2 % 1 + (-2) % 1*X + X^2
  ` Gal. Konjugierte: [0.9990234375 :+ (-0.9990234375),0.9990234375 :+ 0.9990234375]
  ` Nst. #0 in t:     1 + (-1) % 1*X
  ` Nst. #1 in t:     1
  ` Nst. #2 in t:     (-1) % 1 + X
  ` Nst. #3 in t:     (-1) % 1
` Galoisgruppe:       [[2,1,0,3],[0,1,2,3]]

Zur Galoisgruppe von (-1) % 1 + X^6:
` Nullstellen:        [(-0.5) :+ (-0.86328125),0.5 :+ (-0.86328125),(-0.5) :+ 0.86328125,0.5 :+ 0.86328125,1.0 :+ 0.0,(-1.0) :+ 0.0]
` Prim. Element t:    [0,1,-1,1,0,0] * xs ~~ 1.5 :+ (-0.8662109375)
  ` Min.Polynom:      3 % 1 + (-3) % 1*X + X^2
  ` Gal. Konjugierte: [1.5 :+ (-0.86328125),1.5 :+ 0.86328125]
  ` Nst. #0 in t:     (-2) % 1 + X
  ` Nst. #1 in t:     (-1) % 1 + X
  ` Nst. #2 in t:     1 + (-1) % 1*X
  ` Nst. #3 in t:     2 % 1 + (-1) % 1*X
  ` Nst. #4 in t:     1
  ` Nst. #5 in t:     (-1) % 1
` Galoisgruppe:       [[0,1,2,3,4,5],[2,3,0,1,4,5]]