Mathematik: Divisormatrizen
Released by matroid on Do. 28. Dezember 2017 13:25:59 [Statistics]
Written by blindmessenger - 1075 x read [Outline] Printable version Printer-friendly version -  Choose language   
Mathematik

\(\begingroup\) Divisormatrizen: Für ungerade Zahlen lassen sich Divisormatrizen erzeugen, die eine Struktur aufweisen, aus der man bestimmte Eigenschaften schließen kann. Wie man diese Divisormatrizen erzeugt und was für Eigenschaften man daraus ableiten kann will ich euch in diesem Artikel näher bringen: Zuerst definieren wir eine Matrix, die ich im folgenden Mersennematrix $M_M$ nennen will.

Definition Mersennematrix $M_M$: Die Mersennematrix $M_M$ hat folgende Struktur $\begin{align} M_{M}= \begin{pmatrix} 1 & 3 & 7 & 15 & ... & \infty\\ 5 & 11 & 23 & 47 & ... & \infty\\ 9 & 19 & 39 & 79 & ... & \infty\\ 13 & 27 & 55 & 111 & ... & \infty\\ \vdots & \vdots & \vdots & \vdots& \ddots& \vdots\\ \infty & \infty & \infty & \infty & ... & \infty\\ \end{pmatrix}\end{align} $ Wie zu sehen besteht die erste Reihe aus den Mersennezahlen und wird in den weiteren Reihen logisch fortgeführt. Die Elemente der Mersennematrix $M_M$ ($m$-te Reihe und $n$-te Spalte) berechnen sich folgendermaßen: $M(m,n) = (2m-1)\cdot 2^n - 1 \text{ mit } m,n \in \mathbb{N}_{> 0}$ stehen. Diese Matrix hat folgende Eigenschaften: Sie ist unendlich und es kommt jede ungerade Zahl genau einmal vor. Die Mersenne-Matrix hat demnach den Aufbau $M_M = \left(M_{mn} \right)_{(\infty \times \infty)}\text{ mit } M_{mn} = M(m,n)$ Nun lässt sich aus dieser Matrix für jede ungerade Zahl eine Divisormatrix $M_{di}$ berechnen. Definition Divisormatrix $M_{di}$: Für jede ungerade Zahl lässt sich eine Divisormatrix $M_{di}$ bilden indem man die Mersennematrix durch diese ungerade Zahl teilt. Die Anzahl der Reihen ist immer gleich der ungeraden Zahl. Die Anzahl der Spalten kann maximal gleich der ungeraden Zahl minus 1 sein oder auch weniger. Es richtet sich danach wann in der ersten Reihe das erste Mal eine Zahl durch die betrachtete ungerade Zahl teilbar ist. Beispiel Divisormatrix für die Zahl 7: $\begin{align} M_{di}(7)=M_{M} \cdot \frac{1}{7}= \begin{pmatrix} \frac{1}{7} & \frac{3}{7} & \color{red}{1} \\ \frac{5}{7} & \frac{11}{7} & \frac{23}{7} \\ \frac{9}{7} & \frac{19}{7} & \frac{39}{7} \\ \frac{13}{7} & \frac{27}{7} & \frac{55}{7} \\ \frac{17}{7} & \color{red}{5} & \frac{71}{7}\\ \color{red}{3} &\frac{43}{7} &\frac{87}{7} \\ \frac{25}{7} & \frac{51}{7} & \frac{103}{7} \\ \end{pmatrix} \end{align} $ Wie hier zu sehen hat die Divisormatrix von 7 also genau 7 Reihen. Die Anzahl der Spalten ist 3 weil in der ersten Reihe (Man könnte auch sagen "Mersennereihe"...) die dritte Zahl das erste Mal durch 7 teilbar ist. Die Anzahl der Reihen $m$ und Spalten $n$ kann auch direkt berechnet werden. Es gilt: Das kleinste $n$ welches diese Gleichung $\begin{align} 2^n \ mod \ m=1 \end{align} $ erfüllt ist genau die Anzahl der Spalten. Nun könnte man fragen warum diese Matrizen genau für diese Anzahl an Reihen und Spalten definiert sind. Hierfür schauen wir uns die Divisormatrix von 7 nochmal an, aber wir verdoppeln die Anzahl der Reihen und Spalten und highlighten die Zahlen die ganz bleiben: $\begin{align} \begin{pmatrix} \frac{1}{7} & \frac{3}{7} & \color{red}{1} &|&\frac{15}{7} & \frac{31}{7} & \color{red}{9}\\ \frac{5}{7} & \frac{11}{7} & \frac{23}{7} &|&\frac{47}{7} & \frac{95}{7} & \frac{191}{7} \\ \frac{9}{7} & \frac{19}{7} & \frac{39}{7} &| &\frac{79}{7} & \frac{159}{7} & \frac{318}{7}\\ \frac{13}{7} & \frac{27}{7} & \frac{55}{7} &|&\frac{111}{7} & \frac{223}{7} & \frac{447}{7} \\ \frac{17}{7} & \color{red}{5} & \frac{71}{7} &|&\frac{143}{7} & \color{red}{41} & \frac{575}{7}\\ \color{red}{3} &\frac{43}{7} &\frac{87}{7} &| & \color{red}{25} &\frac{351}{7} &\frac{703}{7} \\ \frac{25}{7} & \frac{51}{7} & \frac{103}{7} &|& \frac{207}{7} & \frac{415}{7} & \frac{831}{7}\\ --& -- & -- &| &-- & -- & -- \\ \frac{29}{7} & \frac{59}{7} & \color{red}{17} &| &\frac{239}{7} & \frac{479}{7} & \color{red}{137}\\ \frac{33}{7} & \frac{67}{7} & \frac{135}{7} &| &\frac{271}{7} & \frac{543}{7} & \frac{1087}{7}\\ \frac{37}{7} & \frac{75}{7} & \frac{151}{7} &| &\frac{303}{7} & \frac{607}{7} & \frac{1215}{7} \\ \frac{41}{7} & \frac{83}{7} & \frac{167}{7} &| &\frac{335}{7} & \frac{671}{7} & \frac{1343}{7}\\ \frac{45}{7} & \color{red}{13} & \frac{183}{7} &|&\frac{367}{7} & \color{red}{105} & \frac{1471}{7}\\ \color{red}{7} &\frac{99}{7} &\frac{199}{7} &| & \color{red}{57} &\frac{799}{7} &\frac{1599}{7} \\ \frac{53}{7} & \frac{107}{7} & \frac{215}{7} &|& \frac{431}{7} & \frac{863}{7} & \frac{1727}{7}\\ \end{pmatrix} \end{align} $ Wie zu sehen ergibt sich bei Verdoppelung der Spalten und Reihen ein sich wiederholendes Muster an ganzen Zahlen. Das "Ganzzahlmuster" (also der sich wiederholende Bereich) ist dann genau die Divisormatrix. Man kann die Divisormatrizen also nach der obigen Defintion berechnen oder auch grafisch ermitteln... Eigenschaften der Divisormatrizen: An der Anzahl der Reihen und Spalten einer Divisormatrix lässt sich leicht erkennen, ob es sich bei der betrachteten Zahl um eine Primzahl oder fermatsche Pseudoprimzahl zur Basis 2 handelt. Es gilt folgendes: Wenn für die Anzahl der Reihen $m$ und die Anzahl der Spalten $n$ gilt $\begin{align} (m-1) \ mod \ n=0 \end{align} $ dann ist $m$ eine Primzahl oder eine Pseudoprimzahl zur Basis 2. Beispiel 7: $\begin{align} m=7, n=3 \end{align} $ $\begin{align} (7-1) \ mod \ 3=0 \end{align} $ An manchen Divisormatrizen lässt sich direkt ablesen ob es sich um eine Primzahl handelt. Wenn gilt $\begin{align} \frac{m-1}{n}=1 \end{align} $ dann ist $m$ sicher prim. Es handelt sich dann um Primzahlen der Form A001122 (3,5,11,13,19,...). Beispiel 11: $\begin{align} M_{di}(11)=\begin{pmatrix} \frac{1}{11} & \frac{3}{11} & \frac{7}{11} &\frac{15}{11} & \frac{31}{11} & \frac{63}{11}& \frac{127}{11} &\frac{255}{11} & \frac{511}{11} & \color{red}{93}\\ \frac{5}{11} & \color{red}{1} & \frac{23}{11} &\frac{47}{11} & \frac{95}{11} & \frac{191}{11} & \frac{383}{11} &\frac{767}{11} & \frac{1535}{11} & \frac{3071}{11}\\ \frac{9}{11} & \frac{19}{11} & \frac{39}{11} &\frac{79}{11} & \frac{159}{11} & \color{red}{29}& \frac{639}{11} &\frac{1279}{11} & \frac{2559}{11} & \frac{5119}{11}\\ \frac{13}{11} & \frac{27}{11} & \color{red}{5} &\frac{111}{11} & \frac{223}{11} & \frac{447}{11} & \frac{895}{11} &\frac{1791}{11} & \frac{3583}{11} & \frac{7167}{11}\\ \frac{17}{11} & \frac{35}{11} & \frac{71}{11} &\color{red}{13} & \frac{287}{11} & \frac{575}{11} & \frac{1151}{11} &\frac{2303}{11} & \frac{4607}{11} & \frac{9215}{11}\\ \frac{21}{11} &\frac{43}{11} &\frac{87}{11} & \frac{175}{11} &\frac{351}{11} &\frac{703}{11} &\frac{1407}{11} & \frac{2815}{11} &\frac{5631}{11} &\frac{11263}{11} \\ \frac{25}{11} & \frac{51}{11} & \frac{103}{11} & \frac{207}{11} & \frac{415}{11} & \frac{831}{11}& \frac{1663}{11} & \frac{3327}{11} & \color{red}{605} & \frac{13311}{11}\\ \frac{29}{11} & \frac{59}{11} & \frac{119}{11} &\frac{239}{11} & \frac{479}{11} & \frac{959}{11}& \frac{1919}{11} &\color{red}{349} & \frac{7679}{11} & \frac{15359}{11}\\ \color{red}{3} & \frac{67}{11} & \frac{135}{11} &\frac{271}{11} & \frac{543}{11} & \frac{1087}{11}& \frac{2175}{11} &\frac{4351}{11} & \frac{8703}{11} & \frac{17407}{11}\\ \frac{37}{11} & \frac{75}{11} & \frac{151}{11} &\frac{303}{11} & \frac{607}{11} & \frac{1215}{11}& \color{red}{221} &\frac{4863}{11} & \frac{9727}{11} & \frac{19455}{11} \\ \frac{41}{11} & \frac{83}{11} & \frac{167}{11} &\frac{335}{11} & \color{red}{61} & \frac{1343}{11}& \frac{2687}{11} &\frac{5375}{11} & \frac{10751}{11} & \frac{21503}{11}\\ \end{pmatrix} \end{align} $ Auch bei Divisormatrizen der Form $\begin{align} \frac{m-1}{n}=2 \end{align} $ ist $m$ immer prim. Es handelt sich dann um Primzahlen der Form A115591 (7,17,23,41,...). Beispiel 17: $\begin{align} M_{di}(17)=\begin{pmatrix} \frac{1}{17} & \frac{3}{17} & \frac{7}{17} & \frac{15}{17} & \frac{31}{17} & \frac{63}{17} & \frac{127}{17} & \color{red}{15} \\ \frac{5}{17} & \frac{11}{17} & \frac{23}{17} & \frac{47}{17} & \frac{95}{17} & \frac{191}{17} & \frac{383}{17} & \frac{767}{17} \\ \frac{9}{17} & \frac{19}{17} & \frac{39}{17} & \frac{79}{17} & \frac{159}{17} & \frac{319}{17} & \frac{639}{17} & \frac{1279}{17} \\ \frac{13}{17} & \frac{27}{17} & \frac{55}{17} & \frac{111}{17} & \frac{223}{17} & \frac{447}{17} & \frac{895}{17} & \frac{1791}{17} \\ \color{red}{1} & \frac{35}{17} & \frac{71}{17} & \frac{143}{17} & \frac{287}{17} & \frac{575}{17} & \frac{1151}{17} & \frac{2303}{17} \\ \frac{21}{17} & \frac{43}{17} & \frac{87}{17} & \frac{175}{17} & \frac{351}{17} & \frac{703}{17} & \frac{1407}{17} & \frac{2815}{17} \\ \frac{25}{17} & \color{red}{3} & \frac{103}{17} & \frac{207}{17} & \frac{415}{17} & \frac{831}{17} & \frac{1663}{17} & \frac{3327}{17} \\ \frac{29}{17} & \frac{59}{17} & \color{red}{7} & \frac{239}{17} & \frac{479}{17} & \frac{959}{17} & \frac{1919}{17} & \frac{3839}{17} \\ \frac{33}{17} & \frac{67}{17} & \frac{135}{17} & \frac{271}{17} & \frac{543}{17} & \frac{1087}{17} & \frac{2175}{17} & \frac{4351}{17} \\ \frac{37}{17} & \frac{75}{17} & \frac{151}{17} & \frac{303}{17} & \frac{607}{17} & \frac{1215}{17} & \color{red}{143} & \frac{4863}{17} \\ \frac{41}{17} & \frac{83}{17} & \frac{167}{17} & \frac{335}{17} & \frac{671}{17} & \color{red}{79} & \frac{2687}{17} & \frac{5375}{17} \\ \frac{45}{17} & \frac{91}{17} & \frac{183}{17} & \frac{367}{17} & \frac{735}{17} & \frac{1471}{17} & \frac{2943}{17} & \frac{5887}{17} \\ \frac{49}{17} & \frac{99}{17} & \frac{199}{17} & \frac{399}{17} & \color{red}{47} & \frac{1599}{17} & \frac{3199}{17} & \frac{6399}{17} \\ \frac{53}{17} & \frac{107}{17} & \frac{215}{17} & \frac{431}{17} & \frac{863}{17} & \frac{1727}{17} & \frac{3455}{17} & \frac{6911}{17} \\ \frac{57}{17} & \frac{115}{17} & \frac{231}{17} & \frac{463}{17} & \frac{927}{17} & \frac{1855}{17} & \frac{3711}{17} & \frac{7423}{17} \\ \frac{61}{17} & \frac{123}{17} & \frac{247}{17} & \frac{495}{17} & \frac{991}{17} & \frac{1983}{17} & \frac{3967}{17} & \frac{7935}{17} \\ \frac{65}{17} & \frac{131}{17} & \frac{263}{17} & \color{red}{31} & \frac{1055}{17} & \frac{2111}{17} & \frac{4223}{17} & \frac{8447}{17} \\ \end{pmatrix} \end{align} $ Auch wenn das für den einen oder anderen nichts neues ist (Also warum diese Divisormatrizen genau so strukturiert sind...), finde ich es doch lohnenswert sich weiter mit diesen Matrizen zu beschäftigen. Wenn man weiß, dass für bestimmte Primzahlen immer die gleichen Divisormatrizenmuster auftreten, dann kann man daraus vielleicht Primzahltests entwickeln.
\(\endgroup\)
Get link to this article Get link to this article  Printable version Printer-friendly version -  Choose language     Kommentare zeigen Comments  
pdfFür diesen Artikel gibt es keine pdf-Datei


Arbeitsgruppe Alexandria Dieser Artikel ist nicht im Verzeichnis der Arbeitsgruppe Alexandria eingetragen.
[Die Arbeitsgruppe Alexandria katalogisiert die Artikel auf dem Matheplaneten]

 
 
Aufrufzähler 1075
 
Aufrufstatistik des Artikels
Insgesamt 1 externer Seitenaufruf zwischen 2021.06 und 2021.06 [Anzeigen]
DomainAnzahlProz
https://google.com1100%100 %

[Top of page]

"Mathematik: Divisormatrizen" | 36 Comments
The authors of the comments are responsible for the content.

Re: Divisormatrizen
von: Slash am: Do. 28. Dezember 2017 17:39:08
\(\begingroup\)OK, wenn man die ungeraden Zahlen nach einem bestimmten Schema anordnet (1) und dann durch eine Primzahl p teilt, dann ergeben sich an den Stellen wo die ungeraden Zahlen neben diesem Primfaktor p noch einen weiteren besitzen Primzahlen. Hier erkennst du ein sich wiederholendes Muster. Ob hier eine Besonderheit vorliegt, kannst du überprüfen 1) indem du mit dem Muster Vorhersagen machst und schaust ob sie stimmen, und 2) du mit sehr viel größeren Matrizen arbeitest. Wobei sich mir, wie auch in deinen Forumsbeiträgen dazu, der Gebrauch von Matrizen hier nicht erschließt. Du kannst hier ebenso mit Tabellen hantieren, wenn du nicht mit den einzelnen Matrizenpositionen rechnest. Gruß, Slash\(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Do. 28. Dezember 2017 18:45:55
\(\begingroup\)Es wird ja immer darauf wertgelegt, dass man etwas in der Sprache der Mathematik abhandelt und deswegen habe ich mich halt für diese Matrizen entschieden... Letzendlich ist es zwar nur eine Matrixoperation die durchgeführt wird aber man muss diese "Ganzzahlmuster" ja auch irgendwie visualisieren, sonst macht es ja keinen Sinn... Bezüglich grösserer Matrizen: Ich habe einen ganzen Haufen von Exceltabellen erstellt soweit es ging... Es gibt viele verschiedene Strukturen zu entdecken: Mersennezahlen haben eigene Muster, Quadratzahlen haben eigene Muster, verschiedene Primzahlarten haben ihre eigenen Muster... Eine Vorraussage die vielleicht neu ist war bezüglich der Divisormatrizen der Form $\frac{m-1}{n}=1$. Wenn man sich das Beispiel der Matrix von 11 nochmal ansieht, dann ist neben der 93 auch noch die 61 markant. Die 93 ist klar: Das ist genau die Zahl die sich aus dem kleinem Fermat ergibt... Warum ist die 61 markant? Weil genau an dieser Stelle bei diesen Matrizen (genau wie bei der 93 auch) die Zahl ganz bleibt, sodass man sie ähnlich dem kleinen Fermat berechnen kann... Das sieht dann so aus: $((2k-1) \cdot 2^{\frac{k-1}{2}}) \ mod \ k=1$ Wenn man nun noch andere Basen dazu nimmt und ein paar andere Zahlen ausschliesst kommt man auf sowas hier: $k \ mod \ 4=1$ $((2k-1) \cdot 2^{\frac{k-1}{2}}) \ mod \ k=1$, $((2k-1) \cdot 3^{\frac{k-1}{2}}) \ mod \ k=1$ und $((2k-1) \cdot 5^{\frac{k-1}{2}}) \ mod \ k=1$ $2^{\lfloor log_2(k+1)\rfloor} \ mod \ k\ne 1$ Damit ergibt sich dann ein Test (für ca. 1/16 der Primzahlen) der nur sehr wenige Pseudoprimzahlen generiert (ungefähr eine auf die ersten 10^6 Pseudoprimzahlen). \(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Mo. 01. Januar 2018 15:11:52
\(\begingroup\)Hä, ich kapiere schon den 1. Schritt nicht. Wenn $M_{M}$ unendlich Matrix ist, wieso ist dann $M_{di}(7)=M_{M} \cdot \frac{1}{7}$ plötzlich endliche Matrix? PS: Generell zu den Matrizen hier und auch denen, die ich diversen Primzahl-Threads gesehen habe. Wenn die Matrixeinträge irgendeine Regelmäßigkeit aufweisen, würde ich sie nicht mehr BruteForce texen (das ist ja ein Haufen Arbeit), sondern versuchen einen eleganten Automatisierungscode zu erstellen. Das Paket pgffor (tikz) bietet, etwa mit der Funktion foreach, sicher Möglichkeiten. Vielleicht fällt mir dazu etwas ein. PPS: Zwecks möglicher Automatisierung musste ich wissen, dass die $k$-te Zeile durch die Zahlenfolge $m_n(k) = (2k-1)\cdot 2^n -1 \text{ mit } k,n \in \mathbb{N}_{\geq 1}$ festgelegt wird. Ich finde sowas darf in Artikeln ruhig auch angegeben werden, etwa für Leute wie mich, die vom Thema keinen Schimmer haben. \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Di. 02. Januar 2018 20:54:47
\(\begingroup\)Hallo cis, ja, das mit der unendlichen Mersennematrix und der endlichen Divisormatrix ist etwas unglücklich. Theoretisch ist die Divisormatrix auch unendlich, nur wir brechen halt immer dann ab wenn sich das Muster wiederholt... Uns interessiert also nur das erste Muster... Zur Automatisierung der Matrizen kann ich leider nicht viel sagen... Wenn Du da eine Idee hast umso besser...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Di. 02. Januar 2018 22:53:18
\(\begingroup\)So, um den Worten mal ein paar Taten folgen zu lassen. $M_n(k) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{\geq 1}$ Deine 1. Matrix: $ $\begin{pmatrix} 1 & 3 & 7 & 15 & ... & \infty\\ 5 & 11 & 23 & 47 & ... & \infty\\ 9 & 19 & 39 & 79 & ... & \infty\\ 13 & 27 & 55 & 111 & ... & \infty\\ \vdots & \vdots & \vdots & \vdots& \ddots& \vdots\\ \infty & \infty & \infty & \infty & ... & \infty\\ \end{pmatrix}$ $ Meine Automatisierung davon: $ \usetikzlibrary{matrix} \def\nMax{4} % Länge der anzuzeigenden Mersenne Folge \def\nMaxPlusEins{5} \def\nMaxPlusZwei{6} \def\MatrixZeile{ \& \& \& \& \& \\ } % "nMax+1 \&-Zeichen" \def\MatrixZeilen{% % nMax+2 Stück \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% % \Mersenne{}{} Folgenglieder berechnen \newcommand{\Mersenne}[2]{% =================== \tikzmath{% =================== int \M, \n, \k; for \k in {#1}{% for \n in {#2}{%% \M = (2*\k-1)*2^\n-1; print {\M}; };%% };% } % =================== }% =================== % \Mersenne{1}{2} %Test \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 0.75em, column sep = 1.25em, left delimiter = (, right delimiter = ), %nodes={}, % % Rote Zellen MakeRed/.style args = {(#1,#2)}{row #1 column #2/.style={nodes={text=red}}}, % MakeRed/.list={(1,1),(1,2)}, ] {% \MatrixZeilen }; % \node[] at (m-1-3) {$\infty$}; % Test % Matrixelemente hervorheben % \node[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-4) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMax} \foreach \n in {1,...,\nMax} \node[align=right] at (m-\k-\n) {\Mersenne{\k}{\n}}; % Matrix füllen mit Symbolen % vertikal \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusZwei) {$\infty$}; \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusEins) {$\dots$}; % horizontal \foreach \r in {1,...,\nMaxPlusZwei} \node[] at (m-\nMaxPlusZwei-\r) {$\infty$}; \foreach \s in {1,...,\nMaxPlusZwei}{% \if \s\nMaxPlusEins \else \node[] at (m-\nMaxPlusEins-\s) {$\vdots$}; \fi }% \node[] at (m-\nMaxPlusEins-\nMaxPlusEins) {$\ddots$}; \end{tikzpicture} $ Das mag, den Code betrachtend, vielleicht erstmal aufwendig erscheinen, aber ich kann jetzt problemlos größere Matrizen ausgeben: $ \usetikzlibrary{matrix} \def\nMax{8} % Länge der anzuzeigenden Mersenne Folge \def\nMaxPlusEins{9} \def\nMaxPlusZwei{10} \def\MatrixZeile{\& \& \& \& \& \& \& \& \& \\ } % "nMax+1 \&-Zeichen" \def\MatrixZeilen{% % nMax+2 Stück \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% % \Mersenne{}{} Folgenglieder berechnen \newcommand{\Mersenne}[2]{% =================== \tikzmath{% =================== int \M, \n, \k; for \k in {#1}{% for \n in {#2}{%% \M = (2*\k-1)*2^\n-1; print {\M}; };%% };% } % =================== }% =================== % \Mersenne{1}{2} %Test \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 0.75em, column sep = 1.75em, left delimiter = (, right delimiter = ), %nodes={}, % % Rote Zellen MakeRed/.style args = {(#1,#2)}{row #1 column #2/.style={nodes={text=red}}}, % MakeRed/.list={(1,1),(1,2)}, ] {% \MatrixZeilen }; % \node[] at (m-1-3) {$\infty$}; % Test % Matrixelemente hervorheben \node[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, rounded corners=1.5pt, align=right] at (m-3-4) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMax} \foreach \n in {1,...,\nMax} \node[align=right] at (m-\k-\n) {\Mersenne{\k}{\n}}; % Matrix füllen mit Symbolen % vertikal \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusZwei) {$\infty$}; \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusEins) {$\dots$}; % horizontal \foreach \r in {1,...,\nMaxPlusZwei} \node[] at (m-\nMaxPlusZwei-\r) {$\infty$}; \foreach \s in {1,...,\nMaxPlusZwei}{% \if \s\nMaxPlusEins \else \node[] at (m-\nMaxPlusEins-\s) {$\vdots$}; \fi }% \node[] at (m-\nMaxPlusEins-\nMaxPlusEins) {$\ddots$}; \end{tikzpicture} $ Für die Matrizen mit den Brüchen habe ich schon eine Idee. Natürlich sollen dabei Brüche und Ganzzahlen automatisch berechnet werden... \sourceon latex \documentclass[11pt]{scrartcl} %\documentclass[border=3mm]{standalone} \usepackage[ngerman]{babel} \usepackage{tikz, amsmath, amssymb} \usetikzlibrary{math, matrix} \begin{document} $M_n(k) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{\geq 1}$ \\ \def\nMax{5} % Länge der anzuzeigenden Mersenne Folge \def\nMaxPlusEins{6} \def\nMaxPlusZwei{7} \def\MatrixZeile{ \& \& \& \& \& \& \\ } % "nMax+1 \&-Zeichen" \def\MatrixZeilen{% % nMax+2 Stück \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% % \Mersenne{}{} Folgenglieder berechnen \newcommand{\Mersenne}[2]{% =================== \tikzmath{% =================== int \M, \n, \k; for \k in {#1}{% for \n in {#2}{%% \M = (2*\k-1)*2^\n-1; print {\M}; };%% };% } % =================== }% =================== % \Mersenne{1}{2} %Test IST: \\[1em] \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 0.75em, column sep = 1.25em, left delimiter = (, right delimiter = ), %nodes={}, % % Rote Zellen MakeRed/.style args = {(#1,#2)}{row #1 column #2/.style={nodes={text=red}}}, % MakeRed/.list={(1,1),(1,2)}, ] {% \MatrixZeilen }; % \node[] at (m-1-3) {$\infty$}; % Test % Matrixelemente hervorheben % \node[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-4) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMax} \foreach \n in {1,...,\nMax} \node[align=right] at (m-\k-\n) {\Mersenne{\k}{\n}}; % Matrix füllen mit Symbolen % vertikal \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusZwei) {$\infty$}; \foreach \p in {1,...,\nMax} \node[] at (m-\p-\nMaxPlusEins) {$\dots$}; % horizontal \foreach \r in {1,...,\nMaxPlusZwei} \node[] at (m-\nMaxPlusZwei-\r) {$\infty$}; \foreach \s in {1,...,\nMaxPlusZwei}{% \if \s\nMaxPlusEins \else \node[] at (m-\nMaxPlusEins-\s) {$\vdots$}; \fi }% \node[] at (m-\nMaxPlusEins-\nMaxPlusEins) {$\ddots$}; \end{tikzpicture} SOLL: \\[1em] $\begin{pmatrix} 1 & 3 & 7 & 15 & ... & \infty\\ 5 & 11 & 23 & 47 & ... & \infty\\ 9 & 19 & 39 & 79 & ... & \infty\\ 13 & 27 & 55 & 111 & ... & \infty\\ \vdots & \vdots & \vdots & \vdots& \ddots& \vdots\\ \infty & \infty & \infty & \infty & ... & \infty\\ \end{pmatrix}$ \end{document} \sourceoff \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Mi. 03. Januar 2018 04:03:39
\(\begingroup\)> Ich will jetzt Deine Hilfsbereitschaft nicht überstrapazieren, aber wäre es vielleicht noch > möglich die Elemente der Reihen wo keine roten Zahlen vorkommen blau zu färben? Welche Zahlen jetzt genau? Ich habe bei der zweiten Matrix spaßeshalber zum Test eine Hervorhebung eingebaut. Im Artikel werden, in den späteren Matrizen, die Brüche, die ganzzahlig ausfallen, rot gesetzt. Zur Stunde lassen sich die Brüche -hier auf dem MP- noch nicht automatisch erzeugen, da es ein Paketproblem gibt (am eigenen PC geht es). Ich weiß aber, was das Problem ist und habe matroid schon angeschrieben. Ist dieser Fehler erstmal behoben, so kann man bei den nodes, die die Ganzzahlen liefern, einfach text=red dazuschreiben. \(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Mi. 03. Januar 2018 11:35:03
\(\begingroup\)\quoteon Ich will jetzt Deine Hilfsbereitschaft nicht überstrapazieren, aber wäre es vielleicht noch möglich die Elemente der Reihen wo keine roten Zahlen vorkommen blau zu färben? \quoteoff Welche Zahlen jetzt genau? Ich habe bei der zweiten Matrix spaßeshalber zum Test eine Hervorhebung eingebaut. Im Artikel werden, in den späteren Matrizen, die Brüche, die ganzzahlig ausfallen, rot gesetzt. Zur Stunde lassen sich die Brüche -hier auf dem MP- noch nicht automatisch erzeugen, da es ein Paketproblem gibt (am eigenen PC geht es). Ich weiß aber, was das Problem ist und habe matroid schon angeschrieben. Ist dieser Fehler erstmal behoben, so kann man bei den nodes, die die Ganzzahlen liefern, einfach text=red dazuschreiben. PS: Du kannst natürlich auch immer im LaTeX-Unterforum Threads eröffnen, wenn es um die möglichst einfach, automatisierte Erstellung von Matrizen mit bestimmten Layouts geht. Ich kann das auch nicht alles aus dem Stand; das meiste muss ich recherchieren oder andere fragen. \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Mi. 03. Januar 2018 18:05:37
\(\begingroup\)Bei den Divisormatrizen werden immer auch Reihen erzeugt, in denen keine ganzen Zahlen auftreten. Weird hat das schön erklärt in dem Thread "Primitivwurzel" in Beitrag 53... Dann sehen die Matrizen so aus: $\begin{align} M_{di}(17)=\begin{pmatrix} \frac{1}{17} & \frac{3}{17} & \frac{7}{17} & \frac{15}{17} & \frac{31}{17} & \frac{63}{17} & \frac{127}{17} & \color{red}{15} \\ \color{blue}{\frac{5}{17}} & \color{blue}{\frac{11}{17}} & \color{blue}{\frac{23}{17}} & \color{blue}{\frac{47}{17}} & \color{blue}{\frac{95}{17} } & \color{blue}{\frac{191}{17} } & \color{blue}{\frac{383}{17} } & \color{blue}{\frac{767}{17} } \\ \color{blue}{\frac{9}{17} } & \color{blue}{\frac{19}{17} } & \color{blue}{\frac{39}{17} } & \color{blue}{\frac{79}{17} } &\color{blue}{ \frac{159}{17}} & \color{blue}{\frac{319}{17} } & \color{blue}{\frac{639}{17}} & \color{blue}{\frac{1279}{17}} \\ \color{blue}{\frac{13}{17} }& \color{blue}{\frac{27}{17} } &\color{blue}{ \frac{55}{17} } & \color{blue}{\frac{111}{17}} & \color{blue}{\frac{223}{17}} & \color{blue}{\frac{447}{17} } & \color{blue}{\frac{895}{17}} & \color{blue}{\frac{1791}{17} }\\ \color{red}{1} & \frac{35}{17} & \frac{71}{17} & \frac{143}{17} & \frac{287}{17} & \frac{575}{17} & \frac{1151}{17} & \frac{2303}{17} \\ \color{blue}{\frac{21}{17}} & \color{blue}{\frac{43}{17}} & \color{blue}{\frac{87}{17}} & \color{blue}{\frac{175}{17}} &\color{blue}{ \frac{351}{17}} & \color{blue}{\frac{703}{17}} & \color{blue}{\frac{1407}{17}} &\color{blue}{ \frac{2815}{17}} \\ \frac{25}{17} & \color{red}{3} & \frac{103}{17} & \frac{207}{17} & \frac{415}{17} & \frac{831}{17} & \frac{1663}{17} & \frac{3327}{17} \\ \frac{29}{17} & \frac{59}{17} & \color{red}{7} & \frac{239}{17} & \frac{479}{17} & \frac{959}{17} & \frac{1919}{17} & \frac{3839}{17} \\ \color{blue}{\frac{33}{17}} & \color{blue}{\frac{67}{17} } & \color{blue}{\frac{135}{17}} & \color{blue}{\frac{271}{17} } & \color{blue}{\frac{543}{17}} &\color{blue}{ \frac{1087}{17}} & \color{blue}{\frac{2175}{17}} & \color{blue}{\frac{4351}{17}} \\ \frac{37}{17} & \frac{75}{17} & \frac{151}{17} & \frac{303}{17} & \frac{607}{17} & \frac{1215}{17} & \color{red}{143} & \frac{4863}{17} \\ \frac{41}{17} & \frac{83}{17} & \frac{167}{17} & \frac{335}{17} & \frac{671}{17} & \color{red}{79} & \frac{2687}{17} & \frac{5375}{17} \\ \color{blue}{\frac{45}{17} }& \color{blue}{\frac{91}{17} } & \color{blue}{\frac{183}{17} } & \color{blue}{\frac{367}{17} } & \color{blue}{\frac{735}{17} } & \color{blue}{\frac{1471}{17} } &\color{blue}{ \frac{2943}{17} }& \color{blue}{\frac{5887}{17}} \\ \frac{49}{17} & \frac{99}{17} & \frac{199}{17} & \frac{399}{17} & \color{red}{47} & \frac{1599}{17} & \frac{3199}{17} & \frac{6399}{17} \\ \color{blue}{\frac{53}{17}} & \color{blue}{\frac{107}{17} }& \color{blue}{\frac{215}{17} } & \color{blue}{\frac{431}{17} } & \color{blue}{\frac{863}{17}} & \color{blue}{\frac{1727}{17}} & \color{blue}{\frac{3455}{17} } & \color{blue}{\frac{6911}{17}} \\ \color{blue}{\frac{57}{17}} &\color{blue}{ \frac{115}{17}} &\color{blue}{ \frac{231}{17}} &\color{blue}{ \frac{463}{17}} &\color{blue}{ \frac{927}{17}} &\color{blue}{ \frac{1855}{17}} &\color{blue}{ \frac{3711}{17} } & \color{blue}{\frac{7423}{17}} \\ \color{blue}{\frac{61}{17}} & \color{blue}{\frac{123}{17} } & \color{blue}{\frac{247}{17} } & \color{blue}{\frac{495}{17}} & \color{blue}{\frac{991}{17}} & \color{blue}{\frac{1983}{17}} & \color{blue}{\frac{3967}{17} } & \color{blue}{\frac{7935}{17}} \\ \frac{65}{17} & \frac{131}{17} & \frac{263}{17} & \color{red}{31} & \frac{1055}{17} & \frac{2111}{17} & \frac{4223}{17} & \frac{8447}{17} \\ \end{pmatrix} \end{align} $ \(\endgroup\)
 

Re: Divisormatrizen
von: Slash am: Do. 04. Januar 2018 03:18:33
\(\begingroup\)@BM Stelle doch mal ein paar Pattern mit farbigen Pixeln dar, also für jede Zahl/Bruch ein Pixel. Die Größe müsste dann mind. 100x100 sein, aber besser wäre bis 1000x1000. Dann erkennst du recht schnell ob das Muster eine nicht-zufällige Struktur aufweist oder eben nicht. Ich denke, dass hier nichts anderes passiert, als bei der Ulam-Spirale oder sonstigen Primzahlmustern. Es wird einige Strukturen geben, da Primzahlen eben Gesetzen gehorchen, aber du wirst keine vollständige Struktur als Wiederholung finden. Das wäre ja eine Sensation, da du auf diese Weise beliebig große Primzahlen konstruieren könntest ohne sie explizit berechnen/testen zu müssen.\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Do. 04. Januar 2018 16:06:32
\(\begingroup\)Das automatische Blaufärben von Zeilen, die keine Brüche enthalten, stelle ich mir komplziert vor. Man müsste nach dem Schlüsselwort 'frac' suchen und eine if/else-Methode programmieren. Auf der anderen Seite müssen, die Zeilen auch nicht durch Schleifen erzeugt werden. Setzt man sie durch copy/paste, kann man bei gewünschten Zeilen text=blue ergänzen. Siehe unten... $ \usetikzlibrary{matrix} \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\k, \n) {return int((2*\k-1)*2^\n-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zahler, \nenner) {return int(\zahler/gcd(\zahler,\nenner));}; function RedNenner(\zahler, \nenner) {return int(\nenner/gcd(\zahler,\nenner));}; } % Ausgabe des reduzierten Bruches \newcommand{\rfrac}[2]{%%%%%%%%%%%%%%%%%% \pgfmathtruncatemacro{\RedZaehler}{RedZaehler(#1,#2)} \pgfmathtruncatemacro{\RedNenner}{RedNenner(#1,#2)} \pgfmathtruncatemacro{\Eins}{1} \ifnum \RedNenner = \Eins $\textcolor{red}{\RedZaehler}$ % ganz \else $\frac{\RedZaehler}{\RedNenner}$ % Bruch \fi }%%%%%%%%%%%%%%%%%% %Test Mersenne: \pgfmathparse{Mersenne(1,3)} \pgfmathresult \\ %Test RedZaehler: \pgfmathparse{RedZaehler(6, 2)} \pgfmathresult \\ %Test reduzierter Bruch: \rfrac{6}{2} ~~ \rfrac{18}{11} ~~ \rfrac{4}{12} \\ %Test Mersenne Bruch: \rfrac{Mersenne(1,1)}{7} \def\nMaxSpalte{3} % Länge der anzuzeigenden Mersenne Folge \def\nMaxZeile{7} \def\MatrixZeile{ \& \& \\ } % "nMaxSpalte-1 \&-Zeichen" \def\MatrixZeilen{% % nMaxZeile+2 Stück \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% % Divisor der Divisormatrix \pgfmathtruncatemacro{\Divisor}{7} $M_{\text{di}}(\Divisor)=M_{\text{M}} \cdot \frac{1}{\Divisor}= \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, column sep = 1.25em, left delimiter = (, right delimiter = ), %nodes={}, ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=right] at (m-\k-\n) {\rfrac{Mersenne(\k,\n)}{\Divisor}}; \end{tikzpicture} \end{matrix}$ $ oder $ \usetikzlibrary{matrix} \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\k, \n) {return int((2*\k-1)*2^\n-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zahler, \nenner) {return int(\zahler/gcd(\zahler,\nenner));}; function RedNenner(\zahler, \nenner) {return int(\nenner/gcd(\zahler,\nenner));}; } % Ausgabe des reduzierten Bruches \newcommand{\rfrac}[2]{%%%%%%%%%%%%%%%%%% \pgfmathtruncatemacro{\RedZaehler}{RedZaehler(#1,#2)} \pgfmathtruncatemacro{\RedNenner}{RedNenner(#1,#2)} \pgfmathtruncatemacro{\Eins}{1} \ifnum \RedNenner = \Eins $\textcolor{red}{\RedZaehler}$ % ganz \else $\frac{\RedZaehler}{\RedNenner}$ % Bruch \fi }%%%%%%%%%%%%%%%%%% %Test Mersenne: \pgfmathparse{Mersenne(1,3)} \pgfmathresult \\ %Test RedZaehler: \pgfmathparse{RedZaehler(6, 2)} \pgfmathresult \\ %Test reduzierter Bruch: \rfrac{6}{2} ~~ \rfrac{18}{11} ~~ \rfrac{4}{12} \\ %Test Mersenne Bruch: \rfrac{Mersenne(1,1)}{7} \def\nMaxSpalte{8} % Länge der anzuzeigenden Mersenne Folge \def\nMaxZeile{17} \def\MatrixZeile{ \& \& \& \& \& \& \& \\ } % "nMaxSpalte-1 \&-Zeichen" \def\MatrixZeilen{% % nMaxZeile Stück \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% % Divisor der Divisormatrix \pgfmathtruncatemacro{\Divisor}{17} $M_{\text{di}}(\Divisor)=M_{\text{M}} \cdot \frac{1}{\Divisor}= \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, column sep = 1.5em, left delimiter = (, right delimiter = ), %nodes={}, ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=right] at (m-\k-\n) {\rfrac{Mersenne(\k,\n)}{\Divisor}}; \end{tikzpicture} \end{matrix}$ $\(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Do. 04. Januar 2018 18:30:09
\(\begingroup\)Hey cis, beeindruckend was Du da gemacht hast... Ich bin des Programmierens leider nicht mächtig. Ich kenne also nur eine paar Latex Grundbefehle um die mathematischen Symbole zu nutzen... Deswegen eine Frage: Kannst Du kurz erklären was genau eingegeben werden muss damit er für eine bestimmte Zahl eine Matrix erzeugt? Ich habe folgendes probiert: Nehmen wir an, dass wir die 13 "plotten" wollen. So habe ich sie hier \pgfmathtruncatemacro{\Divisor}{13} eingegeben... Außerdem habe ich die Anzahl der Reihen und Spalten hier eingegeben \def\nMaxSpalte{12} % Länge der anzuzeigenden Mersenne Folge \def\nMaxZeile{13} Ist glaube ich nicht ganz richtig... \(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Do. 04. Januar 2018 18:39:39
\(\begingroup\)Ich muss hier noch ein, zwei Sachen klären. Dann präsentiere ich eine übersichtliche Lösung. \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Do. 04. Januar 2018 18:49:42
\(\begingroup\)@slash Ja, Du hast Recht... Die Ulamspirale kann man damit denke ich gut vergleichen... Ich habe die Muster bis jetzt in Excel getestet. Dort schaffe ich allerdings nicht viel mehr als 50 Spalten, weil die BIG Integer Funktion von VBA nicht auf die DIvision von großen Zahlen mit Resten ausgelegt ist. ABer wenn cis hier so weiter zaubert... Mal sehen...\(\endgroup\)
 

Re: Divisormatrizen
von: Slash am: Fr. 05. Januar 2018 05:00:09
\(\begingroup\)Bei Excel und mathematischer Forschung streuben sich mir immer die Nackenhaare. 😉 Benutze doch PARI. Mit den Grafikfunktionen kann man dir bestimmt hier im Forum helfen. Oder PARI + Gnuplot. 😄 \(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Sa. 06. Januar 2018 19:04:21
\(\begingroup\)So, das ist aber jetzt HighEnd hier... Ist (m.E.) relativ kompliziert geworden, diese if-Unterscheidungsmethode für rot/blau/schwarz färben. $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ oder $ \usetikzlibrary{matrix} %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{17} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{17} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{8} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ Aber zur Frage nach der Bedienung. Um eine dieser Matrizen zu erstellen musst Du einfach folgende Eingaben ausfüllen: \sourceon Eingaben \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \sourceoff \quoteon Aber wenn cis hier so weiter zaubert... Mal sehen... \quoteoff Ja, naja. Das sind jetzt hier eher Sachen darstellerischer bzw. typographischer Natur. Ich hatte in den Primzahlthreads oft solche monströsen Matrizen gesehen, die BruteForce eingegeben wurden. Daher hielt ich die Automatisierung für eine interessante LaTeX-Aufgabe. Ob sich erkenntnistheoretische Resultate auf dem Gebiet der Primzahlforschung aus LaTeX rausholen lassen, wage ich fast zu bezweifeln. Es ist eh ein bisschen die Frage wie groß für pgf/tikz(math) die Matrizen überhaupt maximal sein dürfen (zumal LaTeX weniger zum Rechnen da ist) - hab ich jetzt nicht mit gespielt. Ansonsten gäbe es noch die Möglichkeit (das freie) Sage und für die Darstellung sagetex zu verwenden, was Mathematica ähnlich ist und sich sicher eine Einarbeitung lohnt. Da kenne mich aber z.Zt. zu wenig aus und kämpfe noch gegen die Syntax. Programm am eigenen PC: \sourceon latex %\documentclass[11pt]{scrartcl} \documentclass[border=3mm, varwidth]{standalone} \usepackage[ngerman]{babel} \usepackage{tikz, amsmath, amssymb} \usetikzlibrary{math, matrix} % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} \begin{document} $M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ \end{document} \sourceoff \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Sa. 06. Januar 2018 19:42:39
\(\begingroup\)Ja klasse... Danke Dir... Ob man spezial durch diese Matrizen etwas neues entdeckt kann ich Dir auch nicht sagen. Aber vielleicht lassen sich andere dadurch inspirieren und sehen doch etwas, was wir nicht sehen. Slashs Vorschlag große Matrizen mit pixelweiser Färbung wäre vielleicht noch interessant... ABer da hab ich noch weniger Plan wie man das bewerkstelligen könnte... Btw: Könntest Du nochmal eine Matrix mit dem neuen Code darstellen lassen? Z.B. die 23? Dann sehe ich was genau eingegeben werden muss...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Sa. 06. Januar 2018 19:52:44
\(\begingroup\)\quoteon 1. Slashs Vorschlag große Matrizen mit pixelweiser Färbung wäre vielleicht noch interessant... 2. Könntest Du nochmal eine Matrix mit dem neuen Code darstellen lassen? Z.B. die 23? Dann sehe ich was genau eingegeben werden muss... \quoteoff 1. Das sollte eine (triviale) Änderung des o.g. Codes sein. Statt roten/blauen/schwarzen Brüchen müsste man einfach direkt tikz-Nodes, z.B. mit roten/blauen/schwarzen Rechtecken ausgeben. 2. Versuche erstmal anhand der "Einstellungen" diese Matrix selbst zu erzeugen. Vom Primzahlthema habe ich keine Ahnung - ich kann nur ein bisschen teXen. 😄 \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Sa. 06. Januar 2018 19:59:01
\(\begingroup\)Sorry, vor lauter Code habe ich die Matrizen dadrüber übersehen... So, hat sich die Frage nach der Beispielmatrix natürlich erledigt...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Sa. 06. Januar 2018 20:15:24
\(\begingroup\)Ja, dann zeig mal die 23er Matrix (was immer das bedeutet). 😄\(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Sa. 06. Januar 2018 21:06:57
\(\begingroup\)Alles klar es läuft: Mersennezahlmatrix $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{3} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{3} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{2} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ Singlematrix $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{5} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{5} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{4} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ Mersennezahlmatrix $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ Quadratzahlmatrix $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{9} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{9} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{6} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ Singlematrix $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{11} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{11} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{10} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: So. 07. Januar 2018 01:46:00
\(\begingroup\)Oder wahlweise, wie gewünscht, gefüllt mit Symbolen (siehe Code, "Eingaben"). Kann man natürlich noch dran rumfeilen. $ % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} %$M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{17} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{17} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{8} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Ausgabe festlegen \tikzset{mystyle/.style={rectangle, }}%draw \newcommand\GANZZAHL{% %$\textcolor{red}{\Zaehler}$ % oder \tikz[] \node[mystyle, fill=red]{}; } % \newcommand\BRUCHNORMAL{% %$\frac{\Zaehler}{\Nenner}$ % oder \tikz[] \node[mystyle, fill]{}; } % \newcommand\BRUCHBLAU{% %$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$ % oder \tikz[] \node[mystyle, fill=blue]{}; } % 4. Evtl. Zeilen- und Spaltenabstand nach Augenmaß anpassen \def\RowSep{1.125em} \def\ColumnSep{1.25em} %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \GANZZAHL% \else \BRUCHNORMAL% \fi \else \BRUCHBLAU% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = \RowSep, % Zeilenabstand optisch anpassen! column sep = \ColumnSep, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ oder beides $ % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} $M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{17} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{17} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{8} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Ausgabe festlegen \tikzset{ MyStyle/.style={rectangle,},%draw MySize/.style={ rounded corners =2pt, minimum width=2.5em, minimum height=1.75em,} } \newcommand\GANZZAHL{% %$\textcolor{red}{\Zaehler}$ % oder %\tikz[] \node[MyStyle, fill=red]{}; % oder beides \tikz[] \node[MyStyle, MySize, fill=red!30]{$\textcolor{red}{\Zaehler}$}; } % \newcommand\BRUCHNORMAL{% %$\frac{\Zaehler}{\Nenner}$ % oder %\tikz[] \node[MyStyle, fill]{}; % oder beides \tikz[] \node[MyStyle, MySize, fill=lightgray]{$\frac{\Zaehler}{\Nenner}$}; } % \newcommand\BRUCHBLAU{% %$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$ % oder %\tikz[] \node[MyStyle, fill=blue]{}; % oder beides \tikz[] \node[MyStyle, MySize, fill=blue!30]{$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$}; } % 4. Evtl. Zeilen- und Spaltenabstand nach Augenmaß anpassen \def\RowSep{1.5em} \def\ColumnSep{2.5em} %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \GANZZAHL% \else \BRUCHNORMAL% \fi \else \BRUCHBLAU% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = \RowSep, % Zeilenabstand optisch anpassen! column sep = \ColumnSep, % Spaletenabstand optisch anpassen! %left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ \(\endgroup\)
 

Re: Divisormatrizen
von: Slash am: So. 07. Januar 2018 08:44:35
\(\begingroup\)cis code ist toll für kleine Beispiele in einem Artikel, aber zu Forschungszwecken noch ungeeigneter als Excel. Das in einer Sprache zu programmieren ist doch total simpel, zwei Schleifen für die Matrix und die If-Abfrage zur Pixelfärbung. Das wird dann Zeile für Zeile oder Spalte für Spalte gezeichnet und berechnet. Der gute "matph" schreibt dir diesen PARI Code in 5 Minuten, wenn du ihn höflich darum bittest.\(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: So. 07. Januar 2018 10:04:20
\(\begingroup\)$ % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} %$M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{15} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{15} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{4} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Ausgabe festlegen \tikzset{mystyle/.style={rectangle, }}%draw \newcommand\GANZZAHL{% %$\textcolor{red}{\Zaehler}$ % oder \tikz[] \node[mystyle, fill=red]{}; } % \newcommand\BRUCHNORMAL{% %$\frac{\Zaehler}{\Nenner}$ % oder \tikz[] \node[mystyle, fill]{}; } % \newcommand\BRUCHBLAU{% %$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$ % oder \tikz[] \node[mystyle, fill=blue]{}; } % 4. Evtl. Zeilen- und Spaltenabstand nach Augenmaß anpassen \def\RowSep{1.125em} \def\ColumnSep{1.25em} %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \GANZZAHL% \else \BRUCHNORMAL% \fi \else \BRUCHBLAU% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = \RowSep, % Zeilenabstand optisch anpassen! column sep = \ColumnSep, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ $ % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} %$M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{31} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{31} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{5} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Ausgabe festlegen \tikzset{mystyle/.style={rectangle, }}%draw \newcommand\GANZZAHL{% %$\textcolor{red}{\Zaehler}$ % oder \tikz[] \node[mystyle, fill=red]{}; } % \newcommand\BRUCHNORMAL{% %$\frac{\Zaehler}{\Nenner}$ % oder \tikz[] \node[mystyle, fill]{}; } % \newcommand\BRUCHBLAU{% %$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$ % oder \tikz[] \node[mystyle, fill=blue]{}; } % 4. Evtl. Zeilen- und Spaltenabstand nach Augenmaß anpassen \def\RowSep{1.125em} \def\ColumnSep{1.25em} %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \GANZZAHL% \else \BRUCHNORMAL% \fi \else \BRUCHBLAU% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = \RowSep, % Zeilenabstand optisch anpassen! column sep = \ColumnSep, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ $ % Muss auf dem MP angegeben werden! \usetikzlibrary{matrix} %$M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\ %%%%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{63} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{63} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{6} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Ausgabe festlegen \tikzset{mystyle/.style={rectangle, }}%draw \newcommand\GANZZAHL{% %$\textcolor{red}{\Zaehler}$ % oder \tikz[] \node[mystyle, fill=red]{}; } % \newcommand\BRUCHNORMAL{% %$\frac{\Zaehler}{\Nenner}$ % oder \tikz[] \node[mystyle, fill]{}; } % \newcommand\BRUCHBLAU{% %$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$ % oder \tikz[] \node[mystyle, fill=blue]{}; } % 4. Evtl. Zeilen- und Spaltenabstand nach Augenmaß anpassen \def\RowSep{1.125em} \def\ColumnSep{1.25em} %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor) );}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor) );}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \begingroup \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \GANZZAHL% \else \BRUCHNORMAL% \fi \else \BRUCHBLAU% \fi \endgroup }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = \RowSep, % Zeilenabstand optisch anpassen! column sep = \ColumnSep, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ @slash Ja, Du hast recht... Ich werde mal ein Thread dazu eröffnen...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: So. 07. Januar 2018 14:08:26
\(\begingroup\)1. Hinweis: Die farblichen Hervorhebungen im Artikel werden mit Firefox korrekt angezeigt, nicht jedoch auf dem Handy-Browser. Also Hände weg von MathJax. 2. Um effektiv an dem Problem zu arbeiten, würde ich das so machen ($k,n,d$ positiv, ganz): · Man hat Mersenne-Zahlen: $M(n)=2^n - 1$. · Dann hat man "Mersenne-Zahlen $k$-ter Stufe": $M(k,n) = (2k-1)\cdot 2^n - 1$ (ob das offiziell so genannt wird, weiß ich nicht, ist auch nicht so wichtig). · Schließlich hat man "Mersenne-Brüche mit festem Divisor $d$": $M(k,n,d) = \dfrac{M(k,n)}{d} = \dfrac{Z(k,n,d)}{N(k,n,d)}$, wobei die Brüche, d.h. Zähler und Nenner, voll gekürzt sind. Wenn man das übersichtlich in einer Matrix zusammenfassen möchte, braucht man eine Textdatei, die folgende Informationen enthält \sourceon Z(1,1,d)/N(1,1,d), Z(1,2,d)/N(1,2,d), ... Z(1,*,d)/1 Z(2,1,d)/N(2,1,d), Z(2,2,d)/N(2,2,d), ... Z(2,*,d)/N(2,*,d) .......... Z(d,1,d)/N(d,1,d), Z(d,2,d)/N(d,2,d), ... Z(d,*,d)/N(d,*,d) \sourceoff '/' hier als Trennzeichen verwendet. - Die Anzahl der Spalten ist durch den Nenner N(1,*,d) = 1 festgelegt, für den der Mersenne-Bruch 1. Stufe erstmals ganzzahlig ausfällt. - Die Anzahl der Zeilen ist d. Nun will man, zur späteren Hervorhebung, noch eine Eigenschaft (e), z.B. rot/schwarz/blau, also r/s/b. Der Mersenne-Bruch soll - rot gesetzt werden, wenn er Ganzzahl ist - schwarz gesetzt werden, wenn er in einer Zeile (Stufe) steht, die eine Ganzzahl enthält. - blau gesetzt werden "sonst", also wenn seine Zeile (Stufe) keine Ganzzahl enthält. Was man also braucht ist eine Textdatei des Typs: \sourceon Z(1,1,d)/N(1,1,d)/s, Z(1,2,d)/N(1,2,d)/s, ... Z(1,*,d)/1/r Z(2,1,d)/N(2,1,d)/e21, Z(2,2,d)/N(2,2,d)/e22, ... Z(2,*,d)/N(2,*,d)/e2* .......... Z(d,1,d)/N(d,1,d)/e_d1, Z(d,2,d)/N(d,2,d)/e_d2, ... Z(d,*,d)/N(2,*,d)/e_d* \sourceoff '/' hier als Trennzeichen verwendet. Für das einfache Beispiel $ \usetikzlibrary{matrix} % Muss auf dem MP angegeben werden! %%%%%%%%%%% % EINGABEN! %%%%%% %%%%%%%%%%%%% % 1. Lege den Divisior der Divisormatrix fest. \pgfmathtruncatemacro{\Divisor}{5} % Divisor der Divisormatrix % \newcommand\Einleitungstext{% M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} = }% wahlweise leer lassen / auskommentieren... % 2a. Lege die Dimensionen der Divisormatrix fest. \def\nMaxZeile{5} % Länge der Mersenne Folge in Zeilen \def\nMaxSpalte{4} % Länge der Mersenne Folge in Spalten % 2b. Passe die Syntax für die spätere tikz-Matrix an. \def\MatrixZeile{ \& \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen \def\MatrixZeilen{% % "nMaxZeile" Stück eintragen \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile \MatrixZeile }% %%%%%%%%%%%%% %%% fertig! %%%%% %%%%%%%%%%%%% % 3. Passe evtl. noch row sep = ****em, column sep = ****em, % in der späteren tikz-Matrix optisch an. %%%%%%%%%%%%% %%%%%%%%%%%%% \tikzmath{ % Berechnung der Folgenglieder function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);}; % Bestimmung des Reduzierten Bruches function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));}; function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));}; % Bestimmung von Zähler und Nenner im MersenneBruch function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));}; function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));}; } % Farbige Ausgabe des reduzierten Mersenne Bruches % \MersenneBruch{}{} \newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%% \pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator % Zähler und Nenner des Mersenne-Bruches festlegen \pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}% \pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}% % \pgfmathsetmacro{\y}{0} \foreach \Spalte in {1,...,\nMaxSpalte}{% \pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}% \ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner \global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner} \else \let\y=0% \fi }% \ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner... \ifx \Nenner\Eins% \textcolor{red}{\Zaehler}% \else $\frac{\Zaehler}{\Nenner}$% \fi \else $\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$% \fi }%%%%%%%%%%%%%%%%%%%%%%%%% %Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1} % Mersenne-Matrix setzen $\Einleitungstext \begin{matrix} % normale Matrix damit angepasst an Rest \begin{tikzpicture} \matrix (m) [ % tikz-Matrix ampersand replacement=\&, matrix of math nodes, nodes in empty cells, row sep = 1.125em, % Zeilenabstand optisch anpassen! column sep = 1.25em, % Spaletenabstand optisch anpassen! left delimiter = (, right delimiter = ), % Klammern ] {% \MatrixZeilen }; % Matrixelemente hervorheben % \nennerode[fill=red!50, minimum width = 1.5em, minimum height = 1.25em, % rounded corners=1.5pt, % align=right] at (m-1-3) {}; % Matrix füllen mit Zahlen \foreach \k in {1,...,\nMaxZeile} \foreach \n in {1,...,\nMaxSpalte} \node[align=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}}; % Test: %\node[align=right, text=blue] at (m-2-1) {}; \end{tikzpicture} \end{matrix}$ $ sähe das dann so aus: \sourceon 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/s, 71/5/s, 143/5/s \sourceoff '/' als Trennzeichen verwendet Und so eine Textdatei sollte man am besten mit sowas wie Mathematica erstellen. Hat man erstmal so eine Textdatei, lässt sich auch die visuelle Verarbeitung leicht mit LaTeX, tikz/pgf umsetzen. Nur ist es ungünstig, die Berechnungen mit LaTeX selbst vorzunehmen, da TeX bald an seine Grenzen der Berechenbarkeit stoßen wird. \(\endgroup\)
 

Re: Divisormatrizen
von: viertel am: So. 07. Januar 2018 19:51:39
\(\begingroup\)So ist es wohl übersichtlicher. Leider habe ich es noch nicht geschafft, GMP in mein Borland C++ zu integrieren. Deshalb rechne ich nur mit einer eigenen Bruch-Klasse (64-bit Integer), und die ist bei diesen Potenzen schnell überfordert. Auch dieses Bild ist manuell aufgefüllt; eigentlich ist noch nicht mal der 2. Spaltenblock ganz gefüllt. http://matheplanet.com/matheplanet/nuke/html/uploads/b/1781_Divisormatrizen_A1816.png\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_14242 am: Mo. 08. Januar 2018 16:07:06
\(\begingroup\)Das gehört jetzt nicht direkt zu diesem Artikel, jedoch zum Begriff Divisormatrizen, den blindmessenger wohl einführte auch vor seinem Artikel hier. Also solche "Divisormatrizen" wie in http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=232911&post_id=1697812> sind hier wohl nicht gemeint, oder. Diese habe ich aus der Latexversion von blindmessenger´s Artikel extrahiert und etwas umgewandelt, z.B.: color statt textcolor mit editor, so dass die MP-fähig wurden. So können sie auch breiter als 9 werden. Wir haben dummerweise jetzt eine doppelte Bedeutung von "Divisormatrizen". Ich meine diese für p =23. Was die Schwarz-, Grün- und Rot-Markierungen ja beispielhaft für 23 klärt in http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=232911&post_id=1697649. Siehe Matrix unten. Die Bildungsformel ist dort $(2i-1)*2^j,\quad (i,j\in \mathbb N^*, j=1..11, i=1..23 )$ Wie Tabellenbreite und Höhe zusammenhängen ist an sich für alle p oder Pseudoprime der Basis 2 (fast ;)) geklärt. (Rang!) Wenn man diese "alten" "Divisormatrizen" z.B. modulo 23 betrachtet, wird vieles klarer und ändert nichts an den Farben. Ich bin grad dabei, so was wie "Coloured Modulo Tabellen" - Erzeugung in PHP für alle p etwa bis 127 zu schreiben. Auch für einige Pseudoprimes. Vielleicht geht das besser in Tcl, wovon ich keine Ahnung habe. Die gesuchten $2^j$ werden natürlich schnell gross, über $2^{60}$, das geht aber mit biginteger bzw. GMP zu machen. Denn selbst für kleine n = 0..32 (etwa) wird das kleinste j > 0, so dass \(2n+1 \mid 2^{j-1}\) , schnell sehr groß. Siehe diese Reihe Oder man erzeugt solche Textzeilen wie cis. Nochmal die alte Divisormatrix für 23: Besser nennen wir die Primzahlentabelle mit Untergruppen (schwarz) und Restklassen (grün). \[\begin{pmatrix} 2&4&8&16&32&64&128&256&512&1024&\color{red}{2048}\\ 6&12&\color{red}{24}&48&96&192&384&768&1536&3072&6144\\ \color{green}{10}&\color{green}{20}&\color{green}{40}&\color{green}{80}&\color{green}{160}&\color{green}{320}&\color{green}{640}&\color{green}{1280}&\color{green}{2560}&\color{green}{5120}&\color{green}{10240}\\ \color{green}{14}&\color{green}{28}&\color{green}{56}&\color{green}{112}&\color{green}{224}&\color{green}{448}&\color{green}{896}&\color{green}{1792}&\color{green}{3584}&\color{green}{7168}&\color{green}{14336}\\ 18&36&72&144&288&\color{red}{576}&1152&2304&4608&9216&18432\\ \color{green}{22}&\color{green}{44}&\color{green}{88}&\color{green}{176}&\color{green}{352}&\color{green}{704}&\color{green}{1408}&\color{green}{2816}&\color{green}{5632}&\color{green}{11264}&\color{green}{22528}\\ 26&52&104&\color{red}{208}&416&832&1664&3328&6656&13312&26624\\ \color{green}{30}&\color{green}{60}&\color{green}{120}&\color{green}{240}&\color{green}{480}&\color{green}{960}&\color{green}{1920}&\color{green}{3840}&\color{green}{7680}&\color{green}{15360}&\color{green}{30720}\\ \color{green}{34}&\color{green}{68}&\color{green}{136}&\color{green}{272}&\color{green}{544}&\color{green}{1088}&\color{green}{2176}&\color{green}{4352}&\color{green}{8704}&\color{green}{17408}&\color{green}{34816}\\ \color{green}{38}&\color{green}{76}&\color{green}{152}&\color{green}{304}&\color{green}{608}&\color{green}{1216}&\color{green}{2432}&\color{green}{4864}&\color{green}{9728}&\color{green}{19456}&\color{green}{38912}\\ \color{green}{42}&\color{green}{84}&\color{green}{168}&\color{green}{336}&\color{green}{672}&\color{green}{1344}&\color{green}{2688}&\color{green}{5376}&\color{green}{10752}&\color{green}{21504}&\color{green}{43008}\\ \color{green}{46}&\color{green}{92}&\color{green}{184}&\color{green}{368}&\color{green}{736}&\color{green}{1472}&\color{green}{2944}&\color{green}{5888}&\color{green}{11776}&\color{green}{23552}&\color{green}{47104}\\ 50&100&200&400&800&1600&3200&6400&12800&\color{red}{25600}&51200\\ 54&108&216&432&864&1728&3456&6912&\color{red}{13824}&27648&55296\\ 58&\color{red}{116}&232&464&928&1856&3712&7424&14848&29696&59392\\ 62&124&248&496&992&1984&3968&\color{red}{7936}&15872&31744&63488\\ \color{green}{66}&\color{green}{132}&\color{green}{264}&\color{green}{528}&\color{green}{1056}&\color{green}{2112}&\color{green}{4224}&\color{green}{8448}&\color{green}{16896}&\color{green}{33792}&\color{green}{76584}\\ \color{red}{70}&140&280&560&1120&2240&4480&8960&17920&35840&71680\\ \color{green}{74}&\color{green}{145}&\color{green}{296}&\color{green}{592}&\color{green}{1184}&\color{green}{2368}&\color{green}{4736}&\color{green}{9472}&\color{green}{18944}&\color{green}{37888}&\color{green}{75776}\\ 78&156&312&624&1248&2496&\color{red}{4992}&9984&19968&39936&79872\\ 82&164&328&656&\color{red}{1312}&2624&5248&10496&20992&41984&83968\\ \color{green}{86}&\color{green}{172}&\color{green}{344}&\color{green}{688}&\color{green}{1376}&\color{green}{2752}&\color{green}{5504}&\color{green}{11008}&\color{green}{22016}&\color{green}{44032}&\color{green}{88064}\\ \color{green}{90}&\color{green}{180}&\color{green}{360}&\color{green}{720}&\color{green}{1440}&\color{green}{2880}&\color{green}{5760}&\color{green}{11520}&\color{green}{23040}&\color{green}{46080}&\color{green}{ 92160}\\ \end{pmatrix} \] \(\endgroup\)
 

Re: Divisormatrizen
von: Slash am: Mo. 08. Januar 2018 17:41:13
\(\begingroup\)Hier der Link zum Thread: Grafik für Divisormatrizen\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_14242 am: Di. 09. Januar 2018 15:50:42
\(\begingroup\) @ viertel Kannst du den C++ Code fuer deine obigen Beitrag http://matheplanet.com/matheplanet/nuke/html/edit.php?what=comments&keyval=16397§ion=comment&key2=1816 freigeben? Ich verstehe nicht, was jedes blaue Pixel-Kästchen bedeutet.. Oder eine Erklärung was da genau passiert, gezeigt wird? @Autor Ausserdem ist mir unklar, was das Wort Mersenne für diese unendlich Matrizen bedeutet... DANKE! \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Di. 09. Januar 2018 17:44:55
\(\begingroup\)Die erste Reihe der Mersennematrix besteht aus den Mersennezahlen... Alle weiteren Reihen sind ähnlich aufgebaut... \(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_477 am: Di. 09. Januar 2018 19:42:34
\(\begingroup\)In der $k$-ten Zeile und in der $n$-ten Spalte soll die Zahl $M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ stehen. Das hab ich bereits im Artikel vermisst und musste da selbst drauf kommen. Und \quoteon Alle weiteren Reihen sind ähnlich aufgebaut... \quoteoff ist keine besonders mathematische Erklärung. Beim Schreiben eines Artikels muss man grundsätzlich davon ausgehen, dass der Leser keine Ahnung vom Thema hat! Die Mersenne-Matrix hat demnach den Aufbau $\left(M_{kn} \right)_{(\infty \times \infty)}\text{ mit } M_{kn} = M(k,n)$. Die Divisormatix hat den Aufbau $\left(\dfrac{M_{kn}}{d} \right)_{(d \times N)}\text{ wobei } N \text{ die kleinste positive ganze Zahl ist, so dass } \dfrac{M_{1N}}{d} \text{ ganzzahlig ausfällt}$. \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Di. 09. Januar 2018 20:40:35
\(\begingroup\)@cis Ja, das könnte man noch unterbringen in dem Artikel... Ich werde mich morgen mal daran setzen...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_14242 am: Di. 09. Januar 2018 21:23:13
\(\begingroup\)Zum Thema: Das Bildungsgesetz sollte erkennbar sein. Ja sollte es, tut es ;)? Die genaue Bildungsformel ist $M_[i,j] = (2i-1)\cdot2^{j}-1,\quad i=1...\infty,\quad j =1..\infty$. Nicht? Wobei $2^j$ MersenneZahlen sind mit allen Exponenten j auch geraden und nicht primen ungeraden. Und 2i-1 läuft über 1,3,5,7... Nur dass ich es auch verstehe :) Alle 1,5,9,13,... der 1. Spalte, j=1, sind wenn man 1 addiert gerade composites 2,6,10,14 mit allen möglichen ungeraden Teilern und nur 1 mal der 2: $\displaystyle a(1) = 2^{1}\cdot (2i-1)-1$. In der 2ten Spalte sind es also alle $\displaystyle a(2) = 2^{2}\cdot (2i-1)-1$ und 2^2: In der nten Spalte sind es alle $\displaystyle a = 2^{n}\cdot (2i-1)-1$. So dass in Zeile 4, Spalte 3 $\displaystyle a(4,3) = 2^{3}\cdot7-1$ steht. Es enthalten die Zahlen der Spalte n mit 1 addiert genau die 2^n als Teiler, sind \(\equiv -1\mod 2^n)\). Die Spalten teilen also alle Zahlen nach der Häufigkeit von 2er Potenzen als Teilern. Die Elemente der Zeile i sind alle \(\equiv -1\mod(2i-1)\). In Zeile 7, Spalte 4 müsste $\displaystyle a = 2^{4}\cdot\ 13^{1}-1 = 207$ stehen, oder? Ich musste das nur mal sauber hinschreiben... Übungsaufgabe: Wo steht 839? Kannst Du eine Formel angeben für alle ungeraden n? Wollte mich da gar nicht so reinsteigern, aber hatte nun mal angefangen. Thx \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Mi. 10. Januar 2018 07:35:29
\(\begingroup\)@juergen Ja, das sieht gut aus... Nur das Mersenne-Zahlen Zahlen der Form $2^j-1$ sind.\(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Mi. 10. Januar 2018 21:49:53
\(\begingroup\)@jürgen Die 2 Variablen $m$ und $n$ für ein vorgegebenes Element der Mersennematrix zu finden stelle ich mir gar nicht so einfach vor... Ich wüsste nicht wie ich das berechnen sollte... Immerhin wissen wir, dass es für jede ungerade Zahl eine Lösung mit ganzzahligen Exponenten gibt... Ist das eigentlich selbstverständlich? Das ist wohl wieder der diskrete Logarithmus im Spiel...\(\endgroup\)
 

Re: Divisormatrizen
von: Ex_Mitglied_14242 am: Fr. 12. Januar 2018 19:32:09
\(\begingroup\)Zu 839 : Rechne 839+1 = 840. Bestimme die Primfaktorzerleung $840 = 2^3\cdot3\cdot5\cdot7$ Oder dividiere die 2en raus so lang es ganze Zahlen bleiben. Dann dividiere $840/2^3 = 3\cdot5\cdot7 =105$ Also steht 839 in Zeile $\frac{105+1}{2} = 53$, und in Spalte 3 der ursprünglichen unendlichen Matrix $M_{m}$. Reduziere die Zeilennummer hier 53 modulo der Primzahl, also des Divisors, meinetwegen $2^5-1=31$, dann ist $51 \mod 31=20$ die richtige Zeilennummer für $a = 839/31 \in \mathbb M_{31}$, meine ich. Statt $2^5-1=31$ kann ich jede andere Primzahl nehmen. Die erste Zeile in der unendlichen Matrix $M_{m}$ sind an sich alle 2er Potenzen $2^j$ abzüglich 1, $j=1..\infty$. Um mal diesen überstrapazierten Begriff Mersenne zu relativieren. \(\endgroup\)
 

Re: Divisormatrizen
von: blindmessenger am: Fr. 12. Januar 2018 21:19:00
\(\begingroup\)@Jürgen Ja, ich habe mir auch noch einen Algorithmus überlegt... Sieh mal hier: http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=233492&post_id=1699531\(\endgroup\)
 

 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. 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]