Kun lasken jotain, minusta tulee joskus välituloksia isoksi pgf -järjestelmälle. Voidaan käyttää kirjastoa fpu. Luin siitä TikZ & PGF käsikirjasta (katso sivu 627), täällä ja täällä , mutta saan silti tämän virheen:

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

Mikä vikaa?

Tässä on koodini:

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

Päivitä :

Käytän makroa osoitteesta täällä (kiitos Schrödingerin kissa ). Katso minun MWE:

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

ja saat silti

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

-virheen. Mitä olen väärässä?

Kiitos avustasi ja vaivastasi etukäteen!

Kommentit

  • I ' en ole varma, että tämä voidaan korjata, koska pgfmath muuntaa jatkuvasti edestakaisin tekstin, dimen-rekisterien ja fpu-rekistereiden välillä (minkä vuoksi pidän sitä tanssivana karhuna).
  • Hei kaikki! Eikö kukaan ammattilaisista ehdota ratkaisua?
  • Huomaa, että \pgfkeys{pgf/fpu=false} ei tee sitä, mitä tinalla sanotaan, ellei sitä ole äskettäin korjattu.
  • Mielestäni sinun pitäisi kysyä uusi kysymys tästä, koska sinulla on jo mukava vastaus. \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\\ } toimii. Tästä lähtien fpu ei tue muutamaa asiaa, mukaan lukien kokonaislukujen käsittely, ja tällaista luettelon purkamista. Joten sinun on purettava merkintä ilman fpu.
  • @ Su-47 Mielestäni Alain Matthesin vastaus on hyvä. Huomaa, että mikään järjestelmistä ei voi kilpailla tietokonealgebrajärjestelmän kanssa. Radikaalisti uusi TeX-versio vaatisi todella sisäisten rajoitusten poistamista, mutta AFAIK ei aio koskaan perustaa uutta TeX: ää. Huomaa myös, että IMHO: ta on parempi odottaa expl3: lla, kunnes se on tilassa, jossa voit olla varma, että kirjoittamasi toimii edelleen vuoden kuluttua. Koska näytät käyttävän MatLabia, voit aina tuottaa tiedot tällä työkalulla ja piirtää sen sitten pgfplotsilla tai datavisualisoinnilla.

Vastaa

Kuulostaa LaTeX3 FPU: n työstä:

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

(expl3 on indeksoitava 1: stä, koska tämä kohdistuu yleisimpään käyttötapaukseen: kirjasintyyppi. Siksi olen indeksoinut luettelon yhdestä, mutta korjattu indeksiksi nollasta yhtälölle itsellesi.)

Kommentit

  • Hei @Joseph Wright! Kiitos vastauksestani, jonka testasin. 1. Tietysti se toimii, mutta hakemistomuuttujan pitäisi alkaa nollalla ( minun erityistarkoituksesi). 2. Vastauksesi tulokset ovat erilaiset. Oikean tuloksen tulisi näyttää alaspäin suuntautuvalta parabolilta, katso täältä . Vastauksesi tulokset näyttävät avautuvalta ylöspäin olevalta parabolilta. Ehkä teen jotain väärin. 3. Joka tapauksessa en voi ' käyttää vastaus kysymykseeni (katso yllä oleva linkki). Mitä sanot?
  • @ Su-47 En ' tiedä mitä tarkoitat ' linkistä yllä '
  • Linkki kohdassa 2 todennäköisesti ( tex.stackexchange.com/questions/348739/ … ).
  • Hei @Joseph Wright ja @Torbj ø rn T.! Anteeksi pitkästä poissaolosta. Kiitos kommenteistasi. Torbj ø rn T. on oikeassa tarkoitin tätä linkkiä . Nyt tulos on oikea. Mutta kuten sanoin viimeisessä kommentissani, en voi ' käyttää yllä olevaa vastausta toisen kysymykseni ratkaisemiseen (katso yllä oleva linkki). Jos ymmärrän oikein tällä hetkellä, ei ole mitään tapaa käyttää taulukoita ja fpu yhdessä TikZ? Onko olemassa muuta ratkaisua, ehkä toinen data rakentuu matriiseiksi?

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *