Når jeg beregner noget, bliver nogle gange interimsresultaterne for store for pgf -systemet. Man kan bruge fpu biblioteket. Jeg læste om det i TikZ & PGF manual (se side 627), her og her men jeg får stadig denne fejl:

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

Hvad er der galt?

Her er min kode:

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

Opdatering :

Jeg “bruger en makro fra her (takket være Schrödingers kat ). Se min 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} 

og få stadig en

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

fejl. Hvad har jeg forkert?

Tak for din hjælp og indsats på forhånd!

Kommentarer

  • I ' jeg er ikke sikker på, at dette kan løses, da pgfmath konstant konverterer frem og tilbage mellem tekst, dimenregistre og fpu-registre (det er derfor, jeg betragter det som en dansende bjørn).
  • Hej alle sammen! Har ingen af de professionelle et forslag til en løsning?
  • Bemærk, at \pgfkeys{pgf/fpu=false} ikke vil gøre det, der står på dåsen, medmindre den for nylig er blevet rettet.
  • Jeg synes, du skal stille et nyt spørgsmål om dette, da du allerede har et godt svar. \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\\ } fungerer. Fra nu af understøtter fpu ikke et par ting, herunder heltalsmanipulation og denne slags listeekstraktion. Så du er nødt til at udtrække posten uden fpu.
  • @ Su-47 Jeg synes Alain Matthes svar er godt. Bemærk, at ingen af systemerne virkelig kan konkurrere med et computeralgebrasystem. En radikalt ny version af TeX ville kræve at virkelig løfte de interne begrænsninger, men AFAIK der er ingen plan om nogensinde at oprette en ny TeX. Bemærk også, at IMHO er bedre at vente med at bruge expl3, indtil det er i en tilstand, hvor du kan være sikker på, at det, du skrev, stadig fungerer om et år fra nu. Da du ser ud til at bruge MatLab, kan du altid producere dataene med dette værktøj og derefter plotte dem med pgfplots eller datavisualisering.

Svar

Lyder som et job til 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} 

(Konventionen i expl3 er at indeksere fra 1, da dette stemmer overens med den mest almindelige brugssag: sætning. Jeg har derfor indekseret listen fra en, men korrigeret til indeks fra nul for selve ligningen.)

Kommentarer

  • Hej @Joseph Wright! Tak for dit svar, jeg testede det. 1. Selvfølgelig fungerer det, men indeksvariablen skal begynde med nul (for mit specielle formål). 2. Resultaterne af dit svar er forskellige. De korrekte resultater skal se ud som en nedadgående parabel se her . Resultaterne af dit svar ser ud som en åbnet opadgående parabel. Måske gør jeg noget forkert. 3. Jeg kan alligevel ' ikke bruge din svar på mit spørgsmål (se linket ovenfor). Hvad siger du?
  • @ Su-47 Jeg ved ikke ' hvad du mener om ' linket over '
  • Linket i punkt 2 sandsynligvis ( tex.stackexchange.com/questions/348739/ … ).
  • Hej @Joseph Wright og @Torbj ø rn T.! Undskyld for det lange fravær. Tak for dine kommentarer. Torbj ø rn T. har ret, jeg mente dette link . Nu er resultatet rigtigt. Men som jeg sagde i min sidste kommentar, kan jeg ' ikke bruge ovenstående svar til at løse mit andet spørgsmål (se linket ovenfor). Hvis jeg forstår korrekt i øjeblikket, er der ingen måde at bruge arrays og fpu sammen i TikZ? Er der en anden løsning, måske en anden datastruktur som arrays?

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *