Når jeg beregner noe, blir noen ganger delresultatene for store for pgf -systemet. Man kan bruke fpu biblioteket. Jeg leste om det i TikZ & PGF manualen (se side 627), her og her men jeg får fortsatt denne feilen:

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

Hva er galt?

Her er koden min:

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

Oppdatering :

Jeg «bruker en makro fra her (takket være Schrödinger «katt ). 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å fortsatt en

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

feil. Hva har jeg feil?

Takk for hjelpen og innsatsen på forhånd!

Kommentarer

  • I ' Jeg er ikke sikker på at dette kan løses, da pgfmath stadig konverterer frem og tilbake mellom tekst, dimenregister og fpu-registre (det er derfor jeg ser på det som en dansende bjørn).
  • Hei alle sammen! Har ingen av fagpersonene et forslag til løsning?
  • Merk at \pgfkeys{pgf/fpu=false} ikke vil gjøre det det står på blikket med mindre det nylig er løst.
  • Jeg føler at du bør stille et nytt spørsmål om dette siden du allerede har et fint 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. Per nå støtter fpu ikke et par ting, inkludert heltallmanipulering, og denne typen listeutvinning. Så du må trekke ut oppføringen uten fpu.
  • @ Su-47 Jeg synes Alain Matthes svar er bra. Vær oppmerksom på at ingen av systemene virkelig kan konkurrere med et datamaskinalgebrasystem. En radikalt ny versjon av TeX ville være å virkelig løfte de interne begrensningene, men AFAIK er det ingen plan om å noensinne sette opp en ny TeX. Vær også oppmerksom på at IMHO er bedre å vente med expl3 til den er i en tilstand der du kan være sikker på at det du skrev fortsatt vil fungere om et år fra nå. Siden du ser ut til å bruke MatLab, kan du alltid produsere dataene med dette verktøyet og deretter plotte dem med pgfplots eller datavisualisering.

Svar

Høres ut som en jobb for 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} 

(Konvensjonen i expl3 er å indeksere fra 1 da dette stemmer overens med det vanligste bruksområdet: typesetting. Jeg har derfor indeksert listen fra en, men korrigert til indeks fra null for selve ligningen.)

Kommentarer

  • Hei @Joseph Wright! Takk for svaret ditt. Jeg testet det. 1. Selvfølgelig fungerer det, men indeksvariabelen skal begynne med null (for mitt spesielle formål). 2. Resultatene av svaret ditt er forskjellige. De riktige resultatene skal se ut som en nedadgående parabel se her . Resultatene av svaret ditt ser ut som en åpnet oppover parabel. Kanskje jeg gjør noe galt. 3. Uansett kan jeg ' ikke bruke svaret på spørsmålet mitt (se lenken over). Hva sier du?
  • @ Su-47 Jeg vet ikke ' hva du mener om ' lenken over '
  • Koblingen i punkt 2 sannsynligvis ( tex.stackexchange.com/questions/348739/ … ).
  • Hallo @Joseph Wright og @Torbj ø rn T.! Beklager det lange fraværet. Takk for dine kommentarer. Torbj ø rn T. har rett jeg mente denne lenken . Nå er resultatet riktig. Men som jeg sa i min siste kommentar, kan jeg ' ikke bruke svaret ovenfor for å løse et annet spørsmål (se lenken ovenfor). Hvis jeg forstår riktig for øyeblikket, er det ingen måte å bruke matriser og fpu sammen i TikZ? Er det en annen løsning, kanskje en annen datastruktur som arrays?

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *