-
#1156
A fénytörés képlete a sin1/sin2 = v1/v2 ami annyit jelent, hogy a beesési szöget szinuszainak aránya egyenlő a közegbeli sebességek arányával.
Számoljuk ki, igaz-e ez a gravitációra?
fenyut : 3.669205047179672400000000000000e-007
szinuszok aranya : 1.000000000000008200000000000000e+000
sebessegek aranya : 1.000000000000008400000000000000e+000
fenyut : 3.669205047179672800000000000000e-009
szinuszok aranya : 1.000000000000000200000000000000e+000
sebessegek aranya : 1.000000000000000200000000000000e+000
fenyut : 3.669205047179672400000000000000e-007
szinuszok aranya : 1.000000000083878500000000000000e+000
sebessegek aranya : 1.000000000083878500000000000000e+000
fenyut : 3.669205047179672800000000000000e-009
szinuszok aranya : 1.000000000000838700000000000000e+000
sebessegek aranya : 1.000000000000838900000000000000e+000
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main(int argc, char* argv[]) {
long double c=2.99792458e8;/* fenysebesseg */
long double m=5.9e24;/* Fold tomege */
long double g=6.674e-11;/* gravitacios allando */
long double r=6.374e6;/* Fold sugara */
long double dt=0.0,cx=0.0,cy=0.0,cx2=0.0,cy2=0.0,Rs=0.0,sinar=0.0,car=0.0,
t=0.0,a=0.0,t2=0.0,c1=0.0,c2=0.0,A=0.0,sin1=0.0,sin2=0.0,s=0.0,dr=0.0;
long double dr2=1.1e2;/* kezdo deltaR ,majd csokkentve mindig szazadara */
//m*=1e4;/*nagyobb tomeggel szamolva pontosabb az eredmeny a kis szamok miatt*/
for(int i=0;i<2;i++) {
dr=dr2;/* ennyit utat tesz meg a feny, majd ez modosul a gyorsulas miatt */
dt=dr/c;/* a feny ennyi ido alatt teszi meg dr-t */
/* feny sebessegvektor */
cx=c;/* 45 fokban a Fold felszin fele megy a feny */
cy=-c;/* lefele */
t=sqrtl(cx*cx+cy*cy);/* normalizalas c-re */
cx/=t;
cy/=t;
cx*=c;
cy*=c;
cx2=cx;cy2=cy;/* gyorsulas utani sebessegvektor lesz ebben */
a=-m*g/(r*r);/* newtoni gyorsulas, nagy a tavolsag a tomegtol, kozelitoleg jo ez is, minusz mert lefele hat */
cy2+=a*dt;/* csak lefele, a Fold most X-ben vegtelen sik, a gravitacio csak Y-ban hat */
dr=cy*dt+a*0.5*dt*dt;/* dr ujraszamolva a gyorsulas miatt, csak Y-ban */
/* dt ido alatt ekkora utat tett meg a feny */
printf("fenyut : %.30Le \n",dt);
t=sqrtl(cx*cx+cy*cy);/* sebessegvektorok hossza */
t2=sqrtl(cx2*cx2+cy2*cy2);/* a masik */
sin1=cx/t;/* szogek szinusza a sebessegekbol (szogek a merolegeshez) sin(a)=x/t */
sin2=cx2/t2;
sinar=sin1/sin2;/* szinuszok aranya */
printf("szinuszok aranya : %.30Le \n",sinar);
Rs=m*g*2.0/(c*c);/* schwarzschild radiusz */
/* oszto a schwarzschild metrikabol, egyenlo a gravitacios idodilatacio mertekevel */
/* ez aranyos a feny sebessegenek a csokkenesevel, mivel a fenyora jarasanak az utemet */
/* a feny sebessege hatarozza meg */
c1=c/sqrtl(1.0-(Rs/r));/* kozegbeli(vakuum) fenysebesseg r tavolsagban */
c2=c/sqrtl(1.0-(Rs/(r-dr)));/* es dr-el lejjebb */
car=c1/c2;//sebessegek aranya
printf("sebessegek aranya : %.30Le \n",car);
dr2*=1e-2;/* kisebb deltaR */
}
getch();
return 0;
}