Aufgabe Nr. 2: Astronomie - Unser Sonnensystem

Kleiner, kleiner Troll. Lesen, denken, schreiben.

hat ja schon jemand gepostet...sorry jungs *zudummbin*

Die Umlaufgeschwindigkeiten um die Sonne sind übrigens in der Aufgabe vorgegeben und ziemlich exakte Werte.
 
Also wenn ICH in Physik richtig zugehoert habe, dann ist eines der grundlegensten Prinzipen der Physik, Dinge erst einmal vereinfacht darzustellen und zu beschreiben und dann genauer.

Soviel dazu...
 
Die Planeten haben aber keine konstante geschwindigkeit.Sie werden je näher sie an der sonne sind beschleunigt und in den raum geschossen.dort werden sie durch die anziehungskraft der sonne gebremst.irgendwann sind sie zu langsam und die sonne zieht sie wieder an.dabei beschleunigen sie wieder.wir sprechen hier also nicht von einer gleichförmigen translation.also kann man auch die geschwindigkeit nicht GENAU angeben.(ka wie groß die abweichungen sind)
 
ich will euch superhirne ja nicht enttäuschen, aber wenn ich in physik aufgepasst hab, dann bewegen sich die planeten in eliptischen bahnen um die sonne.weiters sind sie in sonnennähe schneller...das heißt was ihr hier berechnet, mag vielleicht ne gute übung sein, hat mit der realität aber rein gar nix zu tun...

Die Planeten haben aber keine konstante geschwindigkeit.Sie werden je näher sie an der sonne sind beschleunigt und in den raum geschossen.dort werden sie durch die anziehungskraft der sonne gebremst.irgendwann sind sie zu langsam und die sonne zieht sie wieder an.dabei beschleunigen sie wieder.wir sprechen hier also nicht von einer gleichförmigen translation.also kann man auch die geschwindigkeit nicht GENAU angeben.(ka wie groß die abweichungen sind)


________________________________________________________

2. natürlich ist die Aufgabe nicht exakt, aber es ist eine Aufgabe
als Ausgangspunkt nehmen wir eben für die Planetenbahnen Kreise und für ihre Bewegung eine gleichförmige Geschwindigkeit an

8o
 
...

das meinte ich ja.is ne nette aufgabe und recht interessant.das ergebnis stimmt halt nicht.wollt ja nur mal posten weil ich auch mal was weiß *gacker*
 
Hast Du eigentlich meinen letzten Post mal gelesen?

Wie auch immer... Man muss, wenn man versucht die Natur zu beschreiben kleinere Unregelmaessigkeiten nunmal aussen vor lassen. Die von Dir beschriebenen (und sicherlich korrekten) Phaenomene haben so geringe auswirkungen, dass die fuer die Beschreibung der Planetenbahnen nahezu irrelevant sind.
Natuerlich hast Du recht, aber wuerde man alle die Phaenomene mit in die Formel der Bahn miteinbeziehen und beruecksichtigen, haetten wir es nicht mit der simplen Kreiswegformel sondern mit einer seeeeehr viel komplexeren Formel zu tun, mit der man nur sehr scchwer rechnen koennte...

Der Aufwand der fuer dieses geringe Plus an Genauigkeit noetig waere, stuende in keinem Verhaeltnis zur Genauigkeit!
 
Also wenn ich mich nich irre is die Bahn von Pluto schon sehr eliptisch... *klugscheiß*
Das ändert aber nichts daran, dass bisher noch keiner die Frage nach der Superkonjunktion beantwortet hat... :(
Also ist es auf jeden Fall gut, dass wir es nicht noch komplexer gestaltet haben. :)
mfg
Nornagest
 
Pluto ist da aber auch die Ausnahme...

Also mein Laptop mit 1.7 GHz hat damals 4 Tage durchgerechnet (Das Prog oben war das einzige was auf dem Rechner lief!) und er hat nichts rausbekommen. Ich glaube er war bei 8000 Jahren als ich gecancelld habe, weil ich den PC auch mal wieder nutzen wollte...
 
Habe da auch ein bisschen etwas ausprobiert und dann das programm bekommen:

Code:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>


#define pi 3.141592654
#define ae 149600000  //in km;; ae=astronomische einheit
#define tag 24*3600   //in sec.; ganzer tag
#define genauigkeit 1 //gibt an wie genau die winkel verglichen werden!

struct planeten
{
	float geschwindigkeit;
	float bahnradius;
};


struct planeten planeten[10];
float winkel[10];


int umlaufzeiten()
{
	float umfang[10],umlaufzeit[10];
	int i;
	for(i=1;i<=9;i++)
	{
		umfang[i]=2*pi*planeten[i].bahnradius*ae;
	}

	for(i=1;i<=9;i++)
	{
		umlaufzeit[i]=umfang[i]/(planeten[i].geschwindigkeit*tag);
	}

}

int winkels(int time) //time sollte in anz. Tage angegeben werden...
{
	int i; 
	printf("\n\n");

	for(i=1;i<=9;i++) 
	{
		winkel[i]=planeten[i].geschwindigkeit*3600*time*360*24/(2*pi*planeten[i].bahnradius*ae);
		while(winkel[i]>360)
		{
			winkel[i]-=360;
		}		
	}
}


int matchtest()
{

	FILE *matchtest;
	unsigned int i;
	int test;

	matchtest=fopen("match.txt","w");
	for(i=0;i<=10000000;i++)                //entspricht 27000 Jahren... keine Ahnung ob das genügt!
	{
		winkels(i);

		test=0;
		if(winkel[1]-winkel[2]<genauigkeit && winkel[1]-winkel[2]>-genauigkeit) test=1;
		if(test==1 && winkel[2]-winkel[3]<genauigkeit && winkel[2]-winkel[3]>-genauigkeit) test=2;
		if(test==2 && winkel[3]-winkel[4]<genauigkeit && winkel[3]-winkel[4]>-genauigkeit) test=3;
		if(test==3 && winkel[4]-winkel[5]<genauigkeit && winkel[4]-winkel[5]>-genauigkeit) test=4;
		if(test==4 && winkel[5]-winkel[6]<genauigkeit && winkel[5]-winkel[6]>-genauigkeit) test=5;
		if(test==5 && winkel[6]-winkel[7]<genauigkeit && winkel[6]-winkel[7]>-genauigkeit) test=6;
		if(test==6 && winkel[7]-winkel[8]<genauigkeit && winkel[7]-winkel[8]>-genauigkeit) test=7;
		if(test==7 && winkel[8]-winkel[9]<genauigkeit && winkel[8]-winkel[9]>-genauigkeit)
		{
			winkel[1]=winkel[2]=winkel[3]=winkel[4]=winkel[5]=winkel[6]=winkel[7]=winkel[8]=winkel[9];
		}


		if(winkel[1]==winkel[2] && winkel[2]==winkel[3]) //sind eh alle gleich, daher auch keine weiter bed. nötig!
		{
			fprintf(matchtest,"SUPERKONJUNKTION GEFUNDEN BEI TAG: %d\n",i);
			printf("SUPERKONJUNKTION GEFUNDEN!! TAG: %d\n",i);
		}
		
	//	if(i%10000=0) printf("Jetzt bei Tag: %d\n",i);
		
	}
	printf("---> ENDE <--- Tag %d erreicht",i);

	fclose(matchtest);
}




int main()
{



	planeten[1].geschwindigkeit = 47.8;  //MERKUR
	planeten[1].bahnradius=0.39;

	planeten[2].geschwindigkeit = 35;    //VENUS
	planeten[2].bahnradius=0.72;

	planeten[3].geschwindigkeit = 29.8;  //ERDE
	planeten[3].bahnradius=1;

	planeten[4].geschwindigkeit = 24.1;  //MARS
	planeten[4].bahnradius=1.52;

	planeten[5].geschwindigkeit = 13;    //JUPITER
	planeten[5].bahnradius=5.2;

	planeten[6].geschwindigkeit = 9.6;   //SATURN
	planeten[6].bahnradius=9.54;

	planeten[7].geschwindigkeit = 6.8;   //URANUS
	planeten[7].bahnradius=19.20;

	planeten[8].geschwindigkeit = 5.4;   //NEPTUN
	planeten[8].bahnradius=30.06;

	planeten[9].geschwindigkeit = 4.7;   //PLUTO
	planeten[9].bahnradius=39.6;


	umlaufzeiten(); //UMLAUFZEIT WIRD BERECHNE
	
	matchtest();

	getch();
}
 
also ich habs mir nich alles durchgelesen, sondern nur die ersten 4 - 6 ueberlegungen und muss sagen das die aufgabe sinnlos ist, weil:
1. bewegen sich planeten nicht auf kreisbahnen (daher Jahreszeiten)
2. sind diese elipsenbahnen gegeneinander geneigt. damit ist das ganze nicht soo leicht berechenbar!
aber die idee is schon nice...
sry 4 kritik, aber das ist eher konstruktiv gemeint...

Needle
edit:
k, hab nun auch alles durchgelesen und gemerkt das euch das sch***-egal ist :))
also sry 4 spam....
 
Hi!

Entweder habe ich diese Aufgabe nicht ganz richtig gelöst,
oder haben sie die anderen nur umständlich gelöst.
Bei mir ist das Prog nur sehr kurz und es rechnet die Zeit auch
schnell aus.
Seht lieber selbst mal nach.

Hier der Code:
Code:
//Astronomie - Unser Sonnensystem
//by Blackvirus

//Dieses Programm berechnet die Abstände der SUPERKONJUNKTION

//Als SUPERKONJUNKTION wird das "Phänomen" bezeichnet, wo alle Planeten
//unseres Sonnensystems in einer Reihe auf einer Seite der Sonne stehen

#include <stdio.h>
#include <conio.h>

#define AE 149600000			//Astronomische Einheiten - 149.600.000 km
#define PI 3,141592653589		//Die Zahl PI


void main()
	{
	double entfernung[]={0.39,0.72,1,1.52,5.2,9.54,19.2,30.06,39.6};	//Entfernungen von Sonne
	double geschwindigkeit[]={47.8,35,29.8,24.1,13,9.6,6.8,5.4,4.7};	//Geschwindigkeiten in km/s
	double umfang[9];													//Umfang der Bahn der Planeten
	double umlaufszeit[9];												//Umlaufszeit eines Planeten in Sekunden
	double umlaufszeitpluto;											//Umlaufszeit von Pluto
	int richtig=0;													
	int i=0,j=0,k=0;
	
	printf("\tB E R E C H N U N G   D E R   A B S T %c N D E   Z W I S C H E N\n\t\t   S U P E R K O N J U N K T I O N E N\n\n\n",142);

	for(i=0;i<9;i++)
		{
		umfang[i]=entfernung[i]*149600000*2*PI;			//Berechnung der Umfänge der Bahnen
														//Einheit =km*2*PI=km
		}
	for(i=0;i<9;i++)
		{
		umlaufszeit[i]=(umfang[i]/geschwindigkeit[i]);	//Berechnung der Umlaufszeiten
														//Einheit =(km/(km/s))/10=s
		}
	umlaufszeitpluto=umlaufszeit[9];							
	while(richtig==0)									//Schleife wird solange ausgeführt,
														//bis eine Periode gefunden wird
		{
		umlaufszeitpluto+=umlaufszeit[9];				//Umlaufszeit von Pluto wird dazugezählt
		richtig=1;										//Periode wird auf richtig gesetzt
		k=0;
		while(richtig==1 && k<8)						//Solange sich umlaufszeitpluto "glatt" 
														//durch umlaufszeit der Planeten teilen lässt
														//oder k kleiner als 8 ist (9.Planet = Pluto)
			{
			if((long)umlaufszeitpluto%(long)umlaufszeit[k]!=0)	richtig=0;	//Vergleich mit Umlaufszeiten
																			//anderer Planeten,richtig=0 --> keine Periode
			k++;
			}
		}
	printf("PERIODE GEFUNDEN!!");
	umlaufszeitpluto/=86400;				//Umwandlung von s in Tage
	umlaufszeitpluto/=365;					//Umwandlung von Tage in Jahre
	printf("\nEine SUPERKONJUNKTION findet ca. alle %lf Erdjahre statt!!",umlaufszeitpluto);
	getch();
	}

MfG

Blackvirus
 
Wenn ich deinen Code richtig verstanden habe, geht er er davon aus, daß die Planeten sich an derselben Stelle wiedertreffen. (wegen n*Umlaufzeit von Pluto). Die können sich aber auch ganz woanders begegnen. Dieser Fall wird bei deinem Beispiel nicht berücksichtigt.
 
@Damien
Ich habs jetzt ausgebessert.
Jetzt wird nicht die Strecke der ganzen Umrundung
verglichen und dazugezählt, sondern nur die Strecke
die in einer Sekunde zurückgelegt wird (Geschwindigkeit)
Der Code ist nicht wirklich länger geworden.
Sieh dir den Code am besten selbst an

Hier der Code:
Code:
//Astronomie - Unser Sonnensystem
//by Blackvirus

