Montag, 28. Oktober 2024

A Coding Challenge for Myself: Programming an Efficient Wizzair Route Overview Tool to Ease Route Planning for Frequent Flyers Preferring to Choose the Wizzair Network :-)


Update 04.11.2024:
The latest Wizzair routes for November, with up to three legs & for all available departure airports, can be found here.

Hello, fellows! ✈
There may be some All-you-can-fly members around here, or simply some dedicated Wizzair flyers, who were wondering how to ease route planning in an efficient manner. Then continue reading! 😎
When Wizzair announced the first European flight subscription under the product name "All you can fly" in mid of August 2024, I quickly raised the question to myself, what could be an efficient way to do the route planning in this upcoming year. Quickly, people like me came up with exciting approaches to this challenge, and within several weeks some web-based solutions implemented by enthusiasts like me, were brought online, e.g.
  • https://multipass.replit.app/ (currently probably the quickest and best search engine which even considers actual AYCF seat availibility)
  • https://the1491club.com/somewherex (a pretty solid solution with some useful features, however not really accurate at the moment when it comes to AYCF seat availibility)
  • https://ninja.veikus.com/planner/ (outdated)
However, as I am not a professional in this field at all (I did almost 100% learning-by-doing ), I do not see myself as a real competitor to these solutions. But I was still excited to challenge myself and wanted to learn and grow by realizing this challenge. Therefore, I still continued with creating my solution, my idea, that I am now presenting here in this post of mine. It is very intuitive and straight-forward, and the mechanics behind work according to the following three basic steps:
  1. Data collection: Collect publicly available flight data about Wizzair-operated routes from the internet
  2. Data structuring: Merge and restructure the collected data to a timetable format
  3. Data processing: Derive route combinations and store the data in a table-based format, supporting quick and handy sorting and filtering functions.
Of course this approach is not ideal when it comes to data space requirements or user-friendliness, however I like about it, that it is very functional, can be easily maintained (as it is fully python-based and does not require external ressources such as subscriptions or licensens) and respects legal aspects of the web scraping that is applied to gather publicly available flight data from different thirdparty online sources together with calculations to estimate for example the flight duration. Also, the results can be easily processed further or analyzed as per the individual needs. And las but not least, the results give the user a full picture of what the Wizzair network as to offer.
The actual features of the tool at its current development stage:
  • Based on the latest Wizz Air flight schedule (Winter 2024/25), a python script derived and listed all possible direct routes and stopover routes with up to two transfers possible within the wizzair network in a table format.
  • Due to the large number of possible combinations and travel possibilities, generated route lists are saved separately (one file for each of Wizz Air's departure airports).
  • The resulting Excel files also include further relevant (or interesting) data for each route. 🙂
  • The columns on the far right contain a selection of predefined "sorting keys" and "filters," which can be used in combination with Excel's built-in autofilter, efficiently helping to quickly reduce the database to a subset of individual routes of interest.

    Example: Filtering Dortmund (DTM) to Abu Dhabi (AUH) route options by Wizzair in the early Winter Schedule 2024/25:


[...to be continued... ]

I look forward to your feedback. And of course, your ideas for improvements are welcome too! 🙂
Wherever you "go": Happy flying!

Dienstag, 13. August 2013

Beispiel: Lösung eines Integrals über eine Schlüssellochkurve

Moin moin zusammen!

Die letzten Tage hatte ich viel mit der Funktionentheorie (Teilgebiet der Mathematik) zu tun und war erstaunt, dass zu dem Begriff der Schlüssellochkontur bzw. Schlüssellochkurve sehr sehr wenige Informationen im Internet verfügbar sind. Zumindest gilt dies für Seiten, die im direkten Bezug zur Mathematik stehen.

Abb.1: Google-Suche nach den Begriffen Schlüssellochkontur und Schlüssellochkurve am 13.08.2013 - Link zur Suche
Abb.1: Google-Suche nach den Begriffen Schlüssellochkontur und Schlüssellochkurve am 13.08.2013 - Link zur Suche

Daher dachte ich mir, stelle ich mal einen konkreten Lösungweg vor, wie man ein Integral (in diesem Fall mit ungeradem Integranden und den Grenzen 0 und ) auf diese interessante Weise lösen kann.


Nämlich über eine Konturkurve in der komplexen Zahlenebene, deren Aussehen eben gerade einem Schlüsseloch ähnelt. :-) Viel Spaß!

Für Fragen oder Anmerkungen zur nutzt bitte die Kommentarfunktion am Ende des Beitrags.




Alternativ: Download der Rechnung als PDF-File



 WolframAlpha liefert dies leider nicht mit einfachen Mitteln, daher bleibt nur übrig die numerisch ermittelten Ergebnisse abzugleichen: Dazu hier klicken und a durch beliebige Zahlen zwischen 0 und 1 ersetzen.

