Als ik iets bereken, worden de tussenresultaten soms te groot voor het pgf -systeem. Men kan de fpu bibliotheek gebruiken. Ik heb erover gelezen in de TikZ & PGF handleiding (zie pagina 627), hier en hier maar ik krijg nog steeds deze foutmelding:

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

Wat is er mis?

Hier is mijn code:

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

Update :

Ik “gebruik een macro van hier (met dank aan Kat van Schrödinger ). Zie mijn 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} 

en krijg nog steeds een

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

fout. Wat heb ik fout?

Bij voorbaat dank voor je hulp en moeite!

Opmerkingen

  • I ' m niet zeker of dit kan worden opgelost, aangezien pgfmath constant heen en weer converteert tussen tekst, dimen registers en fpu registers (daarom beschouw ik het als een dansende beer).
  • Hallo allemaal! Heeft niemand van de professionals een voorstel voor een oplossing?
  • Merk op dat \pgfkeys{pgf/fpu=false} niet zal doen wat er op de verpakking staat, tenzij het onlangs is opgelost.
  • Ik vind dat je hier een nieuwe vraag over moet stellen, aangezien je al een mooi antwoord hebt gekregen. \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\\ } werkt. Vanaf nu ondersteunt fpu een aantal dingen niet, waaronder manipulatie van gehele getallen en dit soort lijstextractie. Dus je moet de invoer extraheren zonder fpu.
  • @ Su-47 Ik denk dat het antwoord van Alain Matthes goed is. Houd er rekening mee dat geen van de systemen echt kan concurreren met een computeralgebrasysteem. Een radicaal nieuwe versie van TeX zou nodig zijn om echt de interne beperkingen op te heffen, maar AFAIK is er geen plan om ooit een nieuwe TeX op te zetten. Houd er ook rekening mee dat het bij IMHO beter is om te wachten met expl3 totdat het in een staat verkeert waarin u er zeker van kunt zijn dat wat u hebt geschreven over een jaar nog zal werken. Aangezien u MatLab lijkt te gebruiken, kunt u de gegevens altijd met deze tool produceren en deze vervolgens plotten met pgfplots of datavisualisatie.

Antwoord

Klinkt als een klus voor de LaTeX3 FPU:

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

(De conventie in expl3 is om te indexeren vanaf 1, aangezien dit overeenkomt met het meest voorkomende gebruik: typografie. Ik heb daarom de lijst geïndexeerd van één maar gecorrigeerd naar index vanaf nul voor de vergelijking zelf.)

Opmerkingen

  • Hallo @Joseph Wright! Bedankt voor je antwoord Ik heb het getest. 1. Natuurlijk werkt het, maar de indexvariabele moet beginnen met nul (voor mijn speciale doel). 2. De resultaten van uw antwoord zijn anders. De juiste resultaten moeten eruitzien als een neerwaartse parabool, zie hier . De resultaten van uw antwoord zien eruit als een geopende parabool naar boven. Misschien heb ik iets verkeerds gedaan. 3. Hoe dan ook, ik kan ' uw antwoord in mijn vraag (zie de link hierboven). Wat zeg je?
  • @ Su-47 Ik weet niet ' wat je bedoelt met ' de link boven '
  • De link in punt 2 waarschijnlijk ( tex.stackexchange.com/questions/348739/ … ).
  • Hallo @Joseph Wright en @Torbj ø rn T.! Sorry voor de lange afwezigheid. Bedankt voor je reacties. Torbj ø rn T. heeft gelijk. Ik bedoelde deze link . Nu is het resultaat goed. Maar zoals ik in mijn laatste opmerking al zei, kan ik ' het bovenstaande antwoord niet gebruiken om mijn andere vraag op te lossen (zie de link hierboven). Als ik het momenteel goed begrijp, is er geen manier om arrays en fpu samen te gebruiken in TikZ? Is er een andere oplossing, misschien een andere datastructuur als arrays?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *