Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

  • zwik
  • Registratie: maart 2001
  • Laatst online: 18-04 12:14
Beste allen,

Voor een hobby projectje (weerstationetje bouwen) zou ik graag het dauwpunt willen berekenen. Nu ben ik erachter dat mijn wiskunde blijkbaar niet al te best is ;) . Een eenvoudige zoek gaf me de formule op Wikipedia: Dauwpunt en zelfs een nauwkeurig formule op Wikipedia: Dew point. Ik kom er echter niet uit hoe ik die formules exact moet lezen en hoe ik die moet invullen, het liefst met JavaScript.

Omdat ik praktisch ben heb ik natuurlijk naar een voorbeeld gezocht. Toen kwam ik de volgende code tegen op deze site. De code ziet er zo uit:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var ai = 7.45;
var bi = 235;
t = $('.t-field').val(); // luchtTemperatuur in *C
f = $('.f-field').val(); // relatieve luchtvochtigheid in %
t = t * 1;
f = f * 1;
z1 = (ai * t) / (bi + t);
es = 6.1 * Math.exp(z1 * 2.3025851);
e = es * f / 100;
z2 = e / 6.1;
z3 = 0.434292289 * Math.log(z2);
dru = e * 100; // dampdruk in mbar
dru = Math.floor(dru) / 100; // dampdruk in mbar
tau = (235 * z3) / (7.45 - z3) * 100; // dauwpunt in *C
tau = Math.floor(tau) / 100; // dauwpunt in *C
feu = (216.7 * e) / (273.15 + t) * 100; // absolute vochtigheid in g/m3
feu = Math.round(feu) / 100; // absolute vochtigheid in g/m3
$('.nau-field').val(tau);
$('.druck-field').val(dru);
$('.feuchte-field').val(feu);

In bovenstaand stukje code word ook dampdruk en absolute vochtigheid berekend, daar ben ik in eerste instantie niet in geïnteresseerd, maar je lijkt ze nodig te hebben ook om het dauwpunt te vinden. Delen van de code kan ik herleiden uit de formule, bijvoorbeeld dit:
JavaScript:
1
z1 = (ai * t) / (bi + t);

Andere stukken weer niet zoals dit:
JavaScript:
1
es = 6.1 * Math.exp(z1 * 2.3025851);

Op de engelstalige versie van wikipedia worden wel een aantal constanten genoemd maar ik kan niet alles herleiden.

Wat betekenen deze constanten eigenlijk?

Later kwam ik deze site tegen. Wanneer ik dan mijn getallen invul en vervolgens zelf de formule probeer in te vullen en berekenen kom ik op dezelfde getallen uit. Ik kan dus het dauwpunt berekenen.

Weer een andere site kom ik een complexer invulvoorbeeld tegen. Hoe verhoud deze formule zich met de formule in de engelse variant van het wikipedia artikel? Wanneer ik dat probeer na te spelen, lukt me gelukkig ook in JavaScript.

De grote vraag, hoe precies zijn de verschillende benaderingen? Ik zou op zich redelijk precies willen zijn, zeg hooguit een tiende graad. Het probleem met de formule op wikipedia is dat ik niet weet hoe ik het moet lezen. De voorbeelden op de bovengenoemde sites zijn makkelijker voor me :) .

  • Reptile209
  • Registratie: juni 2001
  • Laatst online: 02:56

Reptile209

- gers -

quote:
zwik schreef op donderdag 24 mei 2018 @ 14:50:
[...]
De grote vraag, hoe precies zijn de verschillende benaderingen? Ik zou op zich redelijk precies willen zijn, zeg hooguit een tiende graad. Het probleem met de formule op wikipedia is dat ik niet weet hoe ik het moet lezen. De voorbeelden op de bovengenoemde sites zijn makkelijker voor me :) .
Ik begin maar met de makkelijkste vraag, die stond al op Wikipedia aangegeven:
quote:
a = 6.112 mb, b = 17.67, c = 243.5 °C.
These valuations provide a maximum error of 0.1%, for −30 °C ≤ T ≤ 35°C and 1% < RH < 100%
...(error ±0.35 °C)...
...(error ±0.4 °C)...
...(error ≤ 0.05%)...(error ≤ 0.06%)...
Je haalbare nauwkeurigheid hangt dus af van welke parameterset je gebruikt. Kies er eentje :). Die laatste lijkt - bij normale temperaturen - de beste te zijn.

