Ich möchte eine Fallunterscheidung machen, bei der ich das Ergebnis der sqr-Rechnung auf Ganzzahligkeit untersuchen kann. So soll bei

Open in Online-Editor
\documentclass[11pt, a4paper,twoside]{scrartcl}  
\usepackage{pgf}  
\begin{document}  
\pgfmathparse{sqrt(10)} \pgfmathprintnumberto[precision=1]{\pgfmathresult}{\value}\value  
\end{document}

mir nicht 3,2, sondern wieder \sqrt{10} ausgegeben werden. Wenn es eine ganzzahlige Lösung gibt, soll es ausgerechnet werden.

Open in Online-Editor
\documentclass[11pt, a4paper,twoside]{scrartcl}  
\usepackage{pgf}  
\begin{document}  
\pgfmathparse{sqrt(100)} \pgfmathprintnumberto[precision=1]{\pgfmathresult}{\value}\value  
\end{document}

Kann man das mit einer \ifthenelse untersuchen?

gefragt 07 Jul '15, 18:45

typ42's gravatar image

typ42
19313
Akzeptiert: 100%

bearbeitet 08 Jul '15, 02:02

saputello's gravatar image

saputello
18.4k22352


Mir ist jetzt nicht wirklich klar, was Du machen möchtest, aber vielleicht hilft Dir

Open in Online-Editor
\documentclass{scrartcl}  
\usepackage{pgf}
\newcommand\Wurzel[1]{%
  \pgfmathparse{%
    int(sqrt(#1))==sqrt(#1)?int(sqrt(#1)):"\noexpand\ensuremath{\noexpand\sqrt{#1}}"%
  }\pgfmathresult}

\begin{document}
\Wurzel{100} und \Wurzel{10}
\end{document}

alt text

Bitte beachte, dass die Rechengenauigkeit von pgf begrenzt ist.

Permanenter link

beantwortet 07 Jul '15, 19:52

esdd's gravatar image

esdd
14.2k53251

alternativ eine Lualösung, die auch bei großen Werten funktioniert:

Open in Online-Editor
\documentclass{scrartcl}  
\usepackage{luacode}
\begin{luacode}
function Wurzel(x)
  local y=math.sqrt(x)
  if y == math.ceil(y) 
    then tex.print(y) else tex.print("\\sqrt{"..x.."}") 
  end
end
\end{luacode}
\newcommand\Wurzel[1]{\ensuremath{\directlua{ Wurzel(#1) }}}

\begin{document}
\Wurzel{100} und \Wurzel{10};
\Wurzel{1000000} und \Wurzel{100000}
\end{document}

alt text

Permanenter link

beantwortet 08 Jul '15, 02:23

Herbert's gravatar image

Herbert
5.0k34

bearbeitet 08 Jul '15, 02:28

was benutzt man denn am besten, wenn man unter LaTex ein paar Berechnungen durchführen will? Nichts kompliziertes, versteht sich... Ist lua da besser als pgf? Oder lieber calc? oder kann man auch gnuplot zum rechnen benutzen und die Ergebnisse automatisch einbinden lassen?

(08 Jul '15, 08:22) typ42
1

@typ42: "Am besten" hängt immer von den individuellen Anforderungen ab. Sicher dürfte sein, dass Lua genauer rechnet als TeX. Allerdings gibt es auch für TeX Pakete für Berechnungen mit langen Zahlen. pgfplots bietet die Möglichkeit, Graphen zu zeichnen und die Berechnungen dabei von gnuplot erledigen zu lassen. Den einen Weg, den man immer gehen sollte, sehe ich nicht.

(08 Jul '15, 09:20) saputello
1

Berechnungen gehen mit \directlua sehr einfach vonstatten. Im Gegensatz zu dem Paketen pgfmath oder fp. Unabhängig mal von der Genauigkeit, die bei TeX sehr zu wüschen übrif lässt.`

(08 Jul '15, 09:31) Herbert

Ich seh das ein wenig wie @saputello. Wenn ich in einer TikZ Zeichnung eine Koordinate berechnen will, dann reicht mir pgfmath in aller Regel wirklich aus. In Deinem Fall ist der Vorschlag mit \directlua aber eindeutig besser, vorausgesetzt Du kannst mit lualatex kompilieren. Du brauchst nur mal beide Varianten mit \Wurzel{100.0001} testen ;-) Wenn Du Dich für die Antwort von @Herbert entscheiden möchtest, kannst Du bei meiner auch einfach den Haken wieder entfernen und ihn bei dieser Antwort hier setzen.

(08 Jul '15, 16:33) esdd

Eine weitere Möglichkeit mit l3fp, dem floating point-Modul von expl3:

Open in Online-Editor
\documentclass{article}
\usepackage{expl3,xparse}

\ExplSyntaxOn
\cs_new_protected:Npn \typ_wurzel:n #1
  {
    \fp_compare:nNnTF
      { round(sqrt(#1)) } = { sqrt(#1) }
      { \fp_eval:n { sqrt(#1) } }
      { \sqrt{#1} }
  }

\NewDocumentCommand \Wurzel {m} { \ensuremath{\typ_wurzel:n {#1}} }
\ExplSyntaxOff

\begin{document}

\Wurzel{1} \par
\Wurzel{10} \par
\Wurzel{100} \par
\Wurzel{1000} \par
\Wurzel{10000} \par
\Wurzel{100000} \par
\Wurzel{1000000} \par
\Wurzel{1000000.0000001} \par

\end{document}

alt text

Permanenter link

beantwortet 09 Jul '15, 04:05

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 09 Jul '15, 04:17

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

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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:

×492
×17
×10
×3
×1

Frage gestellt: 07 Jul '15, 18:45

Frage wurde angeschaut: 1,973 Mal

Zuletzt aktualisiert: 09 Jul '15, 04:17