När jag beräknar något, blir ibland delresultaten för stora för pgf -systemet. Man kan använda biblioteket fpu. Jag läste om det i TikZ & PGF manualen (se sidan 627), här och här men jag får fortfarande det här felet:

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

Vad är fel?

Här är min kod:

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

Uppdatering :

Jag ”använder ett makro från här (tack till 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} 

och få fortfarande ett

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

fel. Vad gör jag fel?

Tack för din hjälp och ansträngning i förväg!

Kommentarer

  • I ' jag är inte säker på att detta kan fixas, eftersom pgfmath ständigt konverterar fram och tillbaka mellan text, dimenregister och fpu-register (det är därför jag ser det som en dansande björn).
  • Hej alla! Har ingen av de yrkesverksamma ett förslag till en lösning?
  • Observera att \pgfkeys{pgf/fpu=false} inte gör vad det står på burken om det inte nyligen har fixats.
  • Jag tycker att du borde ställa en ny fråga om detta eftersom du redan har ett bra 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\\ } fungerar. Från och med nu stöder fpu inte ett par saker, inklusive manipulation av heltal, och denna typ av listutvinning. Så du måste extrahera posten utan fpu.
  • @ Su-47 Jag tycker att Alain Matthes svar är bra. Observera att inget av systemen verkligen kan konkurrera med ett datoralgebrasystem. En radikalt ny version av TeX skulle kräva att verkligen lyfta de interna begränsningarna, men AFAIK det finns ingen plan att någonsin skapa en ny TeX. Observera också att IMHO är bättre att vänta med expl3 tills det är i ett tillstånd där du kan vara säker på att det du skrev fortfarande kommer att fungera om ett år framöver. Eftersom du verkar använda MatLab kan du alltid producera data med det här verktyget och sedan plotta det med pgfplots eller datavisualisering.

Svar

Låter som ett jobb för 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 är att indexera från 1 eftersom detta överensstämmer med det vanligaste användningsfallet: typsättning. Jag indexerade därför listan från en men korrigerades till index från noll för själva ekvationen.)

Kommentarer

  • Hej @Joseph Wright! Tack för ditt svar. Jag testade det. 1. Självklart fungerar det, men indexvariabeln bör börja med noll (för mitt speciella syfte). 2. Resultatet av ditt svar är annorlunda. De korrekta resultaten ska se ut som en nedåtgående parabel se här . Resultaten av ditt svar ser ut som en öppnad uppåt parabel. Kanske gör jag något fel. 3. Hur som helst kan jag ' inte använda din svara i min fråga (se länken ovan). Vad säger du?
  • @ Su-47 Jag vet inte ' vad du menar om ' länken ovan '
  • Länken i punkt 2 troligen ( tex.stackexchange.com/questions/348739/ … ).
  • Hej @Joseph Wright och @Torbj ø rn T.! Ledsen för den långa frånvaron. Tack för dina kommentarer. Torbj ø rn T. är rätt menade jag den här länken . Nu är resultatet rätt. Men som jag sa i min senaste kommentar kan jag ' inte använda ovanstående svar för att lösa min andra fråga (se länken ovan). Om jag förstår rätt för närvarande finns det inget sätt att använda matriser och fpu tillsammans i TikZ? Finns det en annan lösning, kanske en annan datastruktur som matriser?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *