Când calculez ceva, uneori devin rezultatele intermediare la mari pentru sistemul pgf. Se poate utiliza biblioteca fpu. Am citit despre asta în TikZ & PGF manual (vezi pagina 627), aici și aici , dar totuși primesc această eroare:

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

Ce nu este?

Iată codul meu:

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

Actualizare :

Eu „folosesc o macrocomandă din aici (mulțumită pisica lui Schrödinger ). Vedeți MWE-ul meu:

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

și primiți încă o eroare

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

. Ce greșesc?

Vă mulțumim pentru ajutor și efort în avans!

Comentarii

  • I ‘ Nu sunt sigur că acest lucru poate fi remediat, deoarece pgfmath convertește constant înainte și înapoi între text, registre dimen și registre fpu (motiv pentru care îl consider ca un urs dansant).
  • Bună tuturor! Niciunul dintre profesioniști nu a propus o soluție?
  • Rețineți că \pgfkeys{pgf/fpu=false} nu va face ceea ce spune pe cutie decât dacă a fost reparată recent.
  • Cred că ar trebui să puneți o nouă întrebare în acest sens, deoarece ați primit deja un răspuns frumos. \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\\ } funcționează. De acum, fpu nu acceptă câteva lucruri, inclusiv manipularea numărului întreg și acest tip de extragere a listelor. Deci, trebuie să extrageți intrarea fără fpu.
  • @ Su-47 Cred că răspunsul lui Alain Matthes este bun. Vă rugăm să rețineți că niciunul dintre sisteme nu poate concura cu adevărat cu un sistem de algebră computerizată. O versiune radical nouă a TeX ar fi necesară pentru a într-adevăr ridica limitele interne, dar AFAIK nu există niciun plan pentru a crea vreodată un nou TeX. De asemenea, vă rugăm să rețineți că IMHO este mai bine să așteptați folosind expl3 până când se află într-o stare în care puteți fi siguri că ceea ce ați scris va funcționa în continuare într-un an de acum. Întrucât pareți să utilizați MatLab, puteți produce oricând datele cu acest instrument și apoi să le trasați cu pgfplots sau datavisualization.

Răspuns

Sună ca un job pentru 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} 

(Convenția din expl3 este să indexați de la 1 deoarece acest lucru se aliniază la cel mai frecvent caz de utilizare: tipărirea. De aceea, am indexat lista dintr-o singură, dar am corectat la indexarea de la zero pentru ecuația însăși.)

Comentarii

  • Bună ziua @Joseph Wright! Vă mulțumim pentru răspunsul dvs. l-am testat. 1. Bineînțeles că funcționează, dar variabila index ar trebui să înceapă cu zero (pentru scopul meu special). 2. Rezultatele răspunsului dvs. sunt diferite. Rezultatele corecte ar trebui să arate ca o parabolă descendentă, consultați aici . Rezultatele răspunsului dvs. arată ca o parabolă deschisă în sus. Poate că fac ceva greșit. 3. Oricum nu pot ‘ să vă folosesc răspunde la întrebarea mea (vezi linkul de mai sus). Ce spui?
  • @ Su-47 Nu ‘ nu știu ce vrei să spui despre ‘ link deasupra ‘
  • Link-ul din punctul 2 probabil ( tex.stackexchange.com/questions/348739/ … ).
  • Bună ziua @Joseph Wright și @Torbj ø rn T.! Îmi pare rău pentru absența îndelungată. Mulțumesc pentru comentarii. Torbj ø rn T. are dreptate am vrut să spun acest link . Acum rezultatul este corect. Dar așa cum am spus în ultimul meu comentariu, nu pot ‘ să folosesc răspunsul de mai sus pentru a rezolva o altă întrebare (a se vedea linkul de mai sus). Dacă înțeleg corect în prezent, nu există nicio modalitate de a folosi matricele și fpu împreună în TikZ? Există o altă soluție, poate o altă structură de date ca tablouri?

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *