Welkom  

   

Mijn Menu  

   

What's Up  

za mei 18 @12:00AM
ZF Pinkstertrip 2024
   

Wedstrijd  

Geen evenementen
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Welkom, Gasten

Onderwerp: Vraagje voor zeilende wiskundigen.....

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 15:23 #1260934

  • Menno
  • Menno's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 3381
SailingPD schreef :
Daar gaat dan een kromme in beeld komen: (speedwide is die bij TWA 40,9, speednarrow die bij 40,1)
  result=(1-cos(twafractionofspeedrange*3.142857142857))/2
  targetspeed=round((speednarrow*(1-result)+speedwide*result),2)

Alternatieven in de aanbieding die beter zijn?

Waarom denk je dat dit beter is dan een lineaire interpolatie tussen speednarrow en speedwide?
“If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger W. Dijkstra
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 15:41 #1260940

Dat denk ik niet per sé. Ik vraag het eigenlijk ;-)
Beide berekeningen (lineair en deze) staan nu in het programma.
Ik kan simpel wisseln.
Het verschil tussen beide is bij 6 a 7 kts meestal minder dan 0,1 kts Target Speed.
De polar is natuurlijk wel een kromme, niet een reeks rechte stukjes met knikjes....
nobody believes in coriolis (any more)
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 15:44 #1260942

Ingewikkeld. Bij elke interpolatie (ook 1D) moet je eigelijk weten hoe de functie verloopt om iets te kunnen zeggen hoe een interpolatie eruit zou moeten zien.

Hier een polar in 3D (niet in pool-coordinaten maar cartetisch weergegeven).



Ik zou eerste eens (“gewoon” in Excel) proberen:
-hoe je bij een gegeven TWS tussen 2 TWA waarden zou kunnen interpoleren
-hoe je bij een gegeven TWA tussen 2 TWS waarden zou kunnen interpoleren

Ik ben bang dat dat niet overal in een VPP matrix op dezelfde manier kan.

Die cosinus lijkt mij redelijk willekeurig? Hoe ziet die eruit als je die Excel oefening doet, dus in de grafiekjes die je eerder liet zien?
Laatst bewerkt: 09 mrt 2021 15:49 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 15:49 #1260944

  • Menno
  • Menno's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 3381
In NumPy/SciPy zitten ook al interpolatie functies, bijv:
import numpy as np
from scipy.interpolate import RectBivariateSpline

twa = np.array([39.0, 40.1, 40.9])
tws = np.array([14, 16, 20, 24])

target_speed = np.array([
  [6.40, 6.50, 6.67, 6.80],
  [6.51, 6.60, 6.80, 6.87],
  [6.61, 6.70, 6.90, 6.93],
])

interpolate = RectBivariateSpline(twa, tws, target_speed, kx=1, ky=1)

print(interpolate(40.5, 18))

kx en ky zijn de degrees van de bivariate spline. kx=ky=1 is lineair, default voor kx en ky is 3.
“If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger W. Dijkstra
Laatst bewerkt: 09 mrt 2021 19:26 door Menno.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 15:56 #1260945

Nachtvlinder schreef :
Hoe ziet die eruit als je die Excel oefening doet, dus in de grafiekjes die je eerder liet zien?

Be my guest ;-)
nobody believes in coriolis (any more)
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 16:08 #1260948

Ik heb niet voor niets voor bilineair gekozen ;)

Wat Menno voorstelt lijkt mij het proberen waard. Weet niet of die methode ook door de wel bekende punten gaat of daar zo dicht mogelijk langs loopt? Orde dus 1 of hoger; betekent “2” dan dat je aan beide kanten van de te vinden waarde 2 bekende punten beschikbaar moet hebben? Weet niet hoe zich dat dan gedraagt aan de randen van de tabel? Zitten vast wat slimmigheidjes in.

stackoverflow.com/questions/46...terpolation-in-scipy
Laatst bewerkt: 09 mrt 2021 16:12 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 16:16 #1260951

Ik vermijd NumPy en SciPy.
En wel omdat ik een kleine distributie (library) wil hebben in een gecompileerde versie.
Die hoeveelheid is nu 23.8 Mb, waarvan zo'n 15 Mb dingen in libraries die helemaal niet gebruikt worden....

Zelf bedenken dus ;-)
nobody believes in coriolis (any more)
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 16:42 #1260958

Cubic of de meer controleerbare Hermite interpolaties gaan door de bekende punten (2 aan elke kant) en passen denk ik goed bij het typisch verloop van een polar curve:
paulbourke.net/miscellaneous/interpolation/





Aan het eind van de tabel wordt het wel tricky en zal op een alternatief overgegaan moeten worden. Aan de UA kant wel jammer want juist daar geeft lineair de grootste fouten (en is de targetspeed gevoelig).
Laatst bewerkt: 09 mrt 2021 16:43 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 16:50 #1260963

  • La Mavare
  • La Mavare's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 8634
SailingPD schreef :
La Mavare schreef :
Ik zeil met mijn zintuigen

Als piloten dat proberen storten ze vrijwel zeker neer.
Wij kunnen gelukkig alleen zinken...

Alleen met je zintuigen gaat goed als je 12 maanden per jaar 6 uur per dag traint op dezelfde boot.
Zoals de topzeilers in kleine bootjes doen (kijk maar in Medemblik RC, altijd trainingen).
Dan gaan al je spier- en peesspoeltjes meedoen en gaat het geleerde in je ruggenmerg zitten.
Proprioceptie.
En dan krijg je ook de tijd om af en toe om je heen te kijken (wind, water en tegenstanders).
En pas als je 80% van de tijd niet op de prestatie van je boot hoeft te letten maar om je heen kunt kijken (omdat de snelheid van de boot regelen in je ruggenmerg zit) ga je winnen!

Maar dat is voor de meeste zeilers niet weggelegd. Die hebben wat hulp nodig ;-)

OK, ik ben bevoorrecht dat ik me niet druk maak om 100% performance, maar je miste wellicht de belangrijkste opmerking:
Misschien is het antwoord te bevragen bij Zezo of Virtual Regatta.

Deze jongens en met name Zezo hebben er verstand van.
instructeur zeezeilen en kielboot
les op eigen schip, deliveries
"De beste manier om iets te leren is er les in te geven." - Seneca, Romeins filosoof, staatsman en toneelschrijver - 5 v.C. 65 n.C.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 17:05 #1260965

JotM schreef :
boarderbas schreef :
Een Bezier spline is een generalisatie van een Bezier kromme, zoals je link aangeeft.
Yep. Of (zoals in de link) anders gezegd:
A B-spline with no internal knots is a Bézier curve.

boarderbas schreef :
Een bezier-kromme is de kromme tussen twee punten met twee vectoren.

Dus dit zijn naar jouw maatstaven geen Bézier-krommen?:

Bron: Wolfram

Bron: WikimediaCommons

boarderbas schreef :
Een B- spline de wiskunde achter de opeenvolging van bezier krommen, zodat er oneindig meer punten aan de definitie toegevoegd kunnen worden. Hier niet zo nuttig.
Daar verschillen we dan van mening over. :)
Mij lijkt het super-nuttig: ik zou zeker willen zijn dat m'n kromme door de meetpunten ("internal knots") gaat. Bij een Bézier-kromme weet je dat alleen zeker voor de eerste en de laatste.

Als lezen lastig is snap ik ook waarom je dit zo boven de pet gaat ;)

In mijn toepassing zijn er geen tussenliggende punten..

Een NURB is per definitie niet geschikt om op een dataset te fitten.
Laatst bewerkt: 09 mrt 2021 17:13 door boarderbas.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 18:51 #1260993

Nou, ik heb wat handmatige bicubic interpolaties gedaan op 3 punten uit de First 31.7 polar. Het verschil met eenvoudige bilineaire interpolatie is wat mij betreft verwaarloosbaar.
TWATWSBiLBiQ
15522.59.08.9
3874.54.6
1402710.510.7

Verder nadeel is zoals genoemd, dat je in zowel TWA als TWS dimensie aan beide zijden rondom het te schatten punt 2 datapunten nodig hebt. In de buurt van UA en de randen van het windbereik werkt deze methode dus niet - en binnen in de tabel is het verloop zo vlak dat lineair prima werkt ;)

Denk dat een goede interpolatie (evt stukje extrapolatie tussen UA en TWA=0?) nabij UA en UD belangrijker is (dat de afgeleidden van de VMG daar netjes 0 zijn)...

Voorbeeld:
Laatst bewerkt: 09 mrt 2021 18:54 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 19:40 #1261015

  • Menno
  • Menno's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 3381
SailingPD schreef :
Ik vermijd NumPy en SciPy.
En wel omdat ik een kleine distributie (library) wil hebben in een gecompileerde versie.
Die hoeveelheid is nu 23.8 Mb, waarvan zo'n 15 Mb dingen in libraries die helemaal niet gebruikt worden....

Zelf bedenken dus ;-)

Dat mag natuurlijk, maar waarom? Wat maakt het uit als je library 80MB is i.p.v. 23.8 MB?
“If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger W. Dijkstra
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 19:46 #1261017

he Maarten, dank je.
Het verschil tussen lineair en iets kroms komt dus weer neer op 1 a 2 % van de target speed (en dus van performance); daarmee valt het een beetje in de ruis.
Dezelfde soort verschillen had ik ook al gezien.
De vraag wat nu beter is blijft overeind natuurlijk.
Als lineair over korte stukjes van de polar goed genoeg is, is iets kroms dan toch beter?

En zoals je zegt: het echte probleem is aan de rand van de bekende polar, vooral bij TWA < UA.
De prestatie van de boot loopt daar (meestal) snel terug, zeker als je langere tijd te hoog stuurt. De regel van Gladstone is niet voor niets 'speed first, then pointing'.
Niets is dodelijker dan met weinig snelheid heel hoog sturen; de drift neemt enorm toe.

Interpoleren naar 0 kts bij TWA 0 is m.i. dan ook grote onzin. Je gaat dan geen 0 kts; je gaat achteruit.

Inderdaad wat snelheden in de polar opnemen bij TWA net onder de UA helpt; maak ze maar gelijk aan die bij de UA, dat vaar je nooit en de performance zal drastisch afnemen bi TWA onder de UA. Dat zal ze leren ;-) Het heeft geen zin jezelf voor de gek te houden met 100% performance als je te hoog vaart of te ruim. De VMG zal je ongelijk dan aantonen.
Uitzondering kan zijn heel hoog varen met de stroom achterop. Dan kan je hoog en hard. Ik denk dat performance daar niet meer de juiste info geeft; in die situatie moet je de VMG zo hoog mogelijk maken, zelfs als daar pinchen voor nodig is.
nobody believes in coriolis (any more)
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 19:54 #1261021

grappig, ik lees nog mee (het meeste snap ik ;) ) en de conclusie is tot nu toe dat mijn jan-boeren-fluitjes aanpak van lineair extrapoleren net zo goed als met ingewikkelde krommes? Beetje flauw van me ;) Ik vind het wel een leuk en leerzaam draadje geworden!
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 20:01 #1261024

Inderdaad, waarom makkelijk als t moeilijk kan? :laugh:
Ontwerper van de RoosMux, en andere apparaatjes.
www.viax.nl

It's been said that a boat is a vessel continually looking for ways to sink itself..
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 20:21 #1261031

Niet zo zeuren Chris! Dit gaat echt wel convergeren, SPD filtert de ruis er wel uit. Kan geen kwaad om over na te denken toch!?

SailingPD schreef :
De vraag wat nu beter is blijft overeind natuurlijk.

Ik zal grafisch nog laten zien of deze bicubic interpolatie beter aansluit op het verwachtte verloop tussen de tabel-punten (in 1 dimensie dan). Als dat zo is, dan is tie beter (hoe weinig ook) ;)

SailingPD schreef :
Interpoleren naar 0 kts bij TWA 0 is m.i. dan ook grote onzin. Je gaat dan geen 0 kts; je gaat achteruit. Inderdaad wat snelheden in de polar opnemen bij TWA net onder de UA helpt; maak ze maar gelijk aan die bij de UA, dat vaar je nooit en de performance zal drastisch afnemen bi TWA onder de UA. Dat zal ze leren ;-)

Dat lijkt mij praktisch en voorkomt “222” als je een kortstondig paar graden van koers raakt door een golf ofzo. De reden dat veel polars die wel tot TWA=0 doorlopen zo’n hartvorm hebben is denk ik dat deze ook in routing software gebruikt worden. Je bouwt dan een natuurlijke constraint in waardoor er niet boven UA gerouteerd wordt zonder numeriek op harde constraints terug te moeten vallen.

Maar toch nog even - stukje polar van Erik:


Als ik grafisch kijk naar deze curves tussen zeg UA-10 gr en UA+10 gr, dan zie ik een zo goed als symmetrische ellips. Horizontale raaklijn bij UA, geen knikpunt bij volgende “standaard” ORC TWA punt.

Zou dat niet te parametriseren zijn?
-lastigste en belangrijk deel net onder UA wordt dan “natuurlijker dus beter dan lineair”
-tot UA-10 ziet het er kwalitatief uit als de Erik en F31.7 polar (die berekend niet verzonnen zijn)
Laatst bewerkt: 09 mrt 2021 20:25 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 20:25 #1261032

  • Menno
  • Menno's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 3381
SailingPD schreef :
Interpoleren naar 0 kts bij TWA 0 is m.i. dan ook grote onzin. Je gaat dan geen 0 kts; je gaat achteruit.

Ik zou het omdraaien: je stopt het polair diagram in SailingPD om een target te hebben voor je performance, niet om daar routing mee te doen. Bij TWA=0 heb je een target: de BeatVMG.
Als je een BeatVMG van 5 knts hebt, en je gaat in de praktijk 2 knopen achteruit, heb je een performance van -40%

De target bij TWA < UA moet voor SailingPD dus hoger staan dan je in de praktijk kan halen, in tegenstelling tot bij routing programma's zoals RAK.

Voor het hele stuk tussen 0 < TWA < UA kan je die hoge target berekenen met de BeatVMG en een cosinus.
“If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger W. Dijkstra
Laatst bewerkt: 09 mrt 2021 20:27 door Menno.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 20:32 #1261041

Dat is ‘em Menno! De “performance target polar” volgt tussen TWA=0 en UA de denkbeeldige horizontale raaklijn die door UA loopt!

Hier voor 4 en 6 kn TWS:


En dan zijn er hiermee nu ook >2 datapunten beschikbaar om dat bovenste stuk tussen UA en het eerste standaard ORC TWA punt netjes te interpoleren :)
Laatst bewerkt: 09 mrt 2021 20:41 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 20:44 #1261043

Nachtvlinder schreef :
Dat is ‘em Menno! De “performance target polar” volgt tussen TWA=0 en UA de denkbeeldige horizontale raaklijn die door UA loopt!

Zei ik dat niet ook om 19:46 ongeveer:
Inderdaad wat snelheden in de polar opnemen bij TWA net onder de UA helpt; maak ze maar gelijk aan die bij de UA, dat vaar je nooit en de performance zal drastisch afnemen bi TWA onder de UA. Dat zal ze leren ;-)

Iets drastischer dan die willekeurige horizontaal ;-)
Dus, wie geen nullen in zijn polar wil (als waarschuwing met de 222) zet gewoon de Target Speed bij UA ook bij alle kleinere TWA's. Klaar. Performance lazert in elkaar als je te hoog stuurt. Idem bij DA
nobody believes in coriolis (any more)
Laatst bewerkt: 09 mrt 2021 20:46 door SailingPD.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 21:07 #1261059

Die horizontale lijn IS de BeatVMG! Je VMG target bij opkruizen is waar die lijn de vertikale as snijdt. Bijbehorende polarspeed is BeatVMG / cos(TWA). Niets willekeurig :)
Laatst bewerkt: 09 mrt 2021 21:14 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 09 mrt 2021 21:15 #1261062

  • koko
  • koko's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 15519
SailingPD schreef :

Iets drastischer dan die willekeurige horizontaal ;-)
Dus, wie geen nullen in zijn polar wil (als waarschuwing met de 222) zet gewoon de Target Speed bij UA ook bij alle kleinere TWA's. Klaar. Performance lazert in elkaar als je te hoog stuurt. Idem bij DA

Mooie hersengymnastiek heren! Ik lees meer grote ogen mee: “hoe doen ze dat” :laugh:

Maar die 222 of 111 is wel een super duidelijk signaal op, ik noem iets geks, een I70s in de garage, waarbij mijn stuurman niets hoeft te begrijpen hoe SPD werkt. Alleen te onthouden dat als hij dat ziet hij te hoog of te laag stuurt.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 10 mrt 2021 07:12 #1261127

Ok, het plan is me duidelijk.
Aan SailingPD hoeft niets gewijzigd te worden.

In de polar zet je de nullen als je in uncharted territory van de polar komt voor als de de 222 als waarschuwing wil krijgen. Als SailingPD dan een nul tegenkomt gaat hij niet interpoleren maar geeft de 222 af.

Voor mensen die dat niet willen:
- maak extra rijen in de polar voor TWA's 10, 20, 30, 35 (of zo)
- zet in de cellen waarvoor geen polar-waarde beschikbaar is de snelheid die je moet varen om de VMG van de TWS van die kolom bij de UA van die rij te halen.
Dan krijg je zo gauw je onder de UA komt meteen te zien dat de oerformance daalt, want je kan die VMG nooit halen (want de UA is de beste oplossing voor hoogste VMG).

Dank Menno en Maarten voor het meedenken.
Ik zal straks een voorbeeld posten van beide soorten polars, en een hulp=XLSje maken om de snelheden te berekenen die moeten worden ingevuld.

Blijft alleen de originele vraag van deze draad nog over: wat is nou beter? Lineair of een bochie.
nobody believes in coriolis (any more)
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 10 mrt 2021 08:50 #1261163

Blijft alleen de originele vraag van deze draad nog over: wat is nou beter? Lineair of een bochie

Een (welke!) "kromme" interpolatie is natuurlijk beter: het daarwerkelijke verloop is in ieder geval niet piecewise lineair ;)

Ik heb al laten zien dat het verschil met een robuuste lineaire interpolatie klein is. Hieronder de 14 kn isotach uit de F31.7 polar met daaronder een stukje uitvergroot. Hoewel de discontinuiteit in de afgeleidden van de lineaire interpolatie fysisch niet mogelijk zijn en deze daarmee "onjuist" zijn, is de fout maar heel klein.

Ik zou het dus maar bilineair houden. Overige argumenten:
-dataset is non-equally spaced: uitwerking zonder gebruik libraries wordt complex
-nabij de randen van de matrix zit je sowiezo vast aan een andere methode

Laatst bewerkt: 10 mrt 2021 08:53 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 10 mrt 2021 08:55 #1261166

  • nobody
  • nobody's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 127
SailingPD schreef :
Voor mensen die dat niet willen:
- maak extra rijen in de polar voor TWA's 10, 20, 30, 35 (of zo)
- zet in de cellen waarvoor geen polar-waarde beschikbaar is de snelheid die je moet varen om de VMG van de TWS van die kolom bij de UA van die rij te halen.
Dan krijg je zo gauw je onder de UA komt meteen te zien dat de oerformance daalt, want je kan die VMG nooit halen (want de UA is de beste oplossing voor hoogste VMG).

Je polar file is dan een vorm van config file. Even editen om het gedrag van SailingPD aan te passen. Hoe gaat SailingPD software om met polar’s waar geen optimale UA of DA in vermeld wordt ? Moet de gebruiker die er zelf maar in knutselen ?

Maar we geloven er nog steeds in hoor !
Alleen ingelogde leden kunnen reageren.

Vraagje voor zeilende wiskundigen..... 10 mrt 2021 09:16 #1261175

Da's nie zoveel werk hoor, polardata die wel beschikbaar is in Excel dumpen en VMG=BSP*COS(TWA) laten berekenen. Hier ook gedaan. Volgens Finot 37.5 en 167 gr. Klopt heel aardig (de apart vermeldde UA en DA punten heb ik niet ingevoegd in deze grafiek)

De dunne lijntjes links in de grafiek zijn de BeatVMG en bijbehoredne BSP als je die VMG bij TWA<UA zou willen halen doorgetrokken. Dat wat SPD ten onrechte een willekeurige horizontale lijn noemde ;)

Laatst bewerkt: 10 mrt 2021 09:19 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.
Tijd voor maken pagina: 0.290 seconden
Gemaakt door Kunena
   
   
   
   
© Zeilersforum.nl