//Dieses Programm berechnet die Abstände der SUPERKONJUNKTION

//Als SUPERKONJUNKTION wird das "Phänomen" bezeichnet, wo alle Planeten
//unseres Sonnensystems in einer Reihe auf einer Seite der Sonne stehen

//Berechnung: Bei jedem Schleifendurchgang wird die Geschwindigkeit
//			  der jeweiligen Planeten zu einem Feld dazugezählt (somit auch 
//			  zurückgelegte Strecke). Bei jedem Schleifendurchgang wird
//			  geprüft, ob sich die Strecke des langsamsten Planeten (Pluto)
//			  "glatt" durch die Strecken der anderen Planeten teilen lässt.
//			  Wenn dies der Fall ist, haben wir eine SUPERKONJUNKTION


#include <stdio.h>	
#include <conio.h>

#define AE 149600000			//Astronomische Einheiten - 149.600.000 km
#define PI 3,141592653589		//Die Zahl PI


void main()
	{
	double entfernung[]={0.39,0.72,1,1.52,5.2,9.54,19.2,30.06,39.6};	//Entfernungen von Sonne
	double geschwindigkeit[]={47.8,35,29.8,24.1,13,9.6,6.8,5.4,4.7};	//Geschwindigkeiten in km/s
	double umfang[9];													//Umfang der Bahn der Planeten
	double umlaufszeit[9];												//Umlaufszeit eines Planeten in Sekunden
	double umlaeufe[9];
	double zeit;
	int richtig=0;													
	int i=0,j=0,k=0;
	
	printf("\tB E R E C H N U N G   D E R   A B S T %c N D E   Z W I S C H E N\n\t\t   S U P E R K O N J U N K T I O N E N\n\n\n",142);

	for(i=0;i<9;i++)
		{
		umfang[i]=entfernung[i]*149600000*2*PI;			//Berechnung der Umfänge der Bahnen
														//Einheit =km*2*PI=km
		}
	for(i=0;i<9;i++)
		{
		umlaufszeit[i]=(umfang[i]/geschwindigkeit[i]);	//Berechnung der Umlaufszeiten
														//Einheit =(km/(km/s))/10=s
		}
	for(i=0;i<9;i++)
		{
		umlaeufe[i]=geschwindigkeit[i];					//Berechnung der zurückgelegten Strecke
		}												//durch Addierung der Geschwindigkeit
	while(richtig==0)									
														
		{
		for(i=0;i<9;i++)
			{
			umlaeufe[i]+=geschwindigkeit[i];			//Geschwindigkeit wird bei jedem Durchlauf addiert
			}
		richtig=1;										
		k=0;
		while(richtig==1 && k<8)															
			{
			if((long)umlaeufe[9]%(long)umlaeufe[k]!=0)	richtig=0;		//Zurückgelegte Strecke von Pluto wird
			k++;														//mit den anderen Strecken verglichen
			}														
		}
	printf("PERIODE GEFUNDEN!!");
	zeit=umlaeufe[9]/geschwindigkeit[9];			//Berechnung der Sekunden (Zeit zw. Superkonjunktionen)
	zeit/=86400;									//Umwandlung in Tage			
	zeit/=365;										//Umwandlung in Jahre
	printf("\nEine SUPERKONJUNKTION findet ca. alle %lf Erdjahre statt!!",zeit);
	getch();
	}

Ich hoffe so stimmt es jetzt!

MfG

Blackvirus
 
Jetzt sehe ich die Position der Planeten nicht mehr. Jetzt wird ja effektiv nur noch überprüft, ob der zurückgelegte Weg der Planeten ohne Rest im Weg von Pluto unterzubringen ist. Über die Stellung der Planeten zueinander wird gar nichts mehr ausgesagt.
 
Wenn ich das richtig verstehe, wird jetzt pro Schritt pro Planet immer der Weg addiert, der pro Sekunde zurückgelegt wird. Dann wird berechnet ob für (i = 1 bis 8) umläufe[9] mod umläufe = 0 ist. Also ob sich der Weg des Pluto glatt durch die Wege der anderen Planeten teilen lässt. Wenn jetzt aber der Pluto sagen wir 90km zurückgelegt hat und die Erde 30km, ginge die Rechnung zwar auf, aber sie sagt nichts darüber aus, in welcher Position die Planeten zueinander stehen, also ob sie von der Sonne aus gesehen in einer Linie stehen oder nicht.
 
Zurück
Oben