Ha kiszámolok valamit, időnként a pgf rendszer időközi eredményei lesznek nagyok. Használhatja a fpu könyvtárat. Olvastam róla a TikZ & PGF kézikönyvben (lásd: 627. oldal), itt és itt , de még mindig ezt a hibát kapom:

Paragraph ended before `\pgfflt@readlowlevelfloat` was complete. 

Mi a baj?

Itt van a kódom:

\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \begin{document} %data values: \def\RTable{{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897}} %prints the result to the console: \pgfkeys{/pgf/fpu} \foreach \i in {0, ..., 80} { \pgfmathparse{abs(\RTable[\i] - 100 - 3.0897 / 8 * \i)}\i, \pgfmathresult\\ } \pgfkeys{/pgf/fpu=false} \end{document} 

Frissítés :

Itt egy makrót használok (a Schrödinger macskája ). Tekintse meg MWE-m:

\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{fpu} \newcommand\pgfmathparseFPU[1]{ \begingroup \pgfkeys{ /pgf/fpu, /pgf/fpu/output format = fixed } \pgfmathparse{#1} \pgfmathsmuggle \pgfmathresult \endgroup} \begin{document} %data values: \def\UABmValues{{14.9, 15.8, 17.7, 18.3, 19, 20, 21.1, 22.2, 24.3, 26.9, 30.1}} %prints the result to the console: \foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathparseFPU{-25500 / (\UABmValues[\i] / 1000 - 255 / 52) - 5200 - 3.0897 / 8 * \k}\i, \pgfmathresult\\ } \end{document} 

, és maradjon egy

Paragraph ended before `\pgfflt@readlowlevelfloat` was complete. 

hiba. Mit tévedek?

Köszönöm előre segítséget és erőfeszítést!

Hozzászólások

  • I ' nem biztos, hogy ez megoldható, mivel a pgfmath folyamatosan oda-vissza konvertál a szöveg, a dimenzum regiszterek és az fpu regiszterek között (ezért táncoló medvének tekintem).
  • Üdvözlet mindenkinek! A szakemberek közül senki nem javasol megoldást?
  • Ne feledje, hogy a \pgfkeys{pgf/fpu=false} csak akkor fogja megtenni, amit az ónon ír, csak ha nemrégiben javították.
  • Úgy érzem, új kérdést kellene feltenned erről, mivel máris szép választ kaptál. \foreach[count = \i from 0] \k in {30, 35, ..., 80} { \pgfmathsetmacro{\myval}{\UABmValues[\i]} \pgfmathparseFPU{-25500/(\myval/1000-255/52)-5200-3.0897/8*\k}\i, \pgfmathresult\\ } működik. Mostantól az fpu nem támogat néhány dolgot, beleértve az egész manipulációt, és az ilyen típusú listakivonást. Tehát ki kell bontania a bejegyzést fpu nélkül.
  • @ Su-47 szerintem Alain Matthes válasza jó. Felhívjuk figyelmét, hogy egyik rendszer sem képes igazán versenyezni egy számítógépes algebrai rendszerrel. A TeX egy radikálisan új verziójához szükség lenne a belső korlátozások valóban feloldására, de az AFAIK nem tervezi, hogy valaha is új TeX-t állítson fel. Kérjük, vegye figyelembe azt is, hogy az IMHO-nak jobb várni az expl3 használatával, amíg az olyan állapotba nem kerül, amikor biztos lehet benne, hogy amit írt, egy év múlva is működni fog. Mivel úgy tűnik, hogy a MatLab-ot használja, mindig előállíthatja az adatokat ezzel az eszközzel, majd pgfplots vagy datavisualization segítségével ábrázolhatja.

Válasz

Úgy hangzik, mint a LaTeX3 FPU feladata:

\documentclass{article} \usepackage{expl3} \ExplSyntaxOn \cs_new_eq:NN \fpeval \fp_eval:n \cs_new_eq:NN \clistitem \clist_item:Nn \cs_new_eq:NN \foreachint \int_step_inline:nnnn \ExplSyntaxOff \begin{document} %data values: \def\RTable{100,100.391,100.781,101.172,101.562,101.953,102.343,102.733,103.123,103.513,103.903,104.292,104.682,105.071,105.46,105.849,106.238,106.627,107.016,107.405,107.794,108.182,108.57,108.959,109.347,109.735,110.123,110.51,110.898,111.286,111.673,112.06,112.447,112.835,113.221,113.608,113.995,114.382,114.768,115.155,115.541,115.927,116.313,116.699,117.085,117.47,117.856,118.241,118.627,119.012,119.397,119.782,120.167,120.552,120.936,121.321,121.705,122.09,122.474,122.858,123.242,123.626,124.009,124.393,124.777,125.16,125.543,125.926,126.309,126.692,127.075,127.458,127.84,128.223,128.605,128.987,129.37,129.752,130.133,130.515,130.897} %prints the result to the console: \foreachint{1}{1}{81}{% #1, \fpeval{abs(\clistitem\RTable{#1} - 100 - 3.0897 / 8 * (#1 - 1))}\\ } \end{document} 

(A (z) expl3 az indexelés 1-től kezdődik, mivel ez igazodik a leggyakoribb használati esetekhez: a szedés. Ezért a listát indexeltem egyből, de az indexre nullára javítottam az egyenletet.)

Megjegyzések

  • Üdvözlet @Joseph Wright! Köszönöm válaszát, amit teszteltem. 1. Természetesen működik, de az index változónak nullával kell kezdődnie ( speciális célom). 2. Válaszának eredményei különböznek. A helyes eredményeknek lefelé mutató parabolának kell lenniük, lásd itt . A válasz eredményei úgy néznek ki, mint egy felfelé nyitott parabola. Lehet, hogy valamit rosszul csinálok. 3. Egyébként nem tudom ' használni válasz a kérdésemre (lásd a fenti linket). Mit szólsz?
  • @ Su-47 nem tudom, ' nem tudom, mit értesz a ' linken fent '
  • A 2. pontban található link valószínűleg ( tex.stackexchange.com/questions/348739/ … ).
  • Üdvözlet @Joseph Wright és @Torbj ø rn T.! Bocs a hosszú távollétért. Köszönöm a hozzászólásaitokat. Torbj ø rn T.-nek igaza van, erre a linkre gondoltam . Most az eredmény megfelelő. De ahogy az utolsó megjegyzésemben mondtam, ' nem használhatom a fenti választ újabb kérdésem megoldására (lásd a fenti linket). Ha jól értem, jelenleg nincs mód tömbök és fpu együttes használatára a TikZ fájlban? Van egy másik megoldás, esetleg egy másik adat tömbként strukturálódik?

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük