æãæ¢ãã¦èªåã ãåããã¨ãã¯ç©ççã«ããããã¦ãæã¯èªåãªã®ããæã£ããã¤ãã¯èªåãªã®ããã¨ãããããçç¾ãã§ã¾ããããããæé空éã®ããéãããé åã§æéã®é²ã¿ãéããªããã¨ãããã¨ã«ããã°ãªãã¨ããªãããã§ãã
æ空éã§æ¥åã§è¡¨ãããé åã§ä¾ãã°æéã1000åã®éãã§é²ãã¨ãã¾ãããã®çµçã¯ã¯ãããã£ãªãä¸å¿ã«ã¶ãã¼ã£ã¨åºãã£ã¦ããã°ããçµã£ã¦ãæã¯åãåºããã¨ãããã£ãªã®è¨èã¨å
±ã«å縮ãã¾ããä¸ã«ãããã£ãªã®ä¸»è¦³æéã¯ï¼ç§ã ãã©ãå¤ããè¦ãã¨5/1000ç§ããçµããªããã§ããã®çµçãã®ãªã®ãªæ¿å¤ªéã®æåã§çµããããã«ãã¦ãã¤ããæããã°ãçµçå
é¨ã§ã¯å¤ã®1000åã®ã¹ãã¼ãã§ãã¤ããé£ãã§æ¿å¤ªéã®ç®ã®åã¾ã§è¡ããããã§çµçãåºã¦æ®éã«é£ãã§æ¿å¤ªéã«åºããã¾ãããã§ãã¯ã¡ã¤ãã ãï¼æ¿å¤ªéããè¦ãã°çªç¶ç®ã®åã«ãã¤ããç¾ãã¦é£ãã§ããããã«è¦ãã¾ãã
ãã ãï¼çµçã®ä¸ã«å
¥ãããã¨ç¸æãåãã¹ãã¼ãã§åããã®ã§æææ»æã§ããç¡é§ç¡é§ã©ãã·ã¥ã¯ã§ãã¾ãããä»®ã«çµçãè¶ãã¦ãã³ããåºããããå¤ã¯æéãé²ã¾ãªãã®ã§æ³ãåããªããªã身åãã¨ãã¾ãããã¨ããããã§ç¡é§ç¡é§ã¯ç¡çã ãã©ãã§ãã¯ã¡ã¤ãã ï¼ã¨ãæ¿å¤ªéã®çä¸ã«çµçã®å¢çãæã£ã¦æ¥ã¦ä¸ã§ãã¼ããã¼ã©ã¼ãè½ã¨ãããªã©ã¯åºæ¥ã¾ããä¸é¢è°å¡ã¸ã®ããããã¯åºæ¥ã¾ããã
çµçãã©ãè¦ãããããã£ãªã®è¦ç¹ã ã¨ãå¤ããæ¥ãå ã¯å ¨ã¦èµ¤æ¹å¤ä½ãã¦ãã®ã§ã太é½å ã®ãã¡å¤ã®ç©ä½ã«å½ãã£ãγç·ãªã©ãå¯è¦å ã¨ãªã£ã¦è¦ãããã¨ã«ãªãã¾ãããããã£ãæ³¢é·ã®åå°ç¹æ§ã¯å¯è¦å ã¨ç°ãªãã®ã§ãå¤ã®ç©ä½ã¯å¤ãªè²ã«è¦ãããã¨ã«ãªãã¾ããä¸æ¹å é¨ã®ç©ä½ã¯ãå¤ã®Î³ç·ãªã©ãå¯è¦å ã¨ãªã£ã¦å ¥ã£ã¦æ¥ããã®ãå¯è¦å ã¨ãã¦åå°ããç®ã«å ¥ããã¨ã«ãªãã¾ããå¯è¦å ã®åå°ãå¯è¦å ã¨ãã¦è¦ãã®ã§è²ã¯ãã¾ãå¤ããã¾ãããå¤ããå ¥ã£ã¦ããå ã®ã¹ãã¯ãã«ã¯å¤ªé½å ã®çæ³¢é·å´ã«ãããã®ã§ãè²æ¸©åº¦ãå¤åãã¦è²ä»ç §æã§ç©ãè¦ãæãã«ãªãã¾ããã¨ããããã§ãã¢ãã¡ã®æåã¯ã ãããæ£ãããã¨ã«ãªãã¾ããhttp://www.youtube.com/watch?v=YetEjfsVMW0
å¤ããè¦ãã¨ãçµçã¯ä¸ç¬ã§ç¾ãã¦æ¶ããã®ã§ã¾ãè¦ãã¾ãããè¦ããã¨ãã¦ããããç®ã§è¿½ããã¨ãã§ããããè²´æ§ãï¼è¦ã¦ãããªãï¼ãã¨è¨ããã¾ãã
ã§ã¯å®éã«ããããæ空ã§ç©ä½ãã©ãããéåããããè¨ç®ãã¦ã¿ã¾ããã¾ãçµçå
é¨ã§æéã®ã¢ããµã·ã1/10ã«ãªããå¢çã§ã¯æ¥æ¿ãã¤ãªãããã«ï¼ã«ãã©ããããªé©å½ãªé¢æ°(tanh)ã使ã£ã¦æ空ãè¨å®ããéåã®æ¹ç¨å¼ã解ãã¾ãã
éãç·ãå
ã®çµè·¯ã§ããå
é¨ã§ã¯å¤ã®10åéã§é²ã¿ãçµçãåºãã¨å¤ã®å
éã§ããã¿ã¾ããããã¾ã§ã¯OKãç·ã®ç·ã¯å
éããé
ãé度ã§æãããã¤ãã§ããçµçã«è¿ã¥ãã¨ã¨ãã«æ¥æ¿ã«å éããå¤ã«åºãã¨å
éã§é£ãã§ããã¾ããããã§ã¯æ¿å¤ªéã«å½ãã£ã¦æ ¸ççºãã¦ãã¾ãã¾ããå¼·ããã
ç·ã®ç·ã¯çµçãåºç¾ããé åã«ãã£ãéæ¢ãã¦ããç©ä½ã®è»è·¡ã示ãã¦ãã¾ããçµçã«å¼¾ãé£ã°ããã¦å
é¨ã«å
¥ããã«å
éã§çæ£ãã¦ããã¾ããçµçã¯ãã£ãªãä¸å¿ã«çºçããã®ã§ãããã§ã¯ãã£ãªãçæ£ãã¦ãã¾ãã¾ããããããã ãã
ã¨ããããã§ã天ä¸ãã§ããä»åº¦ã¯æéã®ã¢ããµã·ã1/10ã«ãã¦ãåæã«ç©ºéã®ã¢ããµã·ã10åã«ãã¦ã¿ã¾ãã
ä»åº¦ã¯ç·ã®ç·ãçæ£ããã«ãã¿ã¾ãããéããã¤ãã®ç·ã§ãããããã¯ããã®ç®è«è¦ã©ããé£ãã§ãã¾ãããã§ãããã§ããã
ãããï¼ç©ºéã®ã¢ããµã·ã10åã«ããã¨ãããã¨ã¯ãä½ã10åã«å·¨å¤§åããªãã¨ãããªããã¨ã«ãªãã¾ããç·ã®ç·ã¯ããã¾ã§æ空ããåããåã§ãã£ã¦ãååå士ã®åçºã¯å¥ã«åãããã¨ã«ãªãã¾ãããã¾ããããªãã¨å
å§ã§çæ£ã§ããæéã1000åéã«ãããã¨ããã£ãã1000åã«å·¨å¤§åãåå¾1kmã»ã©ã®çµçãå¿
è¦ã§ããããã1000åç¨åº¦ãªãç´ ã®ã¹ã¿ã¼ãã©ããã§å¯¾å¿ããããã§ããããããã ãã
ã¸ã§ã¸ã§ã®å¥å¦ãªåéº ç¬¬3é¨ ã¹ã¿ã¼ãã¹ãã¯ã«ã»ã¤ãã¼ã¹ DVD-BOX
- åºç社/ã¡ã¼ã«ã¼: è§å·ã¨ã³ã¿ãã¤ã³ã¡ã³ã
- çºå£²æ¥: 2007/05/25
- ã¡ãã£ã¢: DVD
- ã¯ãªãã¯: 46å
- ãã®ååãå«ãããã° (33件) ãè¦ã
以ä¸ã¯æ¹ç¨å¼ã解ãã³ã¼ã
ãã ããããããæ空ãä½ãã«ã¯å¯¾å¿ãã質éãé
ç½®ããªãã¨ãããªããã©ããããã対å¿ããé
ç½®ãåå¨ããã®ãç¥ãã¾ããããã®è¾ºã¯èãã¦ã¾ãããã ããèå¯ãã¦ãããªãããªãã¢ã¤ã³ã·ã¥ã¿ã¤ã³æ¹ç¨å¼ã解ããã¨ã«ãªãã¾ãã
// Calc Geodecics: The World #include <stdio.h> #include <stdlib.h> #include <math.h> /* Lagrangean: L= gxx(x(l),t(l)) vx^2 + gtt(x(l),t(l)) vt^2 vx = dx(l)/dl vt = dt(l)/dl Euler-Lagrange Eq. d(2 vx gxx)/dl = vx^2 gxx,x + vt^2 gtt,x d(2 vt gtt)/dl = vx^2 gxx,t + vt^2 gtt,t gtt = f(x,t) gxx = h = -1/f(x,t) ax = d vx/dl = -(0.5 hx vx vx + ht vx vt)/h at = d vt/dl = -(0.5 ft vt vt + fx vx vt)/f hx = fx /f^2 ht = ft /f^2 */ // Edge sharpness in tanh(SH*x) #define SH 10.0 //accerelation factor inside #define WFAC 10.0 //time duration #define CFAC 10.0 void c_acc(double x, double t, double vx, double vt, double *ax, double *at, double *dsdl) { #if 1 //ver.2 double r2 = (1- x*x - t*t/CFAC/CFAC)*SH; double f = 1.0+ (WFAC-1.0) * 0.5*(1+tanh(r2)); double r2x = -SH*2*x; double r2t = -SH*2*t/CFAC/CFAC; double fr2 = (WFAC-1.0)*0.5/(cosh(r2)*cosh(r2)); double fx = fr2 *r2x; double ft = fr2 *r2t; double h = -1.0/f; double hx = fx/(f*f); double ht = ft/(f*f); *ax = -(0.5* hx* vx*vx + ht*vx*vt)/h; *at = -(0.5* ft* vt*vt + fx*vx*vt)/f; *dsdl = sqrt(f*vt*vt + h*vx*vx); #else //ver.1 double r2 = (1- x*x - t*t/CFAC/CFAC)*SH; double f = 1.0+ (WFAC-1.0) * 0.5*(1+tanh(r2)); double r2x = -SH*2*x; double r2t = -SH*2*t/CFAC/CFAC; double fr2 = (WFAC-1.0)*0.5/(cosh(r2)*cosh(r2)); double fx = fr2 *r2x; double ft = fr2 *r2t; *ax = -0.5* fx *vt*vt; *at = -(fx*vt*vx + 0.5*ft*vt*vt)/f; *dsdl = sqrt(f*vt*vt - vx*vx); #endif } int main(int argc, char **argv) { int i; if (argc!=4) { fprintf(stderr, "world x t v\n"); exit(1); } double x = atof(argv[1]); double t= CFAC*atof(argv[2]); double r2 = (1- x*x - t*t/CFAC/CFAC)*SH; double f = 1.0+ (WFAC-1.0) * 0.5*(1+tanh(r2)); double vt = 1.0; double vx = atof(argv[3])*vt*sqrt(f);// initial verocity in unit of c double tobj=0.0; double to_last= 0.0; double lastx=-1000; double lastt=-1000; while(1) { #define INC 0.00001 #define TTIC (CFAC*0.1) double ax, at, aa, vv, ds_dl; double dl = INC; vv = sqrt(vx*vx+vt*vt); vx/=vv; vt/=vv; c_acc(x,t,vx,vt,&ax,&at, &ds_dl); aa=sqrt(ax*ax+at*at); if (aa*dl > INC) dl = INC/aa; x += dl*vx; t += dl*vt; tobj += ds_dl * dl; vx += dl*ax; vt += dl*at; if ( fabs(x -lastx)> 1e-2 || fabs(t-lastt)>1e-2) { printf("%f %f %f",x,t, tobj); if (tobj> to_last+TTIC) { // tics for objective time printf(" T"); to_last+=TTIC; } printf("\n"); lastx= x; lastt = t; } if ( fabs(x)>3.0 || t > CFAC*3) break; } printf("\n"); }