En tsja, wat snap je niet aan de formules? Een mogelijke verduidelijking voor je, is dat y(T,RH) (eigenlijk gamma ipv y, maar die bedenk je d'r maar even bij) gewoon één term of variabele is, die je berekent uit T en RH. Ze hadden hem ook a kunnen noemen.

In de eerste methode reken je gamma(T,RH) uit op basis van de RH, T en twee constanten (b en c). Daarmee kan je dan Tdp (dauwpunt temperatuur) uitrekenen, wederom met c en b erbij.

In de tweede methode reken je eerst Ps(T) uit, met de T, a, b en c als input. Daarmee kan je dan samen met BP (barometric pressure?), T en Tw (wet-bulb temperatuur) Pa(T) uitreken, en die prik je dan in de formule voor Tdp.

En de laatste is helemaal rechttoe-rechtaan: gamma_m uitrekenen met RH, T en je constanten, en die prik je in de formule voor Tdp.

Het hangt er dus een beetje vanaf welke methode je wil gebruiken en welke (meet-)gegevens je beschikbaar hebt (Tw zal je bijvoorbeeld niet snel hebben in je weerstation denk ik). De variabelen a t/m d betekenen in principe niks, dat zijn gewoon 'fit parameters' waarmee de formule is afgesteld op meetgegevens.

If you're not part of the solution, you're part of the precipitate.


  • GlowMouse
  • Registratie: november 2002
  • Niet online

GlowMouse

getweakt...


code:
1
z3 = 0.434292289 * Math.log(z2);

Hiermee bereken je de natuurlijke logaritme van z2.
code:
1
es = 6.1 * Math.exp(z1 * 2.3025851);

Hiermee bereken je 6.1*10z1.

jij ook?


  • Rannasha
  • Registratie: januari 2002
  • Laatst online: 19-04 13:44

Rannasha

aka "Species5618"

De diverse formules voor de berekening voor het dauwpunt zijn empirische benaderingen. De constanten die er in gebruikt worden hebben daarom ook niet per se een echte betekenis, maar zijn simpelweg komen bovendrijven nadat de functie aan de metingen is gefit.

Er zijn verschillende benaderingsformules en verschillende sets met constanten. Met verschil in complexiteit en nauwkeurigheid.

Wikipedia biedt 2 aanpakken. In de eerste bereken je eerst de hulpfunctie γ(T, RH). Deze gebruik je vervolgens in de "hoofdformule" voor Td. Dit kun je in (JavaScript) code makkelijk namaken:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function gamma(T, RH) {
    <initialiseer constanten>
    <berekening>

    return <uitkomst>;
}

function dewPoint(T, RH) {
    <initialiseer constanten>
    
    return (c * gamma(T, RH)) / (b - gamma(T, RH));
}

Het stukje wat daarna volgt op de Engelse Wikipedia pagina, over de dampdruk, luchtdruk en wet-bulb temperatuur, is niet meer dan een afleiding van de eerder genoemde benadering. Het voegt voor praktische toepassing niet veel toe.

De derde set vergelijkingen heeft een gewijzigde aanpak met een aangepaste γ-functie (en dus een aangepaste formule voor de dampdruk, Ps, maar die kun je negeren), die blijkbaar nauwkeuriger is en een vierde fitting-constante heeft. Verder blijft de berekening grotendeels hetzelfde en het bovenstaande code-framework kun je hier ook voor gebruiken.

Het artikel zegt niet wat de nauwkeurigheid is van deze aanpak met 4 constanten. Voor de formule met 3 constanten biedt het meerdere sets aan waardes met verschillende nauwkeurigheden, de beste met een afwijking van <0.05%. Dat lijkt me meer dan voldoende voor jouw toepassing, want de nauwkeurigheid van de input-data zal hier verreweg de grootste bottleneck zijn (vooral de relatieve luchtvochtigheid is moeilijk om nauwkeurig te meten).

Dutch StarCraft League || Vierkant voor Wiskunde || Olympus OM-D E-M1 MkII, 9-18, 12-40, 40-150, 70-300, 50


  • zwik
  • Registratie: maart 2001
  • Laatst online: 18-04 12:14
quote:
Reptile209 schreef op donderdag 24 mei 2018 @ 15:17:
[...]

Ik begin maar met de makkelijkste vraag, die stond al op Wikipedia aangegeven:

[...]

Je haalbare nauwkeurigheid hangt dus af van welke parameterset je gebruikt. Kies er eentje :). Die laatste lijkt - bij normale temperaturen - de beste te zijn.

En tsja, wat snap je niet aan de formules? Een mogelijke verduidelijking voor je, is dat y(T,RH) (eigenlijk gamma ipv y, maar die bedenk je d'r maar even bij) gewoon één term of variabele is, die je berekent uit T en RH. Ze hadden hem ook a kunnen noemen.

In de eerste methode reken je gamma(T,RH) uit op basis van de RH, T en twee constanten (b en c). Daarmee kan je dan Tdp (dauwpunt temperatuur) uitrekenen, wederom met c en b erbij.

In de tweede methode reken je eerst Ps(T) uit, met de T, a, b en c als input. Daarmee kan je dan samen met BP (barometric pressure?), T en Tw (wet-bulb temperatuur) Pa(T) uitreken, en die prik je dan in de formule voor Tdp.

En de laatste is helemaal rechttoe-rechtaan: gamma_m uitrekenen met RH, T en je constanten, en die prik je in de formule voor Tdp.

Het hangt er dus een beetje vanaf welke methode je wil gebruiken en welke (meet-)gegevens je beschikbaar hebt (Tw zal je bijvoorbeeld niet snel hebben in je weerstation denk ik). De variabelen a t/m d betekenen in principe niks, dat zijn gewoon 'fit parameters' waarmee de formule is afgesteld op meetgegevens.
Bedankt, maar nu snap ik er eerlijk gezegd nog niet veel van :D .

Laat ik het simpel proberen aan de hand van de derde methode:

Eerste deel:
Ps,m(T) = ae(b-T/d)(T/c+T)

Wat is Ps,m(T)? Ik zie P later nergens terug komen?
Wat is ae? Ik denk dat je a vermenigvuldigd met e, maar wat is e?
a, b en c zijn de constanten en T is de luchttemperatuur?

tweede deel:
ym(T,RH) = ln (RH/100*e(b-T/d)(T/c+T)))
wat is gamma m? Waarom staat T en RH tussen haken met een komma ertussen?

derde deel:
Ik snap hier ym ook niet en de komma ook niet

Even heel concreet, en mijn wiskunde is slecht :) .

  • Rannasha
  • Registratie: januari 2002
  • Laatst online: 19-04 13:44

Rannasha

aka "Species5618"

quote:
zwik schreef op donderdag 24 mei 2018 @ 15:42:
[...]

Wat is Ps,m(T)? Ik zie P later nergens terug komen?
Die moet je negeren. Het Wikipedia-artikel is erg onduidelijk, maar deze functie, Ps,m, is een onderdeel van de afleiding van de gamma-functie. Je hebt deze niet nodig voor de daadwerkelijke berekening. De functie staat er alleen om aan te geven waar de wijzigingen in de gamma-functie (ten opzichte van de eerdere vorm) vandaan komen.
quote:
Wat is ae? Ik denk dat je a vermenigvuldigd met e, maar wat is e?
Wikipedia: e (mathematical constant)

Het grondgetal van het natuurlijk logaritme. Ongeveer 2,71828, Maar in JavaScript kun je gewoon
JavaScript:
1
Math.E