Freitag, 26. Juli 2013

Cholesky-Zerlegung: A=LDL^T mit MATLAB berechnen

Anbei ein kleiner Link zu einem Matlab-m-File, das die Cholesky-Zerlegung für eine positiv definite, symmetrische (s.p.d.) Matrix durchführt: http://www.mathworks.com/matlabcentral/fileexchange/47-ldlt?download=true

Nach Einfügen des m-Files "ldlt.m" in den Arbeitsbereich (standardmäßig links des Matlab-Command-Windows), kann mittels folgenden Aufrufs eine LDL^T-Zerlegung nach dem hier angegebenen Algorithmus (Folie 57) durchgeführt werden:

BEISPIEL:
>> A=[4 6 2;6 10 8;2 8 30]

A =

     4     6     2
     6    10     8
     2     8    30

>> [L,D]=ldlt(A)

L =

    1.0000         0            0
    1.5000    1.0000         0
    0.5000    5.0000    1.0000


D =

     4     0     0
     0     1     0
     0     0     4

Sehr praktisch um von Hand berechnete Ergebnisse zu überprüfen!


Alternativ gibt es auch hier ein matlab-Skript, das eine LL^T-ZERLGUNG durchführt (KEINE LDL^T-ZERLEGUNG!)
http://www.uni-ulm.de/fileadmin/website_uni_ulm/mawi.inst.070/ss13/AngewandteNumerik1/cholesky.m
Ebenfalls sind dort viele weitere interessante Algorithmen aus NuMa als fertig implemenitierte Matlab-Files verfügbar: Siehe Screenshot.



Viel Erfolg beim Üben!

Sonntag, 14. April 2013

Schnittfläche zweier Kreise, prozentualer Anteil und "Die grasende Ziege"

Neulich habe ich einmal eine kleine nette Aufgabe gefunden.
Sie ist im Internet unter dem Begriff "Die grasende Ziege" zu finden.

Wer selbst nicht weiterkommt beim Lösen, für den stelle ich hier mal meinen
kommentierten Rechenweg vor. Bei Fragen gilt wie immer: Kommentarfunktion nutzen! (Auch wenn das bisher noch nie jemand getan hat. Seid ein Vorbild! ;-) )

Außerdem hatte mich interessiert, wie sich sich die Schnittfläche zweier identischer, voreinanderher laufender (Geschwindigkeit v) Kreise prozentual zur Gesamtfläche eines Kreises verhält. (vgl. Sonnenfinsternis). Dazu sind ein paar Überlegungen von mir ausgeführt worden.


Hier ist einmal qualitativ der anteilige Flächeninhalt in Abhängigkeit von a (bzw. der Zeit t (Anm.: wegen a=v*t, v=konst. gilt: a ~ t)) aufgetragen. r ist für den Plot zu 1 gewählt:

Abb. 1: Anteilig bedeckte Fläche in Abhängigkeit von der "Überschnittbreite" a (Def.: s.u.) bzw. t (qualitativer Verlauf für Radius r1=r2=1) - WolframAlpha-Link



Währenddessen ist nachfolgend der qualitative Verlauf der Änderungsrate der prozentual bedeckten Kreisfläche aufgetragen:

Abb. 2: Änderungsrate der bedeckten Fläche in Abhängigkeit von der "Überschnittbreite" a (Def.: s.u.) bzw. t (qualitativer Verlauf; unabhängig von r) - WolframAlpha-Link
Man erkennt leicht, dass die sich überdeckende Fläche bis kurz zur Gesamtüberdeckung wächst und die Wachstumsrate bis kurz zuvor monoton wächst, also ihr Absolutmbetrag a=2*r=2 maximal wird.
Dieses Ergebnis ist plausibel und war zu erwarten. :)


Hinweis: Die Aufgabe wird erst im Anschluss an ein paar andere Überlegungen meinerseits vorgestellt. Also scrollt direkt runter, falls ihr nur am "Ziegenproblem" interessiert seid.


Download des Derive-logs:
pdf-Format (Adobe Reader),
dfw-Format (Derive wird benötigt),
png-Datei (Bild)


[ Nachtrag: ]

Definition "Überschnittbreite": Mit der "Überschnittbreite" a bezeichne ich in den obigen Ausführungen die längstmögliche Horizontalstrecke im Überdeckungsbereich der beiden Kreis, wenn sich diese in x-Richtung übeinander bewegen. Siehe nachfolgende Skizze:

Abb 3. Erläuterung des Begriffs "Überschnittbreite" - WolframAlpha-Link


Sonntag, 20. Januar 2013

Feldüberhöhung an Spitzen, Ecken und Kanten

Hallo,

das Phänomen der Überhöhung der elektrischen Feldstärke an spitzen Stellen eines Körpers
ist sicherlich bekannt.

Im Folgenden habe ich einmal, um diesen Effekt quantitativ nachvollziehen zu können, beispielhaft das E-Feld einer quadratischen Flächenladung mit der Seitenlänge 2d berechnet.

Es zeigt sich, dass tatsächlich für den Aufpunkt A=(a,b) mit (a,b)-->(+-d,+-d) gilt, dass |E(a,b)| --> ∞.
Sehr interessant, wie ich finde.

Der Einfachheit und Überrsichtlichkeit halber habe ich das Lösen der Integrale Derive überlassen.


Hier gibts den Rechenweg (kommentiert):

Wer Spaß am Nachrechnen oder selbst ausprobieren hat:

HINWEIS: Das Ergebnis ist ohne Gewähr. Ich habe diesmal leider keine Möglichkeit gehabt, das Ergebnis unabhängig auf Richtigkeit zu überprüfen! Also bei Fehlern weist mich bitte unbedingt daraufhin!

Donnerstag, 13. Dezember 2012

Kapazität eines Winkelkondensators (mit Rechenweg / Herleitung)

Moin moin,

es war die Frage aufgekommen, wie groß die Ladung Q eines auf die Spannung U aufgeladenen Winkelkondensators - und damit seine Kapazität C - ist.

Wie sieht ein Winkelkondensator aus?
Ein Winkelkondensator ist ein ganz gewöhnlicher Plattenkondensator, bis auf den Unterschied, dass die Platten in einem bestimmten Winkel α zueinander angeordnet sind, wodurch die Homogenität des E-Feldes verloren geht.
Die folgenden Berechnungen zeigen, dass die Äquipotentiallinien des E-Feldes Kreisabschnitten entsprechen (zwischen den Platten) und dass sich das Potential linear zum Winkel θ verhält.


Welche Auswirkungen das auf die Kapazität C hat, könnt ihr im Folgenden nachvollziehen:
(Alternativ: Download als PDF):





Das Ganze bringt mich jetzt zwar persönlich nicht wirklich weiter, aber dennoch ganz interessant, dass man mit einigen mathematischen Hilfsmitteln solche Probleme angehen kann (wie ich finde) und vielleicht auch eine nette Übung für zwischendurch.

(apropos Übung: ich hatte bisher keine Möglichkeit das Ergebnis auf Richtigkeit zu überprüfen. Daher ist nicht ganz auszuschließen, dass sich evtl. doch ein kleiner (Denk-)Fehler eingeschlichen hat - wäre daher cool, wenn sich jemand möglichst unabhängig von meinem Lösungsansatz mit der Aufgabe auseinandersetzen würde. :-) ).

Bei Fragen oder Kritik nutzt die Kommentarfunktion.


Viele Grüße
cospyanther

Mittwoch, 21. November 2012

UPDATE: Abischnitt 2014 Niedersachsen

Die doppelte Gewichtung des P3 Faches ab dem Jahr 2014 erforderte ein kleines Update meines Abirechners von 2011.
 

Download (v1.0.0): Abischnitt 2014.exe (455KB)
MD5: a98335340e47d5e2bcee7a3a1b99dd16

Kurzbeschreibung:

Wie der Name schon sagt, kann damit auf einfache Art und Weise der zu erwartende Abiturdurchschnitt bestimmt werden.

Anmerkungen:

(i) Nach wie vor sollte bedacht werden, dass das Tool lediglich die reine Berechnung der Gesamtpunktzahl/Abidurchschnittsnote, sowie die Speicherung der Einzelnoten übernimmt, d.h. ob alle Kriterien für einen erfolgreichen Abschluss erfüllt sind, bleibt zunächst unberücksichtigt.

(ii) Und noch ein wichtiger Hinweis:
"Treten bei der Berechnung der Ergebnisse nach der Berechnungsformeln in Block 1 Bruchteile auf, so wird nach dem üblichen mathematischen Verfahren gerundet." (AVO-GOBAK, Anlage 2)
=> Die Formulierung vom Land ist an dieser Stelle einfach nicht 100%ig wasserdicht und lässt einen gewissen Freiraum in der Umsetzung zu!
 
Unter dem "üblichen" Verfahren verstehe ich Folgendes und habe es entsprechend implementiert:
Kleiner als ,5: abrunden.Größer gleich ,5: aufrunden.

(iii) Und zuletzt:
Selbstverständlich gilt wie immer: alle errechneten Ergebnisse sind ohne Gewähr.


Bei Fragen und Problemen immer melden!
Und nun viel Erfolg fürs Abi! :-)

 
(ein Beispiel)

Besucherstatistiken

eXTReMe Tracker

Follower