<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Simulation funktioniert bei grossen Zahlen nicht mehr]]></title><description><![CDATA[<p>Hi,<br />
ich schreibe gerade meine Facharbeit und hänge gerade ein einem Problem auf welches ich mir keinen Reim machen kann.<br />
Ich habe hier eine Struktur:</p>
<pre><code class="language-cpp">double gamma=6.6742e-11;
struct Satellite { 
	double xlenght; 
	double ylenght; 
	double zlenght;
	double vx; 
	double vy;
	double vz;
	double ax; 
	double ay;
	double az;
	double m;
}P1, P2, P3;
</code></pre>
<p>Wenn ich jetzt das folgende in die Daten einlese:</p>
<pre><code class="language-cpp">P1.vy=29800;
	P1.vx=0;
	P1.xlenght=1.496e11;
	P1.ylenght=0;
	P1.zlenght=0;
	P1.m=5.9723e24;
	P1.ax=0;
	P1.ay=0;

	P3.m=1.9884e30;
	P3.xlenght=0;
	P3.zlenght=0;
	P3.ylenght=0;
	P3.vx=0;
	P3.vy=0;
</code></pre>
<p>welches die Erde und die Sonne repräsentiert, fliegt die Erde (P1) einfach weg.<br />
Die Funktion zur Berechnun sieht folgendermassen aus:</p>
<pre><code class="language-cpp">void sphere12(float secperframe) {
	double r = sqrt(P1.xlenght*P1.xlenght+P1.ylenght*P1.ylenght);
	P1.ax = -gamma*(P3.m/(r*r*r))*P1.xlenght;
	P1.ay = -gamma*(P3.m/(r*r*r))*P1.ylenght;

	P1.vx = P1.vx + P1.ax*secperframe;
	P1.vy = P1.vy + P1.ay*secperframe;

	P1.xlenght = P1.xlenght + P1.vx*secperframe;
	P1.ylenght = P1.ylenght + P1.vy*secperframe;
}
</code></pre>
<p>Wenn ich nun aber die folgenden Werte einsetze (ist aus unserem Physikbuch wo ein Satellit um die Erde kreist)</p>
<pre><code class="language-cpp">P1.vy=3070;
	P1.vx=0;
	P1.xlenght=4.22e7;
	P1.ylenght=0;
	P1.zlenght=0;
	P1.m=0;
	P1.ax=0;
	P1.ay=0;

	P3.m=5.9723e24;
	P3.xlenght=0;
	P3.zlenght=0;
	P3.ylenght=0;
	P3.vx=0;
	P3.vy=0;
</code></pre>
<p>Wahrscheinlich steh ich einfach auf dem Schlauch aber ich sehe den Fehler nicht. Kann es am Datentyp liegen? Habe ich eigentlich ausgeschlossen, da dieser mit 13 Nachkommastellen rechnet oder so.<br />
Gruss</p>
<p>Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233681/simulation-funktioniert-bei-grossen-zahlen-nicht-mehr</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 19:16:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233681.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Feb 2009 15:48:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sat, 07 Feb 2009 15:48:15 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich schreibe gerade meine Facharbeit und hänge gerade ein einem Problem auf welches ich mir keinen Reim machen kann.<br />
Ich habe hier eine Struktur:</p>
<pre><code class="language-cpp">double gamma=6.6742e-11;
struct Satellite { 
	double xlenght; 
	double ylenght; 
	double zlenght;
	double vx; 
	double vy;
	double vz;
	double ax; 
	double ay;
	double az;
	double m;
}P1, P2, P3;
</code></pre>
<p>Wenn ich jetzt das folgende in die Daten einlese:</p>
<pre><code class="language-cpp">P1.vy=29800;
	P1.vx=0;
	P1.xlenght=1.496e11;
	P1.ylenght=0;
	P1.zlenght=0;
	P1.m=5.9723e24;
	P1.ax=0;
	P1.ay=0;

	P3.m=1.9884e30;
	P3.xlenght=0;
	P3.zlenght=0;
	P3.ylenght=0;
	P3.vx=0;
	P3.vy=0;
</code></pre>
<p>welches die Erde und die Sonne repräsentiert, fliegt die Erde (P1) einfach weg.<br />
Die Funktion zur Berechnun sieht folgendermassen aus:</p>
<pre><code class="language-cpp">void sphere12(float secperframe) {
	double r = sqrt(P1.xlenght*P1.xlenght+P1.ylenght*P1.ylenght);
	P1.ax = -gamma*(P3.m/(r*r*r))*P1.xlenght;
	P1.ay = -gamma*(P3.m/(r*r*r))*P1.ylenght;

	P1.vx = P1.vx + P1.ax*secperframe;
	P1.vy = P1.vy + P1.ay*secperframe;

	P1.xlenght = P1.xlenght + P1.vx*secperframe;
	P1.ylenght = P1.ylenght + P1.vy*secperframe;
}
</code></pre>
<p>Wenn ich nun aber die folgenden Werte einsetze (ist aus unserem Physikbuch wo ein Satellit um die Erde kreist)</p>
<pre><code class="language-cpp">P1.vy=3070;
	P1.vx=0;
	P1.xlenght=4.22e7;
	P1.ylenght=0;
	P1.zlenght=0;
	P1.m=0;
	P1.ax=0;
	P1.ay=0;

	P3.m=5.9723e24;
	P3.xlenght=0;
	P3.zlenght=0;
	P3.ylenght=0;
	P3.vx=0;
	P3.vy=0;
</code></pre>
<p>Wahrscheinlich steh ich einfach auf dem Schlauch aber ich sehe den Fehler nicht. Kann es am Datentyp liegen? Habe ich eigentlich ausgeschlossen, da dieser mit 13 Nachkommastellen rechnet oder so.<br />
Gruss</p>
<p>Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659577</guid><dc:creator><![CDATA[Xbelt2]]></dc:creator><pubDate>Sat, 07 Feb 2009 15:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sat, 07 Feb 2009 17:42:55 GMT]]></title><description><![CDATA[<p>mh ich meine das mit den satteliten ist eine formel die mit satteliten und raketen funktioniert nicht aber mit grösseren sachen (z.b. planet oder sonne) ich weis es nicht so genau, aber ich meien für planeten gibts eine andere formel</p>
<p>kann aber auch sein dass die zahlen für standart c++ zu klein werden...<br />
(e-11 ist ja noch ok, aber dann auch noch einen kubikradius im nenner...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659631</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 07 Feb 2009 17:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sat, 07 Feb 2009 17:59:53 GMT]]></title><description><![CDATA[<p>ne also die formel stimmt^^<br />
die ist einfach von der Gravitation abgeleitet<br />
Ich weiss auch nicht wegen der grösse der Zahlen hast du da eine idee was man machen könnte?<br />
Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659640</guid><dc:creator><![CDATA[xbelt2]]></dc:creator><pubDate>Sat, 07 Feb 2009 17:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sat, 07 Feb 2009 18:39:52 GMT]]></title><description><![CDATA[<p>du könntest dir eventuell mal eine bigfloat klasse oder ähnliches holen und statt double diese bigfloats benutzen...</p>
<p>oder du gehst mal mit dem debugger durch</p>
<p>ich gehe mal davon aus dass das ganze mit grafik ist, du könntest als kontrollausgabe (abgekapselt mit #ifdef usw) nebenbei auf der konsole machen wo du bei jedem durchlauf alle werte ausgibst dann siehst du ja wo der hase hinläuft...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659671</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 07 Feb 2009 18:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 10:29:17 GMT]]></title><description><![CDATA[<p>Ich habe da nochmal eine Frage. Kannst du mir zufällig nicht gerade einen Link zu eine Bigfloat KLasse schicken? Denn alle die ich gefunden habe, unterstützen keine Wurzeln und Potenzen, was ich aber unbedingt brauche.<br />
Ich hoffe ohr könnt mir helfen danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659852</guid><dc:creator><![CDATA[Xbelt2]]></dc:creator><pubDate>Sun, 08 Feb 2009 10:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 10:49:19 GMT]]></title><description><![CDATA[<p><a href="http://www.gmplib.org/" rel="nofollow">http://www.gmplib.org/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659864</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 08 Feb 2009 10:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 17:07:21 GMT]]></title><description><![CDATA[<p>vielen dank ich baue mir gerade die libs zusammen^^<br />
Für alle die dies später lesen, hier ein gutes Tut:<br />
<a href="http://suchideas.com/journal/2007/07/installing-gmp-on-windows/" rel="nofollow">http://suchideas.com/journal/2007/07/installing-gmp-on-windows/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660066</guid><dc:creator><![CDATA[Xbelt2]]></dc:creator><pubDate>Sun, 08 Feb 2009 17:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 17:26:55 GMT]]></title><description><![CDATA[<p>Also ich habs jetzt zum laufen gebracht nur habe ich noch ein Problem.<br />
Ich arbeite mit VC++ 2008EE. Da läuft es aber nicht. ich muss es mit gcc kompilieren.<br />
Nun wollte ich fragen, ob ich meine Struktur und Funktionen in eine andere Datei schreiben kann und diese dann mit gcc kompilieren und die kompilierte datei dann in vc++ verwenden?<br />
Danke</p>
<p>Lukas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660075</guid><dc:creator><![CDATA[Xbelt2]]></dc:creator><pubDate>Sun, 08 Feb 2009 17:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 17:36:25 GMT]]></title><description><![CDATA[<p>habe gerade gemerkt, dass ich mich gar nicht angemeldet habe^^<br />
nun habe ich aber noch das Problem, dass ich die gmp datentypen in float oder double konvertieren muss, da ogre3d nicht mit gmp umgehen kann^^.<br />
Ich hoff ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660081</guid><dc:creator><![CDATA[Xbelt]]></dc:creator><pubDate>Sun, 08 Feb 2009 17:36:25 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 18:40:47 GMT]]></title><description><![CDATA[<p>Ein allgemeiner Tipp für solche Simulationen: Man skaliert einfach die Größen, so, dass man in einem vernünftigen Bereich für die Genauigkeit der Fließkommazahlen ist. Im Beispiel vom OP kann man das beispielsweise machen, indem man die Erdmasse gleich 1 setzt, ebenso den Abstand. Die Anfangsgeschwindigkeit könnte man ebenfalls auf 1 setzen, es ist jedoch praktischer, dem Zeitschritt die Länge 1 zu geben und dann mit Hilfe der reskalierten Länge den Wert der Anfangsgeschwindigkeit in diesem Einheitensystem auszurechnen. Der Wert der Gravitationskonstante muss dann ebenfalls umgerechnet werden.</p>
<p>Eine schöne Alternative ist es auch, den Wert der Gravitationskonstanten auf 1 zu setzen und dann damit die anderen Größen auszudrücken, so spart man sich diese unsinnigen Multiplikationen in jedem Rechenschritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660120</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 08 Feb 2009 18:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Simulation funktioniert bei grossen Zahlen nicht mehr on Sun, 08 Feb 2009 18:44:59 GMT]]></title><description><![CDATA[<p>Das habe ich mir auch überlegt, aber es soll so sein, dass der benutzer die daten eingibt. Der Konfigurator ist schon da. Sonst muss ich halt die Umrechnungen erst zur Programmlaufzeit oder vielleicht beim konfigurator machen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1660122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660122</guid><dc:creator><![CDATA[Xbelt]]></dc:creator><pubDate>Sun, 08 Feb 2009 18:44:59 GMT</pubDate></item></channel></rss>