gebruiken en je er verder niet druk om maken.
quote:
a, b en c zijn de constanten en T is de luchttemperatuur?
Ja.
quote:
ym(T,RH) = ln (RH/100*e(b-T/d)(T/c+T)))
wat is gamma m? Waarom staat T en RH tussen haken met een komma ertussen?
γm is een hulp-functie in de berekening. De subscript-m staat voor "modified", om aan te geven dat het hier gaat om een aangepaste versie van de γ-functie.

γ(T, RH) betekent dat γ een functie is met variabelen T en RH. Deze syntax is exact hetzelfde als in veel programmeertalen, waaronder JavaScript.
quote:
derde deel:
Ik snap hier ym ook niet en de komma ook niet
Zie mijn eerdere post met een voorbeeld framework over hoe deze berekening in JavaScript er uit kan zien.

Dutch StarCraft League || Vierkant voor Wiskunde || Olympus OM-D E-M1 MkII, 9-18, 12-40, 40-150, 70-300, 50


Acties:
  • 0Henk 'm!

  • zwik
  • Registratie: maart 2001
  • Laatst online: 18-04 12:14
Bedankt voor de duidelijke info! In de laatste formules word de constante a dus helemaal niet gebruikt. Er is ook Math.exp() in JavaScript waarin je dus een getaal aan e kan meegeven zoals ook in de formule beschreven staat.

Acties:
  • 0Henk 'm!

  • jeroen3
  • Registratie: mei 2010
  • Laatst online: 23:43
De Duitse wiki pagina heeft een uitleg van de afkortingen.
En een buitengewoon duidelijke afbeelding om uit te leggen waarom de luchtdruk belangrijk is.
Als je geen luchtdruk hebt, kun je natuurlijk ook een tabel gebruiken.

Dit demonstreert maar weer eens hoe slecht wikipedia kan zijn. Want bij elke taal krijg je andere formules te zien. Je kunt ook nog de waarnemingsmethoden en formules van het knmi inzien. Maar dat zl nog meer verwarring zaaien ben ik bang.

Acties:
  • 0Henk 'm!

  • RP6conrad
  • Registratie: april 2017
  • Laatst online: 20:58
Dit bewijst weer eens hoe GOED wikipedia is ! Het is duidelijk dat er geen concensus is over de beste manier om het dauwpunt te berekenen, en dat kom je zo dan ook te weten !

Acties:
  • 0Henk 'm!

  • zwik
  • Registratie: maart 2001
  • Laatst online: 18-04 12:14
Ik weet dat het benadering is, zie de topictitel :) . De vraag was vooral hoe ik de formule moest lezen, dat denk ik nu te begrijpen. Dus ik ga 'm invullen maar lijk toch nog op een probleem te komen:
ik gebruik de volgende constanten:
b = 18.678
c = 257.14
d = 234.5
T = 20 graden Celcius
RH = 56%

Vervolgens begin ik de getallen in te vullen in de gamma functie:
b - T/d = 18.592712153518125

dan T/c+T = 0.07216569242981886

deze vermenigvuldig ik met elkaar en gooi die in e(x). De uitkomst daarvan is: 3.8257554334026254

RH/100 = 0.56 * 3.8257554334026254 = 2.1424230427054702 en daar de log van is = 0.761937451454002

We hebben nu gamma uitgerekend
Vervolgens gaan we het dauwpunt uitrekenen:
c * gamma = 195.92459626688208
b - gamma = 17.916062548545998

Deze twee delen we door elkaar en het dauwpunt is 10.935695035446424

Volgens mij klopt dit? :)

Acties:
  • 0Henk 'm!

  • s0ulmaster
  • Registratie: juni 2012
  • Laatst online: 21-04 18:46
Ziet er inderdaad goed uit :)

Without magic smoke, it ain't broken!

Pagina: 1


OnePlus 7 Microsoft Xbox One S All-Digital Edition LG W7 Google Pixel 3 XL OnePlus 6T (6GB ram) FIFA 19 Samsung Galaxy S10 Sony PlayStation 5

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True