Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA für numerische Flugbahnberechnung

VBA für numerische Flugbahnberechnung
19.08.2016 18:09:38
Beat
Hallo,
ich bin Anfänger was Programmieren und die verschiedenen Sprachen angeht.
Bin gerade an meiner Seminararbeit die über SwingBy-Manöver in der Raumfahrt geht. Das sind Flugmanöver bei denen die Gravitation eines Planeten genutzt wird um das Raumschiff z.B. zu beschleunigen.
Nun will ich auch eine solche Flugbahn numerisch berechnen. Also dass zu jedem neuen Zeitpunkt, die Einflüsse der Gravitation neu berechnet werden, sodass man die Bewegungsdaten (x-,y-Koordinaten) in einem Koordinatensystem als Flugbahn ausgegeben kann. Angefangen habe ich bereits mit Excel, wo aber der numerische Fehler zu groß ist für derartige Rechnungen. Also will ich jetzt diese Flugbahn oder zumindest die Geschwindigkeitsänderung bei einem solchen Manöver mit VBA programmieren.(wurde mir von meinem Lehrer als gute, objektorientierte Sprache empfohlen)
Da ich noch ganz am Anfang stehe brauche ich erstmal von Euch ein paar Einschätzungen. Zudem habe ich auch von Python gehört was anscheinend noch einfacher ist?
So nun ein paar Fragen:
Ist so ein Projekt als Anfänger in ca. 2 Monaten realistisch? (Ich bin auch bereit viel Zeit zu investieren)
Kann man die mit VBA gewonnenen Ergebnisse in Excel-Diagrammen (Koordinatensystem) darstellen? (Wäre wichtig, da das mit anderen Programmen wohl etwas schwierig wäre)
Gibt es einen Intelligenteren Weg eine numerische Berechnung durchzuführen? (Andere Sprache z.B. Python?, komplett anderer Weg?)
Ich bedank mich schon mal für jede Antwort!
Ich hoffe Ihr könnt mir helfen.
Viele Grüße,
TheBeat

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA für numerische Flugbahnberechnung
19.08.2016 18:42:45
Michael
Hi Beat,
VBA rechnet von Haus aus nicht mit mehr (signifikanten) Stellen als Excel.
Man kann VBA zwar auf STRING-Berechnungen mit nahezu beliebiger Anzahl von Stellen aufbohren, aber je nach Art & Umfang der Berechnungen geht das deutlich langsamer.
Was ist denn das für ein Formelwerk bzw. wie viele Stellen benötigst Du?
Schöne Grüße,
Michael
AW: VBA für numerische Flugbahnberechnung
19.08.2016 18:50:59
Beat
Hallo Michael,
da sich die numerischen Berechnungen über einen großen Zeitraum strecken, sollten es schon mindestens 10 Nachkommastellen sein. Das Hauptproblem sind aber nicht unbedingt die Nachommastellen sondern eher, dass ich mit excel dann um die 1.000.000 Zeilen hätte, da ich sehr kleine Zeitschritte brauche um den numerischen Fehler gering zu halten. Geht das mit VBA besser, bzw. gibt es einen Trick mit Excel? Oder muss ich das mit einer komplexeren Sprache machen?
Vielen Dank,
Gruß Beat
Anzeige
AW: VBA für numerische Flugbahnberechnung
19.08.2016 19:03:57
ChrisL
Hi nochmal
Nur eine Idee... Access oder eine andere Datenbank als Ablage verwenden?
ciux
Chris
AW: VBA für numerische Flugbahnberechnung
19.08.2016 19:04:40
Daniel
Hi
die 1 Mio Zeilen packt Excel mittlerweile auch, mehr aber nicht mehr (1,04 Mio)
es hängt dann davon ab, vieviele Spalten du brauchst.
Excel und VBA rechnen mit 15 Stellen, dh wenn du 10 NK-Stellen haben willst, sind nicht mehr als 5 VK-Stellen drin. Um so mehr VK-Stellen, um so weniger NK-Stellen.
der VBA-Variablenspeicher hat bei mir Platz für 77 Mio Double-Zahlen (zumindest kann ich ein Array 1 to 1000000, 1 to 77) deklarieren, bis ihm dann der Speicher ausgeht.
gruß Daniel
Anzeige
AW: VBA für numerische Flugbahnberechnung
19.08.2016 20:19:20
Beat
Hallo Daniel,
Du scheinst ja viel über die Limitationen zu wissen. Gibt es auch eine Möglichkeit diese 1,04 Mio Zeilen zu nutzen? Mit VBA oder ohne? Kenne mich da leider nicht genug mit aus.
Und sind die Excel-Limitationen anders als die in VBA? Also kann man in VBA auch mit mehr Nachkommastellen rechnen?
Danke!
Gruß Beat
AW: VBA für numerische Flugbahnberechnung
19.08.2016 20:30:33
Daniel
Hi
Excel hat mittlerweile 2^20 Zeilen und 2^14 Spalten
bis Excel 2003 waren es 2^16 Zeilen und 2^8 Spalten
die kannst du frei und beliebig nutzen, nur geht dir halt irgendwann der Speicher aus.
dh wenn du die Zeilenanzahl voll ausnutzt, wirst du nur wenige Spalten sinnvoll verwenden können, wenn du alle Spalten nutzt, wirst du nicht alle Zeilen nutzen können.
VBA rechnet standartmäßig mit 15 Stellen (Datentyp Double). Wo das Komma dann letztendlich sitzt, spielt keine Rolle (Fließkommaarithmetik)
obs jetzt einen Datentyp mit noch höherer Genauigkeit gibt, weiß ich nicht. in 64-Bit-Systemen vielleicht, under 32-Bit-Systemen eher nicht.
wennd du dir deine Rechenoperationen selber programmierst, kannst du auch beliebige Genauigkeiten erreichen, aber dann musst du dir ALLES selber programmieren, auch einfache Berechnungen wie +-*/
Gruß Daniel
Anzeige
AW: VBA für numerische Flugbahnberechnung
20.08.2016 00:56:26
Piet
Hallo Beat,
ich sehe das ihr euch eine Menge Gedanken über Rechenoperationen macht, und ob das reichen wird?
Ich erinnere mich als Elektroniker daran das wir uns 1974 über das 6116 RAM mit 2kB gefreut haben, endlich 2 kB zur Verfügung. Ich weiss nicht wie gross der Speicher der Appoşo Mission war, die haetten sich bestimmt über die Kapazitaet des alten Excel 7
mit nur 16.536 Zeilen gefreut.
Kennst du die Sufi Geschichte vom Esel, der zwischen zwei Heuhaufen verhungert ist,weil er sich nicht entscheiden konnte von welchem er fressen soll? - Nennt man Unentschlossenheit. - Wenn die Leute hören das wir 1974 mit Renault R4 in die Türkei gefahren sind werde ich gefragt: "hast du nie überlegt was da alles passieren kann"? Wenn du das aufzaehlst, daran glaubst, glaube mir, du faehrst nie los!!
Ob du wirklich zu einem Plaeten fliegst, oder es nur simulierst - irgendwann must du mal damit anfangen. Also Fang an!
Nur Versuch macht klug ....
mfg Piet
Anzeige
Strukturen
20.08.2016 20:08:09
Michael
Hi,
wie geht denn die Berechnung Deiner 10^6 Zeilen vor sich? Benötigt Zeile n immer nur Werte aus Zeile n-1 oder auch von n-2, n-3 usw?
Wozu 1 Mio. Zeilen SPEICHERN (bzw. im Arbeitsspeicher vorhalten), wenn immer nur eine oder wenige der vorhergehenden Zeilen benötigt werden?
Das Prinzip der EDV heißt bekanntlich Eingabe-Verarbeitung-Ausgabe, d.h. Du solltest Dir zunächst mal überlegen, wieviele Daten für die reine AUSGABE benötigst: um einen netten Graphen zu malen, reichen Dir nämlich mehrere 100 bis wenige 1000, oder?
Oder willst Du einen Graphen, der sich bei 10^6 Zeilen Daten über 500 Bildschirme erstreckt?!
Das läuft also darauf hinaus, daß Du Deine Berechnungen quasi in einem Puffer von n benötigten Zeilen vornimmst, wobei Du bei jeder x-ten Berechnung die Ergebnisse für die AUSGABE dann in die Tabelle "wegschreibst".
DAS geht problemlos mit VBA.
Weiteres ist eigentlich nur mit einer Beispieldatei sinnvoll zu beantworten, die für die ersten, sagen wir, 10 Iterationen verformelt ist: dann kann ich ernsthaft entscheiden, was Du sinnvollerweise machen könntest.
Schöne Grüße,
Michael
Anzeige
und FEHLER!!!
21.08.2016 16:06:14
Michael
Hi,
abgesehen von den Minimalanforderungen an die Ausgabe (von denen Du Dich leiten lassen solltest) ...
... kommt noch die Analyse der "Anhäufung" von Fehlern in Betracht.
Du hast in Deinem Studium sicher von "Fehlerrechnung" gehört; Abweichungen durch Rundungsfehler setzen sich fort, so daß sehr viele Berechnungen (10^6) mit 10 signifikanten Stellen zu einem weniger verläßlichen Ergebnis führen könn(t)en als 10^4 Berechnungen mit 15 signifikanten Stellen.
Ich würde Dir raten, zunächst mal diesen Hinweis ernsthaft durchzurechnen und in ein einleitendes Kapitel zu verfrachten: so weißt Du a), was passiert und kannst b) argumentieren, weshalb Du wie gerechnet hast.
Womöglich läuft das Ganze dann darauf raus, daß Du ab der n-ten Iteration nicht mehr EINE Flugbahn hast, sondern einen sich proportional mit dem entstehenden Fehler erweiternden FlugbahnBEREICH.
Physik ist nicht meine Stärke, aber vielleicht ist ja die eine oder andere Anregung hilfreich...
Schöne Grüße,
Michael
Anzeige
AW: VBA für numerische Flugbahnberechnung
19.08.2016 19:01:08
ChrisL
Hi Beat
Interessante Frage...
Persönlich finde ich VBA als Einstieg super. Python, vom Hörensagen auch gut.
Ob Excel das geeignete Mittel ist? Ich kann nicht einschätzen, wie kompliziert solche Berechnungen sind, aber ich nehme mal an seeehr komplex (Rocket Science) und präzise müssen sie sein.
Es gibt verschiedene Websites, welche sich mit den Limiten von Excel beschäftigen (gibt sicher noch besser Link Empfehlungen):
https://support.office.com/en-us/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3?ui=en-US&rs=en-US&ad=US&fromAR=1
Soweit ich weiss, arbeitet mit Fliesskomma
https://de.wikipedia.org/wiki/Gleitkommazahl
Generell ist Excel gut im Rechnen (Kalkulationsprogramm) und da du die Berechnung als Excel-Formeln grundsätzlich beherrschst, denke ich sollte der Übertrag in VBA innert nützlicher Frist machbar sein. Ob dies allerdings einen Unterschied bezüglich den Excel-Limitationen macht, müsstest du prüfen (ich habe Zweifel).
Wie gesagt, kann dies nicht genau einschätzen und bin definitiv kein Mathematiker.
Viel Erfolg, ich lasse dich Frage als offen gekennzeichnet.
cu
Chris
Anzeige
AW: VBA für numerische Flugbahnberechnung
19.08.2016 20:15:23
Beat
Hi Chris,
vielen Dank für die Antwort!
Also soo komplex sind die Rechnungen nicht, es muss lediglich mit einfachen Gravitationsformeln zu jedem Zeitpunkt die Bewegung bis zum nächsten berechnet werden. Der Knackpunkt ist eben diese Ungenauigkeit von Excel.Ich werd mir die Links nochmal anschauen, aber ich glaube auf diesen Seiten war ich schon mal unterwegs.
Gäbe es theoretisch die Möglichkeit in Excel die 1.000.000 Zeilen auszunutzen ohne, dass der Rechner abschmiert oder man 10 Stunden scrollt?
Wenn die Limitationen in VBA gleich sind dann muss ich wohl doch auf Phyton umsteigen...
Vielen Dank!
Gruß Beat
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige