Die Mathe-Redaktion - 17.01.2018 19:01 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktZur Award-Abstimmung
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 808 Gäste und 34 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von Spock mire2
Mathematische Software & Apps » Mathematica » Mathematica: Programm zur Bestimmung von Divisormatrizen - Verbesserungsvorschläge erwünscht
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Mathematica: Programm zur Bestimmung von Divisormatrizen - Verbesserungsvorschläge erwünscht
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 13949
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-01-12 21:26


Hallo!

Ich habe ein Programm geschrieben, zu einem Divisor d die Divisormatrix erstellt.
Im 2. Teil habe ich eine spezielle Darstellung der Matrix gebastelt; diese soll später für Veranschaulichungen in  LaTeX,TikZ/pgf dienen.

Falls jemand Lust hat, kann er mal drüberschauen, zwecks Verbesserungs- oder Vereinfachungsvorschlägen bzw. Korrekturen.

Danke!

Mathematica
Clear@"Global`*"     (*Speicher löschen*)
(* ***************************************  *)
(* Programm zur Bestimmung von Divisormatrizen  *)
(*  v1.1a        *)
(* \autor{cis}  *)
 
(* ***************************************  *)
(*   1. Teil "Divisormatrix bestimmen" *)
(* ***************************************  *)
d = 5;             (*Divisor der Divisormatrix eingeben!*)
 
MersenneFolge[k_, n_] := (2*k - 1)*2^n - 1
MersenneBruch[k_, n_] := MersenneFolge[k, n]/d
MersenneZaehler[k_, n_] := Numerator[MersenneBruch[k, n]]
MersenneNenner[k_, n_] := Denominator[MersenneBruch[k, n]]
(*Test 
MersenneBruch[1,7] 
MersenneZaehler[1,7] 
MersenneNenner[1,7]   
Table[MersenneBruch[1,n], {n,1,4}];
 Table[MersenneNenner[1,n], {n,1,4}];
*)
 
(* Bestimmung der Spaltenzahl der Divisormatrix *)
(* https://de.wikipedia.org/wiki/Diskreter_Logarithmus#Prime_\
Restklassengruppe *)
(*Spaltenzahl nMax*)
Do[If[Mod[MersenneFolge[1, n], d] == 0, nMax = n; Break[]], {n, d - 1}]
(*Zeilenzahl kMax*)
kMax = d;
 
 
(* ***************************************  *)
(*   2. Teil  "Spezielle Ausgabe der Divisormatrix für \
LaTeX,TikZ/pgf-Weiterverarbeitung erstellen" *)
(* ***************************************  *)
 
 
(*  Matrix mit Zellen des Typs      Zähler | Nenner |<Eigenschaft>
<Eigenschaft> = 
 * r (rot), wenn Nenner gleich 1
 * s (schwarz), wenn Zeile enthält Nenner gleich 1 
 * b (blau) "sonst", d.h., wenn Zeile keinen Nenner gleich 1 enthält
*)
 
 
Zeilentest[z_] := If[
  Zeile[z] = Table[MersenneNenner[z, n], {n, 1, nMax}];
  MemberQ[Zeile[z], 1],  (*Prüfen, ob Zeile einen Nenner=1 enthält*)
  s, (*Zeile enthält Nenner=1*)
  b  (*Zeile enthält nicht Nenner=1*)
  ]
(*Test*)
MemberQ[Zeile[1], 1];
Zeilentest[1];
 
Eigenschaft[k_, n_] := If[MersenneNenner[k, n] == 1,
   r,                             (*Nenner ist 1*)
   Zeilentest[k]       (*Zeile enthält Nenner=1 oder nicht*)
   ];
(*Test*)
MersenneNenner[1, 4];
Eigenschaft[1, 4];
 
(*  Matrix-Zelle definieren  *)
Zelle[k_, n_] := 
 MersenneZaehler[k, n] | MersenneNenner[k, n] | Eigenschaft[k, n]
 
(* ***************************************  *)
(*3. Teil "Ergebnis-Ausgaben" *)
(* ***************************************  *)
(*Divisor sowie Zeilen- und Spaltenzahl anzeigen*)
StringForm["Divisor: d = ``", d]
StringForm["Spaltenzahl nMax = ``", nMax]
StringForm["Zeilenzahl: kMax = d = ``", kMax]
 
(*Divisormatrix anzeigen*)
liste1 = TableForm[
  Table[MersenneBruch[k, n], {k, 1, kMax}, {n, 1, nMax}]]
(* Divisormatrix  als Textdatei exportieren *)
Export[ToString[d] <> 
  "Divisormatrix.txt", liste1, "Table"] ;   (*mit ';' auskommentiert*)
 
(*  Divisormatrix mit Annotationen ausgeben  *)
liste2 = TableForm[Table[Zelle[k, n], {k, 1, kMax}, {n, 1, nMax}]]
(*  Divisormatrix als Textdatei <d>.txt  abspeichern *)
Export[ToString[d] <> ".txt", liste2, "Table"]
Divisor: d = 5
Spaltenzahl: nMax = 4
Zeilenzahl: kMax = 5
 
1/5	3/5	7/5	3
1	11/5	23/5	47/5
9/5	19/5	39/5	79/5
13/5	27/5	11	111/5
17/5	7	71/5	143/5
 
 
 
1|5|s	3|5|s	7|5|s	3|1|r
1|1|r	11|5|s	23|5|s	47|5|s
9|5|b	19|5|b	39|5|b	79|5|b
13|5|s	27|5|s	11|1|r	111|5|s
17|5|s	7|1|r	71|5|s	143|5|s
 
5.txt
Out[]



-----------------
Wenn man alles ausgeschaltet hat, was unmöglich ist, bleibt am Ende etwas übrig, das die Wahrheit enthalten muß - mag es auch noch so unwahrscheinlich sein...
(Sherlock Holmes)
·



Wahlurne Für cis bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 13949
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, vom Themenstarter, eingetragen 2018-01-12 22:30


Die Teile
  r, (*Nenner ist 1*)
....
  s,  (*Zeile enthält Nenner=1*)
  b   (*Zeile enthält nicht Nenner=1*)
....

musste ich in der Form eingeben, da es mir bei "r" oder Print["r"] das Ausgabeschema ruiniert. Das ist sicher ungut, da so Variablen erklärt werden.
Das könnte man sicher verbessern.




Wahlurne Für cis bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
blindmessenger
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.08.2016
Mitteilungen: 718
Aus: NRW
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2018-01-12 22:55


Ja, das sieht gut aus... Hab leider kein Mathematica... Deswegen kann ich da nicht viel verbessern...


-----------------
Gruß blindmessenger



Wahlurne Für blindmessenger bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 13949
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2018-01-13 01:57


2018-01-12 22:55 - blindmessenger in Beitrag No. 2 schreibt:
Hab leider kein Mathematica...

Die Ausgabe lohnt sich aber. Für mathematische Arbeiten ist mma zweckmäßig.
Sachen, die man sich bei C+ etc. erstmal aufwendig erstellen muss, sind bei mma bereits als einfacher Befehl enthalten.

Es wäre eh mal interessant, bis zu welchen Divisoren der Code noch zuverlässig ist.
Ich habe das jetzt nur aus typographischen Belangen als notwendiges Übel programmiert. Ich will schauen, wie man das mit TikZ/pgf sinnvoll veranschaulichen kann.



Wahlurne Für cis bei den Matheplanet-Awards stimmen
  Profil  Quote  Link auf diesen Beitrag Link
cis hat die Antworten auf ihre/seine Frage gesehen.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]