<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
No já to beru tak, že polynom je paroximace s nějakou přesností a
referenční je ta tabulka, tedy chci porovnávat s ní. A chci s ní
samozřejmě porovnat i ten polynom, čistě ze zvědavosti, k počítání
samozřejmě použiju long double alias extended, ten má 64 bitů jenom
mantisu. Když se tady potkávaj e-1 až e-25, tak se mi i těch 19 míst
zdá málo:-)<br>
<br>
Je paradoxní, že se moc nepoužívá, přestože je to nativní formát FPU
v PC, tedy všechny floaty a doubly se na nej konvertěj a pak zas
zpátky. Třeba C# ho vůbec nemá. Nevím jak numpy, jestli má i
float80?<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 26.12.2024 v 15:51 Daniel Valuch
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:6df2ae02-78e8-44f1-8bfb-f1821fe11e44@k-net.fr">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p> </p>
<blockquote type="cite">Prostě klasická zmatená dizkuze:-)<br>
</blockquote>
Lebo nechodis do krcmy. Tam by sme to mali vyriesene za 5 minut
:-)<br>
<p>Preco tabulky? Mas tam polynom, ktoreho hodnotu si vyratas v
bode, ktory ta zaujima. Ked je to na kontrolne/referencne ucely,
tak si zadefinujes, ze to chces pocitat s vysokym rozlisenim aby
hodnoty netrpeli stratou presnosti, pamat a rychlost v tomto
pripade nie je dolezita. V kratkom floate to samozrejme nebude
fungovat, ako uz bolo spomenute.<br>
</p>
<p>t = numpy.arange(0,1301,1,dtype=numpy.float64)<br>
<br>
a0 = numpy.float64(-0.176004136860e-1);<br>
a1 = numpy.float64(0.389212049750e-1);<br>
a2 = numpy.float64(0.185587700320e-4);<br>
a3 = numpy.float64(-0.994575928740e-7);<br>
a4 = numpy.float64(0.318409457190e-9);<br>
a5 = numpy.float64(-0.560728448890e-12);<br>
a6 = numpy.float64(0.560750590590e-15);<br>
a7 = numpy.float64(-0.320207200030e-18);<br>
a8 = numpy.float64(0.971511471520e-22);<br>
a9 = numpy.float64(-0.121047212750e-25);<br>
<br>
c0 = numpy.float64( 0.118597600000E+00)<br>
c1 = numpy.float64(-0.118343200000E-03)<br>
c2 = numpy.float64( 0.126968600000E+03)<br>
</p>
<p># cleny polynomu <br>
Ep0 = a0<br>
Ep1 = a1* numpy.power(t,1)<br>
Ep2 = a2* numpy.power(t,2)<br>
Ep3 = a3* numpy.power(t,3)<br>
Ep4 = a4* numpy.power(t,4)<br>
Ep5 = a5* numpy.power(t,5)<br>
Ep6 = a6* numpy.power(t,6)<br>
Ep7 = a7* numpy.power(t,7)<br>
Ep8 = a8* numpy.power(t,8)<br>
Ep9 = a9* numpy.power(t,9)<br>
<br>
# polynom poskladany z clenov<br>
Ep = Ep0+Ep1+Ep2+Ep3+Ep4+Ep5+Ep6+Ep7+Ep8+Ep9<br>
<br>
# polynom priamo vypocitany<br>
Epp = a0*t**0 + a1*t**1 + a2*t**2 + a3*t**3 + a4*t**4 + a5*t**5
+ a6*t**6 + a7*t**7 + a8*t**8 + a9*t**9 <br>
<br>
# exponencialny clen<br>
Ee = c0 * numpy.exp(c1*(t-c2)*(t-c2))</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 26/12/2024 15:36, Pavel Hudeček
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:e1e9e49b-90f5-42ff-8adb-2d237470f659@seznam.cz">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
Takže jsem to měl správně, v bodě 3 je hodnota vůči 0.<br>
<br>
A tohle taky. Těch několik sad koeficientů je vyjmenováno asi na
100 místech po netu a tak na 10 jsou ve formě rovnou do
programu, je to jen pár desítek čísel. Mě ale zajímá primární
tabukla hodnot, těch je asi 1500, to je ta větší část uvedeného
txt. A s nima chci porovnat výsledky různých způsobů výpočtu.<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 26.12.2024 v 15:08 Daniel
Valuch napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:1a526f11-2963-44de-a21f-1876f0461920@k-net.fr">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<p>Asi si nerozumieme. Nerozumiem kde je problem ani s
meranim, ani s koeficientami polynomov. <br>
</p>
<p>Meranie: Ak mas k dispozicii/chces pouzit 0 °C, tak je
jeden koniec termoclanku na tejto teplote. Odmeras napatie
na druhej strane a rovno prepocitas na teplotu. Ak
nepouzivas referenciu 0 °C, ale inu (napriklad izbovu
teplotu svoriek multimetra) tak odmeras teplotu svoriek,
prevedies na ekvivalentne napatie (voci 0 °C), odmeras
napatie z termoclanku, napatie svoriek pouzijes ako offset.
Vysledne napatie prevedies na teplotu. <br>
</p>
<p>Koeficienty: V dokumentoch, ktore som posielal mas
koeficienty polynomov. Netreba ziaden script ani odstranovat
hlavicky. Aj na tej linke co si prave poslal ich mas uplne
na konci. Priame aj inverzne. Pouzivas obidva. Priame na
vypocet offsetu z teploty svoriek a inverzne na vypocet
teploty zo ziskaneho napatia.<br>
</p>
<p>Uryvok z dokumentu <a class="moz-txt-link-freetext"
href="https://its90.nist.gov/downloadFiles/type_k.tab.txt"
moz-do-not-send="true">https://its90.nist.gov/downloadFiles/type_k.tab.txt</a>
</p>
<pre
style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; white-space: pre-wrap;">************************************
* This section contains coefficients for type K thermocouples for
* the two subranges of temperature listed below. The coefficients
* are in units of °C and mV and are listed in the order of constant
* term up to the highest order. The equation below 0 °C is of the form
* E = sum(i=0 to n) c_i t^i.
*
* The equation above 0 °C is of the form
* E = sum(i=0 to n) c_i t^i + a0 exp(a1 (t - a2)^2).
*
* Temperature Range (°C)
* -270.000 to 0.000
* 0.000 to 1372.000
************************************
name: reference function on ITS-90
type: K
temperature units: °C
emf units: mV
range: -270.000, 0.000, 10
0.000000000000E+00
0.394501280250E-01
0.236223735980E-04
-0.328589067840E-06
-0.499048287770E-08
-0.675090591730E-10
-0.574103274280E-12
-0.310888728940E-14
-0.104516093650E-16
-0.198892668780E-19
-0.163226974860E-22
range: 0.000, 1372.000, 9
-0.176004136860E-01
0.389212049750E-01
0.185587700320E-04
-0.994575928740E-07
0.318409457190E-09
-0.560728448890E-12
0.560750590590E-15
-0.320207200030E-18
0.971511471520E-22
-0.121047212750E-25
exponential:
a0 = 0.118597600000E+00
a1 = -0.118343200000E-03
a2 = 0.126968600000E+03
************************************
* This section contains coefficients of approximate inverse
* functions for type K thermocouples for the subranges of
* temperature and voltage listed below. The range of errors of
* the approximate inverse function for each subrange is also given.
* The coefficients are in units of °C and mV and are listed in
* the order of constant term up to the highest order.
* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...
* + d_n*E^n,
* where E is in mV and t_90 is in °C.
*
* Temperature Voltage Error
* range range range
* (°C) (mV) (° C)
* -200. to 0. -5.891 to 0.000 -0.02 to 0.04
* 0. to 500. 0.000 to 20.644 -0.05 to 0.04
* 500. to 1372. 20.644 to 54.886 -0.05 to 0.06
********************************************************
Inverse coefficients for type K:
Temperature -200. 0. 500.
Range: 0. 500. 1372.
Voltage -5.891 0.000 20.644
Range: 0.000 20.644 54.886
0.0000000E+00 0.000000E+00 -1.318058E+02
2.5173462E+01 2.508355E+01 4.830222E+01
-1.1662878E+00 7.860106E-02 -1.646031E+00
-1.0833638E+00 -2.503131E-01 5.464731E-02
-8.9773540E-01 8.315270E-02 -9.650715E-04
-3.7342377E-01 -1.228034E-02 8.802193E-06
-8.6632643E-02 9.804036E-04 -3.110810E-08
-1.0450598E-02 -4.413030E-05 0.000000E+00
-5.1920577E-04 1.057734E-06 0.000000E+00
0.0000000E+00 -1.052755E-08 0.000000E+00
Error -0.02 -0.05 -0.05
Range: 0.04 0.04 0.06
</pre>
<p><br>
</p>
<div class="moz-cite-prefix">On 26/12/2024 14:49, Pavel
Hudeček wrote:<br>
</div>
<blockquote type="cite"
cite="mid:0eaaf26e-5949-4d15-8a33-ced0b65ed9ba@seznam.cz">Pokud
v kroku 3 věta nemá pokračovat .. proti 0°C, tak přeci může
bej výsledek jakejkoli. <br>
Naopak, pokud jednoduše vezmu změřenou T2, najdu jí v
tabulce na NIST, tak dostanu U který by TČ umístěný na tom
místě dával vůči 0, nebo ne? <br>
<br>
Žádný z linků související se Zenitem nevede na stránku, kde
by byla tabulka hodnot v nějakém formátu, aby šla copy-paste
hodit do programu, nebo binárně přilinkovat. <br>
Nejblíž je asi tohle: <br>
<a class="moz-txt-link-freetext"
href="https://its90.nist.gov/downloadFiles/type_k.tab.txt"
moz-do-not-send="true">https://its90.nist.gov/downloadFiles/type_k.tab.txt</a>
<br>
k tomu se dá proklikat z linku v programu. <br>
<br>
Ale pořád to znamená prohnat to nějakým py skriptem, co
vyhází všechny záhlaví + teploty a doplní čárky. <br>
A potom teprve můžu třeba zkusit, co se stane když nechám
totéž napočítat originálními polynomy kolem 9. řádu, ale za
použití floatu v MCU. <br>
<br>
A tak nějak předpokládám, že když jste sem dávali ty grafy
odchylek, tak už takouvou tabulku odněkud máte:-) <br>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>