Wie kann ich eine mit der TikZ-Bibliothek math berechnete Folge in eine Matrix bzw. TikZ-Matrix schreiben?

alt text

Öffne in Overleaf
\documentclass[11pt]{scrartcl}
%\documentclass[border=3mm]{standalone}
\usepackage[ngerman]{babel}
\usepackage{pgf, pgffor, 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}$ \\

IST: \\
%\tikzmath{%
%function Mersenne(\n){return 2^\n-1;};       % Klappt nicht ganz
%function Ungerade(\k){return (2*\k-1);};
%}

\tikzmath{% ===================
int \M, \n, \k;
    for \k in {3}{%
        for \n in {1,...,4}{%%
        \M = (2*\k-1)*2^\n-1;
        print {\M,  };
        };%%
    };%
}     % ===================
\bigskip

SOLL: \\
$\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}

gefragt 01 Jan '18, 18:13

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 01 Jan '18, 20:24


Mit Lua ist alles einfacher.

Öffne in Overleaf
\documentclass{article}
\usepackage{amsmath}
\begin{document}

\[
  \begin{pmatrix}
    \directlua{\unexpanded{
        % Inhalt
        for k = 1,3 do
           for n = 1,4 do
              local M = (2*k-1)*2^n-1
              tex.sprint(M .. "&")
           end
           tex.sprint("\\cdots & \\infty \\\\")
        end
        % Punkte
        for n = 1,4 do
           tex.sprint("\\vdots &")
        end
        tex.sprint("\\ddots & \\vdots \\\\")
        % Schluss
        for n = 1,4 do
           tex.sprint("\\infty &")
        end
        tex.sprint("\\cdots & \\infty \\\\")
      }}
  \end{pmatrix}
\]

\end{document}

alt text

Noch schöner ist es, finde ich, in ConTeXt. Da kann man einfach die gesamte Formel mit Matrix in Lua bauen.

Öffne in Overleaf
\starttext

\startluacode
  context.startformula()
  context.startmathmatrix{left="\\left(", right="\\right)"}
  -- Inhalt
  for k = 1,3 do
     for n = 1,4 do
        local M = (2*k-1)*2^n-1
        context.NC(M)
     end
     context.NC("\\cdots")
     context.NC("\\infty")
     context.NR()
  end
  -- Punkte
  for n = 1,4 do
     context.NC("\\vdots")
  end
  context.NC("\\ddots")
  context.NC("\\infty")
  context.NR()
  -- Schluss
  for n = 1,4 do
     context.NC("\\infty")
  end
  context.NC("\\cdots")
  context.NC("\\infty")
  context.NR()
  context.stopmathmatrix()
  context.stopformula()
\stopluacode

\stoptext

alt text

Permanenter link

beantwortet 02 Jan '18, 00:56

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 02 Jan '18, 04:02

"Mit Lua ist alles einfacher." --> Dann muss ich aber Lua lernen, ich komm doch schon mit TeX nicht klar.

(02 Jan '18, 11:23) cis

Mir ging es jetzt zunächst darum, diese for-Schleife zu optimieren. Setzt man z.B. for \k in {1,...,4} werden die Zahlen nebeneinander, nicht untereinander geschrieben.

(02 Jan '18, 11:25) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×58
×4

gestellte Frage: 01 Jan '18, 18:13

Frage wurde gesehen: 6,796 Mal

zuletzt geändert: 02 Jan '18, 20:15