Ich berechne im 1. Schritt die Glieder einer Folge.

Nun sollen die Folgenglieder durtch einen festgelegten Divisor geteilt werden, wobei eventuelle entstehende Ganzzahlen auch als Ganzzahl ausgegeben werden; Brüche werden voll gekürzt.

Wie kann ich Folgenglieder auf Bruchrechnung anwenden? Was muss ich da anders machen?

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

%  \Mersenne{<k>}{<n>}  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};  
};%%
};%
}     % ===================
}% ===================
 Test Mersenne: \Mersenne{1}{2}         %Test
\bigskip

%  Reduzierte Brüche / Ganzzahlen ausgeben
\newcommand{\rfrac}[2]{%%%%%%%%%%%%%%%%%%%%%%%
\begingroup
\tikzmath{%==================
int \Zaehler, \Nenner, \ggt, \Numerator, \Denominator;
\Zaehler = #1;          
\Nenner = #2;           
function GCD(\x,\y) {return gcd(\x,\y);};
\ggt = GCD(\Zaehler, \Nenner);
\Numerator = \Zaehler/\ggt;
\Denominator = \Nenner/\ggt;
if \Denominator == 1 then {
    print {$\Numerator$};
}
else { 
    print {$\dfrac{\Numerator}{\Denominator}$}; 
};
}%==================
\endgroup
}%%%%%%%%%%%%%%%%%%%%%%%
  Test: \rfrac{6}{2} ~~  \rfrac{18}{11} ~~ \rfrac{4}{12} \\

Test Mersenne-Bruch:    Tut nicht %   $\rfrac{\Mersenne{1}{2}}{3}$

\end{document}

gefragt 03 Jan, 08:35

cis's gravatar image

cis
6.1k11135224
Akzeptiert: 70%

bearbeitet 03 Jan, 08:36


Mit LuaLaTeX.

Öffne in Overleaf
\documentclass{article}
\usepackage{amsmath}
\usepackage{luacode}

\begin{luacode*}
-- https://de.wikipedia.org/wiki/Euklidischer_Algorithmus
local function gcd(a,b)
   return (b ~= 0) and gcd(b,a%b) or a
end

function reduce(a,b)
   local c = gcd(a,b)
   local a = a/c
   local b = b/c
   if (b == 1) then
      tex.sprint(a)
   else
      tex.sprint("\\frac{" .. a .. "}{" .. b .. "}")
   end
end

function mersenne(k,n)
   local M = (2*k-1)*2^n-1
   tex.sprint(M)
end
\end{luacode*}

\newcommand\rfrac[2]{\directlua{reduce(#1,#2)}}
\newcommand\mersenne[2]{\directlua{mersenne(#1,#2)}}

\begin{document}

$\rfrac{\mersenne{1}{1}}{3}$
$\rfrac{\mersenne{1}{2}}{3}$
$\rfrac{\mersenne{1}{3}}{3}$
$\rfrac{\mersenne{1}{4}}{3}$
$\rfrac{\mersenne{1}{5}}{3}$

\end{document}

alt text

Permanenter link

beantwortet 03 Jan, 16:02

Henri's gravatar image

Henri
12.1k42235

bearbeitet 03 Jan, 16:06

Ja, ähhh, danke... Aber Du immer mit Deinem Lua :) Das muss doch auch mit pdflatex gehen?

(03 Jan, 16:14) cis

@cis :-) ich finde es gut, auch oft Lua-Lösungen zu sehen, auch weil man die neue einfache direkte Programmierung anhand konkreter Beispiele gut sieht. Vielleicht will man gar nicht mehr zu Makro-Expansions-"Programmierung" zurück wenn man die Lua-Schnittstelle erstmal gewohnt ist. ;-)

(03 Jan, 16:34) stefan ♦♦
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×549
×4
×4

Frage gestellt: 03 Jan, 08:35

Frage wurde angeschaut: 157 Mal

Zuletzt aktualisiert: 03 Jan, 16:34