ФЭНДОМ


Главная | Описание языка | FXD | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Форум

Движение света в гравитационном поле Править

Анализ задачи с позиций классической теории Ньютона Править

Движение света в поле тяготения солнца можно рассматривать с класической точки зрения, учитывая что свет определнной волны состоит из фотонов определенной массы.


Массу фотона можно расчитать по следующим (не классическим ) формулам:

 $  p =  \frac{h}{\lambda}  $            $ \lambda $ - длина волны, p -импульс фотона, h - постоянная планка
 $ E^{2} = c^{2} p^{2} + m^{2}_0 c^{4} \! $  E - энергия фотона, $ m_0 $ - масса покоя фотона  
 $ E^{2}= m c^{2}  $         m - масса фотона, с - скоросто света

Ссылки:


Нужно рассмотреть фотон соответствующий определенной длине волны ( для примера красный свет ) и посмотреть, как он отклоняется в поле солнца согласно классическим законам тяготения теории Ньютона. В данном случае полученный результат должен отличаться от экспериментального где-то в 2 раза.

Программа Править

  • В программе ниже надо:
    • правильно определить ускорение частиц через параметры центральной массивной частицы
    • Задать правильные параметры солнца и фотона ( массу, расстояние, ...)
    • переставить JavaFX Script плагин в NetBeans (установка плагина)

Photon trajectory


/*
 * Main.fx
 *
 * Created on 00:00:00.
 */

package javafxapplication3;

/**
 * @author User
 */

 // place your code here

import javafx.animation.*;                         //подключаем библиотеки
import javafx.stage.*;

import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.scene.transform.*;


import java.lang.System;
import java.lang.Math;

function sqrt(x:Number):Number{
    Math.sqrt(x)
}

function cosin(x:Number,y:Number,z:Number):Number{
if (z>0) then return -x/Math.sqrt(x*x+y*y)
else return -y/Math.sqrt(x*x+y*y);
}

function R(x:Number,y:Number):Number{
    return Math.sqrt(x*x+y*y)
}
var G=6.67*Math.exp(-11);
var deltaAngle:Number;
var k=10727.03778;

function Ugol(x:Number,y:Number):Number{
return Math.atan(y/x)
}


class Particle{                              //задем класс частиц
    public var name: String ;
    public var color: Color;

    public var x: Number ;
    public var y: Number ;
    public var velocityX: Number ;
    public var velocityY: Number ;

    public var radius: Number ;
    public var mass: Number;

    public override function clone():Particle {
        Particle{
            name: name,
            color: color,
            x: x
            y: y
            velocityX: velocityX
            velocityY: velocityY,
            radius: radius
            mass: mass
            }
    }
}

class ParticleSystem extends CustomNode{
    public var centralParticle: Particle;
    public var particles: Particle[];

    public var dt: Number = 0.01 ;
             public var time: Number = 0;

    public function run () {


        for (particle in particles){

            //  Solar mass: centralParticle.mass
            var ax = cosin(particle.x*Math.exp(7),particle.y*Math.exp(7),1) * ( G* centralParticle.mass) / (R(particle.x*Math.exp(7),particle.y*Math.exp(7))*R(particle.x*Math.exp(7),particle.y*Math.exp(7))*k);  //задаем ускорение по х
            var ay = cosin(particle.x*Math.exp(7),particle.y*Math.exp(7),-1) * (G* centralParticle.mass) / (R(particle.x*Math.exp(7),particle.y*Math.exp(7))*R(particle.x*Math.exp(7),particle.y*Math.exp(7))*k) ;   //задаем ускорение по у

           // System.out.println(ay);
            particle.velocityX = ax * dt +  particle.velocityX;     //скорость х
            particle.velocityY = ay * dt +  particle.velocityY;     //скорость у

            particle.x =  particle.velocityX * dt +  particle.x;    //смещение х
            particle.y =  particle.velocityY * dt +  particle.y;    //смещение у
       //  println('particle.x');println(particle.x);
        //println('particle.y');println(particle.y);
        //   println(Ugol(particle.x+200,particle.y+75));
deltaAngle=Ugol(particle.x+200,particle.y+75);
        }
                time += dt;

    }

        public override function create():Node{
        return Group{
            content: [
                Circle{
                    radius: bind centralParticle.radius
                    fill: centralParticle.color
                },
                for (particle in particles)
                Circle{
                    radius: particle.radius
                    fill: particle.color
                    centerX: bind particle.x
                    centerY: bind particle.y
                }
//Line{
  //        startX: bind -375
    //    startY: bind -70
      //endX: bind 1000
    //endY: bind -70
//
  //        stroke: Color.DARKGRAY
    //    strokeWidth: 1
//}
            ]
        }
    }
    public override function clone():ParticleSystem {
        ParticleSystem{
            centralParticle: centralParticle
            particles:
            for( particle in particles)
            particle.clone()
            }

    }
}

class CustomButton extends CustomNode {

    public var text: String;
    public var action: function();

    public override function create(): Node {
        return Group {
            content: [
                Rectangle{
                    width: 100
                    height: 50
                    arcHeight: 10
                    arcWidth: 10
                    fill: Color.LIGHTBLUE
                    onMouseClicked: function(e){
                        action();
                    }

                }
                Text{
                    x: 30
                    y: 30
                    font: Font{
                        size: 16
                    }
                    content: "Reset"
                }
            ]
        };
    }
}


var particleSystem = ParticleSystem{
    centralParticle: Particle{              //создаем частицу "Zvezda"
        name: "Zvezda"
        radius: 70
        mass: 1.9 * Math.exp(30)// Define Sun mass
        color: Color.ORANGE
    }

    particles: [
         Particle{                           //Создаем частицу 'земля'
            name: "Earth"
            radius: 3
            color: Color.GREEN
            mass: 5.97*Math.exp(24) // Define Earth mass
            x: 1124  // Define Earth distance to Sun
            y: -73
            velocityX: -2.9*Math.exp(-5)
            velocityY: -2.9*Math.exp(-5)

        },
        Particle{                           //Создаем частицу "красный луч"
            name: "Red Light"
            radius: 1
            color: Color.RED
            mass: 3.6*Math.exp(-47) // Define Red Photon mass
            x: -200
            y: -75
            velocityX: 30
            velocityY: 0

        },


    ]


};


var currentParticleSystem = particleSystem.clone();

var timeline = Timeline {
    keyFrames: KeyFrame {
        time: 0.003s,
        action: function() {
            if(currentParticleSystem.time < 44.12){
                currentParticleSystem.run()
            }
        }
    }
    repeatCount: Timeline.INDEFINITE
}

timeline.play();


    Stage{                                      //Создаем окно программы
    title: "Light in the Gravity Field"
    width: 1270
    height: 700
    onClose: function(){
        System.exit(0);
    }
    scene: Scene{
        content: [
            Text{
            x:50
            y:100
             fill: Color.WHITE
                font: Font{ size: 16}
                content: bind "Delta Angle: {deltaAngle}"

        }

            CustomButton {
                transforms: Transform.translate(20, 20)  // sdvig componenty
                text: "Reset"
                action: function(){
                    currentParticleSystem = particleSystem.clone();
                }

            },
            Group{
                content: Group{
                    transforms: Transform.translate(100, 350)  //zadaem koordinatbI i stavim v nih tochku (0,0)
                    content: bind currentParticleSystem
                }
            }
        ]
        fill: Color.BLACK

    }

}


Анализ задачи с позиций Общей Теории Относительности Править

  • Выбрать способ движение волн/частиц в искривленном пространстве-времени
    • Движение по геодезическим линиям

Принцип наименьшего действия

Это известная о том, как находить эктремум некоторой велечины s, которая зависит от функции если функция закреплена на концах. Если есть возможность представить s как $ s = \int_{t_1}^{t_2} L(t) dt $ тогда L называют Лагранжианом. Известен способ получения уравнений Лагранжа, решая которые, можно найти ту самую функцию, на которой S экстремально.

Уравнения Лангранжа:a $ \frac{\delta L}{\delta q_{i}}-\frac{d(\frac{\partial L} {\partial q'_{i}})} {d t} =0 , где q_i-i $-тая функция координат.

В физике Ньютона S называется действием, L = K-V (кинетическая минус потенциальная энергия), а уравнения Лагранжа совпадают со 2м законом Ньютона. Все это интерпретируются так, что частица движется по траектории, на которой действие минимально.

В нашем случае частицы движутся по геодезическим линиям (линиям, длина которых минимальна иди максимальна). У нас есть Метрика Шварцшильда: $ (ds)^2=c^2*(1- \frac{R_{g}}{r})*(dt)^2 - r^2*sin^2(\theta)*d(\phi)^2 - r^2*(d\theta)^2 - \frac{(dr)^2}{1-\frac{R_{g}}{r}}, где Rg=\frac{2MG}{c^2} $

Мы будем рассматривать движение только в плоскости содержащей центр небесного тела, т.к. отклонение происходит к нему, тогда $ \theta=\pi/2 $. Мы знаем как вычислять длину траектории:

$ s=\int \sqrt{c^2*(1-\frac{Rg}{r}) - r^2*{\phi'}^{2} - \frac{{r'}^{2}}{1-\frac{Rg}{r}}} * dt $

$ L_1=\sqrt{c^2*(1-\frac{Rg}{r}) - r^2*{\phi'}^{2} - \frac{{r'}^{2}}{1-\frac{Rg}{r}}} $

Тогда напишем уравнения Лагранжа: Для $ \phi $:

$ \frac{\partial\left( \sqrt{c^2*(1-\frac{R_g}{r})-r^2*\phi'^2-\frac{r'^2}{1-\frac{R_g}{r}}}\right)}{\partial \phi} - \frac{d\left( \frac{\partial \left( \sqrt{c^2*(1-\frac{R_g}{r})-r^2*\phi'^2-\frac{r'^2}{1-\frac{R_g}{r}}}\right)}{\partial \phi'}\right)}{dt}=0 $

Откуда:

$ -\frac{d\left( \frac{-r^2*\phi'}{\sqrt{c^2*(1-\frac{R_g}{r})-r^2*\phi'^2-\frac{r'^2}{1-\frac{R_g}{r}}}}\right)}{dt} = 0 $

$ \frac{-r^2*\phi'}{L_1}=a $, где а-некоторая константа.

$ \phi'=\frac{-aL_1}{r^2} $

$ L_1^2=c^2(1-\frac{R_g}{r})-\frac{a^2L_1^2}{r^2}-\frac{r'^2r}{r-R_g} $

$ L_2=\sqrt{\frac{c^2(r^2-R_gr)-\frac{r'^2r^3}{r-R_g}}{r^2+a^2}} $


Для $ r $:

$ \frac{\partial L_2}{\partial r} - \frac{d\frac{\partial L_2}{\partial r'}}{dt}=0 $


$ \frac{\left( 2c^2r-c^2R_g-\frac{2r'^2r^3-3r'^2r^2R_g}{(r-R_g)^2}\right)(r^2+a^2)-\left( c^2r^2-c^2R_gr-\frac{r'^2r^3}{r-R_g}\right)}{2(r^2+a^2)L_2}-2\frac{(r''r^3+3r^2r'^2)(r^3-r^2R_g+a^2r-a^2R_g)L_2-r'^2r^2(3r^3-2r^2R_g+a^2r)L_2-r'r^3(r^3-r^2R_g+a^2r-a^2R_g)L_2'}{(r^2+a^2)^2(r-R_g^2)^2L_2^2}=0 $

Обозначим числитель первого слагаемого за Т. Распишем $ L_2' $:

$ L_2'=r''\left(\frac{r'r^3}{(r^2+a^2)L_2(r-R_g)} \right)+\frac{(2rr'c^2-c^2R_gr')(r^2+a^2)(r-R_g)^2-L_2r^3r'(r-R_g)^2-r'^3r^3(r^2+a^2)}{(r^2+a^2)^2L_2(r-R_g)^2} $

Обозначим второе слагаемое за В.

Подставим:

$ \frac{T}{2(r^2+a^2)^2L_2}-2\frac{r''(r^6-r^5R_g+a^2r^4-a^2R_gr^3)L_2+r^2r'^2(2a^2r-r^2R_g-a^2R_g)L_2-r''\frac{r'^2r^6}{L_2}-r'r^3(r^2+a^2)(r-R_g)B}{(r^2+a^2)^2(r-R_g)^2L_2} $


$ \frac{r''(r^6-r^5R_g+a^2r^4-a^2R_gr^3)L_2^2-r'^2r^6}{(r^2+a^2)^2(r-R_g)^2L_2^3}=\frac{-4r^2r'^2(2a^2r-r^2R_g-a^2R_g)L_2+4r'r^3(r^2+a^2)(r-R_g)B-(r-R_g)^2L_2T}{2(r^2+a^2)^2(r-R_g)^2L_2^2} $

Выразим $ r'' $:

$ r''=\frac{4r'r^3(r^2+a^2)(r-R_g)BL_2-4r^2r'^2(2a^2r-r^2R_g-a^2R_g)L_2^2-(r-R_g)^2L_2^2T}{(r^6-r^5R_g+a^2r^4-a^2R_gr^3)L_2^2-r'^2r^6} $

А теперь выразим $ \phi'' $:

$ -\frac{d\left( \frac{-r^2*\phi'}{\sqrt{c^2*(1-\frac{R_g}{r})-r^2*\phi'^2-\frac{r'^2}{1-\frac{R_g}{r}}}}\right)}{dt} = 0 $

$ \frac{(2r'r\phi'+\phi''r^2)L_1-\phi'r^2\frac{\frac{c^2Rgr'}{r^2}-2r'r\phi'^2-2\phi''\phi'r^2-\frac{2r''r'r^2-2R_gr''r'r-r'^2R_g}{(r-R_g)^2}}{2L_1}}{L_1^2}=0 $


$ 2(2r'\phi'+\phi''r)L_1^2-\phi'r\left( \frac{c^2Rgr'}{r^2}-2r'r\phi'^2-2\phi''\phi'r^2-\frac{2r''r'r^2-2R_gr''r'r-r'^2R_g}{(r-R_g)^2}\right)=0 $

$ \phi''=\frac{\phi'r\left( \frac{c^2Rgr'}{r^2}-2r'r\phi'^2-\frac{2r''r'r^2-2R_gr''r'r-r'^2R_g}{(r-R_g)^2}\right)-4r'\phi'L_1^2}{2rL_1^2+2{\phi'}^2r^3} $

Эта формула нам подходит, так как мы уже знаем, как выражать $ r'' $ через $ r,r',\phi' $.

Вот код программы:


/*
 * Main.fx
 *
 * Created on 00:00:00.
 */

package javafxapplication1;

/**
 * @author User
 */

 // place your code here

import javafx.animation.*;                         //
import javafx.stage.*;

import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.scene.transform.*;


import java.lang.System;
import java.lang.Math;

var G=6.67e-11;
var deltaAngle:Number;
var c=2.9e8;
var a=1;

function sqrt(x:Number):Number{
    Math.sqrt(x)
}

function cosin(x:Number,y:Number,z:Number):Number{
if (z>0) then return -x/Math.sqrt(x*x+y*y)
else return -y/Math.sqrt(x*x+y*y);//Math.atan(y/x)//
}

function s(x:Number,y:Number):Number{
   if (y>=1) then return s(x,y-1)*x
   else return 1
}

function xr(x:Number,y:Number,z:Number):Number{
if (z>0) then return Math.sqrt(s(x,2)+s(y,2))
else return Math.acos(x/Math.sqrt(s(x,2)+s(y,2)))
}
function rx(r:Number,p:Number,z:Number):Number{
if (z>0) then return r*Math.cos(p)
else return    r*Math.sin(p)
}
function vxvr(x:Number,vx:Number,y:Number,vy:Number,z:Number):Number{
if (z>0) then return (x*vx-y*vy)/(Math.sqrt(s(x,2)+s(y,2)))
else return (vy*x-vx*y)/(x*x+y*y)
}
function vrvx(r:Number,vr:Number,p:Number,vp:Number,z:Number):Number{
if (z>0) then return vr*Math.sin(p)-r*Math.cos(p)*vp
else return vr*Math.cos(p)-r*Math.sin(p)*vp
}


function L1(r:Number,R:Number,vX:Number,vY:Number):Number{
return Math.sqrt(s(c,2)*(1-R/r)-s(r,2)*s(vY,2)-s(vX,2)*r/(r-R))
}

function L2(r:Number,R:Number,vX:Number):Number{
return Math.sqrt((s(c,2)*(s(r,2)-R*r)-s(vX,2)*s(r,3)/(r-R))/(s(r,2)+s(a,2)))
}

function B(r:Number,R:Number,vX:Number):Number{
return ((2*r*vX*s(c,2)-s(c,2)*R*vX)*(s(r,2)+s(a,2))*s((r-R),2)-L2(r,R,vX)*s(r,3)*vX*s((r-R),2)-s(vX,3)*s(r,3)*(s(r,2)+s(a,2)))/(s((s(r,2)+s(a,2)),2)*L2(r,R,vX)*s((r-R),2))
}

function T(r:Number,R:Number,vX:Number):Number{
return ((2*s(c,2)*r-s(c,2)*R-(2*s(vX,2)*s(r,3)-3*s(vX,2)*s(r,2)*R)/(s(r-R,2)))*(s(r,2)+s(a,2))-2*r*(s(c,2)*s(r,2)-s(c,2)*R*r-(s(vX,2)*s(r,3))/(r-R)))/(2*s(s(r,2)+s(a,2),2)*L2(r,R,vX))
}

//function Ugol(x:Number,y:Number):Number{
//return Math.atan(y/x)
//}


class Particle{                              //
    public var name: String ;
    public var color: Color;

    public var x: Number ;
    public var y: Number ;
    public var vX: Number ;
    public var vY: Number ;

    public var radius: Number ;
    public var mass: Number;

    public override function clone():Particle {
        Particle{
            name: name,
            color: color,
            x: x
            y: y
            vX: vX
            vY: vY,
            radius: radius
            mass: mass
            }
    }
}

class ParticleSystem extends CustomNode{
    public var centralParticle: Particle;
    public var particles: Particle[];

    public var dt: Number = 0.01 ;
             public var time: Number = 0;

    public var R:Number=2*G*centralParticle.mass/(c*c) ;
    public function run () {


        for (particle in particles){
            var r=xr(particle.x*s(10,8),particle.y*s(10,8),1);
            var p=xr(particle.x*s(10,8),particle.y*s(10,8),0);
            var vr=vxvr(particle.x*s(10,8),particle.vX*s(10,8),particle.y*s(10,8),particle.vY*s(10,8),1);
            var vp=vxvr(particle.x*s(10,8),particle.vX*s(10,8),particle.y*s(10,8),particle.vY*s(10,8),1);

            //  Solar mass: centralParticle.mass
           var ar = (2*vr*(s(r,2)+s(a,2))*(r-R)*B(r,R,vr)*L2(r,R,vr)-2*s(r,2)*s(vr,2)*(2*s(a,2)*r-s(r,2)*R-s(a,2)*R)*s(L2(r,R,vr),2)-(r-R)*s(L2(r,R,vr),2)*T(r,R,vr))/((s(r,6)-s(r,5)*R+s(r,4)*s(a,2)-s(r,3)*s(a,2)*R)*s(L2(r,R,vr),2)-s(vr,2)*s(r,6)) ;  // r
            //var ap =(vp*r*((s(c,2)*R*vr/s(r,2))-2*vr*r*s(vp,2)-(2*ar*vr*r-2*R*ar*vr*r-s(vr,2)*R)/(s(r-R,2)))-4*vr*vp*L1(r,R,vr,vp))/(2*r*L1(r,R,vr,vp)+2*s(vp,2)*s(r,2));   // ph

           // System.out.println(ay);
           vr = ar * dt +  vr;     // r
           vp = -a*L1(r,R,vr,vp)/s(r,2);     // phi

            r =  vr * dt +  r;    //r
            p =  vp * dt +  p;    //phi
            //println('particle.x');println(particle.x);
            //println(Ugol(particle.x+200,particle.y+75));
//deltaAngle=Ugol(r+200,p+75);
            particle.x=rx(r,p,1)/s(10,8);
            particle.y=rx(r,p,0)/s(10,8);
            particle.vX=vrvx(r,vr,p,vp,1)/s(10,8);
            particle.vY=vrvx(r,vr,p,vp,0)/s(10,8);
        }
                time += dt;

    }

        public override function create():Node{
        return Group{
            content: [
                Circle{
                    radius: bind centralParticle.radius
                    fill: centralParticle.color
                },
                for (particle in particles)
                Circle{
                    radius: particle.radius
                    fill: particle.color
                    centerX: bind particle.x
                    centerY: bind particle.y
                }
//Line{
  //        startX: bind -375
    //    startY: bind -70
      //endX: bind 1000
    //endY: bind -70
//
  //        stroke: Color.DARKGRAY
    //    strokeWidth: 1
//}
            ]
        }
    }
    public override function clone():ParticleSystem {
        ParticleSystem{
            centralParticle: centralParticle
            particles:
            for( particle in particles)
            particle.clone()
            }

    }
}

class CustomButton extends CustomNode {

    public var text: String;
    public var action: function();

    public override function create(): Node {
        return Group {
            content: [
                Rectangle{
                    width: 100
                    height: 50
                    arcHeight: 10
                    arcWidth: 10
                    fill: Color.LIGHTBLUE
                    onMouseClicked: function(e){
                        action();
                    }

                }
                Text{
                    x: 30
                    y: 30
                    font: Font{
                        size: 16
                    }
                    content: "Reset"
                }
            ]
        };
    }
}


var particleSystem = ParticleSystem{
    centralParticle: Particle{              // "Zvezda"
        name: "Zvezda"
        radius: 70
        mass: 1.9e30// Define Sun mass
        color: Color.ORANGE
    }

    particles: [
         Particle{                           //
            name: "Earth"
            radius: 7
            color: Color.GREEN
            mass: 5.97e24 // Define Earth mass
            x: 124  // Define Earth distance to Sun
            y: 1
            vX: 0
            vY: 2.041286383e-7

        },
        Particle{                           //
            name: "Red Light"
            radius:  3
            color: Color.RED
            mass: 3.6e-47 // Define Red Photon mass
            x: -200
            y: -75
            vX: 2.9
            vY: 0

        },


    ]


};


var currentParticleSystem = particleSystem.clone();

var timeline = Timeline {
    keyFrames: KeyFrame {
        time: 0.0003s,
        action: function() {
            if(currentParticleSystem.time < 43.2){
                currentParticleSystem.run()
            }
        }
    }
    repeatCount: Timeline.INDEFINITE
}

timeline.play();


    Stage{                                      //
    title: "Light in the Gravity Field"
    width: 1270
    height: 700
    onClose: function(){
        System.exit(0);
    }
    scene: Scene{
        content: [
            Text{
            x:50
            y:100
             fill: Color.WHITE
                font: Font{ size: 16}
                content: bind "Delta Angle: {deltaAngle}"

        }

            CustomButton {
                transforms: Transform.translate(20, 20)  // sdvig componenty
                text: "Reset"
                action: function(){
                    currentParticleSystem = particleSystem.clone();
                }

            },
            Group{
                content: Group{
                    transforms: Transform.translate(375, 350)  //zadaem koordinatbI i stavim v nih tochku (0,0)
                    content: bind currentParticleSystem
                }
            }
        ]
        fill: Color.BLACK

    }

}

Метрика Править

Математические формулы Править

$ \frac {df} {dx} = f\prime(x) $
$ df = f\prime(x) dx $


$ d(uv) = du * v + v * du $
Если $ ds = F(\tau) d\tau $, то $ s = \int_{\tau1}^{\tau2} F(\tau) d\tau $

Метрика на плоскости Править

Function


$ \Delta s ^ 2 = \Delta x ^2 + \Delta y ^2 $

$ ds ^ 2 = dx ^2 + dy ^2 $


Нахождение длины окружности.

Зададим уравнение окружности в параметрическом виде:

$ x = r * \cos \phi $
$ y = r * \sin \phi $

тогда квадрат маленькой дуги окружности будет равен

$ ds^2 = dx ^2 + dy ^2 $ $ = $ $ (d(r * \cos \phi))^2 + (d(r * \sin \phi))^2 $ $ = $ $ r^2 * (d \cos \phi)^2 + r ^2 * (d \sin \phi)^2 $ $ = $ $ r^2 * ( (- \sin \phi * d\phi )^2 + (\cos \phi * d\phi)^2 ) $

$ ds^2 = r^2 * (\sin \phi ^2 d\phi ^2 + \cos \phi ^2 * d\phi ^2) $ $ = $ $ r^2 * (\sin \phi ^2 + \cos \phi ^2 ) * d\phi ^2 $

$ ds^2 = r^2 * d \phi ^2 $

$ ds = r * d\phi $


$ s = \int_{s_1}^{s_2} ds $ $ = $ $ \int_0^{2\pi} r * d\phi $ $ = $ $ r * (2\pi - 0 ) $ $ = $ $ 2 \pi r $

Метрика в пространстве Править

$ ds ^ 2 = dx ^2 + dy ^2 + dz ^2 $

Метрика на сфере Править

Сферические полярные координаты:

$ x = r \cdot \sin \theta \cdot \cos\phi $
$ y = r \cdot \sin \theta \cdot \sin \phi $
$ z = r \cdot \cos \theta $


$ dx = d(r \cdot \sin \theta \cdot \cos \phi) $
$ dy = d(r \cdot \sin \theta \cdot \sin \phi) $
$ dz = d(r \cdot \cos \theta) $

На сфере $ r = const $, отсюда следует что $ dr = 0 $.

Теперь надо вычислить dx, dy и dz и подставить их в формулу для метрики в 3х-мерном пространстве:

$ ds ^ 2 = dx ^2 + dy ^2 + dz ^2 $

Задачи Править

Дана метрика на сфере:

$ ds^2 = r^2 ( (d\theta)^2 + sin^2\theta * (d\phi)^2) $

1. Найти длину мередиана при фиксированном угле $ \phi $

Кривая $ ( \theta, \phi ) $ где $ \phi = const $.

2. Найти длину параллели при фиксированном угле $ \theta $

Кривая $ ( \theta, \phi ) $ где $ \theta = const $.


3. Найти длину эллипса.

$ \frac {x^2} {a^2} + \frac {y^2} {b^2} = 1 $ - уравнение эллипса
$ ds^2 = dx^2 + dy^2 $ - метрика на плоскости.

4. Дополнительная задача

Вывести метрику на сфере.


1. Дано:

$ \vec r(\tau) = (x(\tau),y(\tau)) $ - параметризованная кривая $ \tau \in (\tau_1,\tau_2) $.
$ ds^2 = F_{11}\cdot dx_1^2 + 2 F_{12}\cdot dx_1 dx_2 + F_{22} \cdot dx_2^2 $ - метрика на плоскости.


Длина кривой:

$ s=\int_{\tau_{1}}^{\tau_{2}} {\sqrt{F_{11} (x(\tau),y(\tau))*x'^2(\tau) + 2F_{12} (x(\tau),y(\tau))*x'(\tau)*y'(\tau) + F_{22} (x(\tau),y(\tau))*y'^2(\tau)} * d\tau} $


2. Дана метрика на плоскости:

$ ds^2 = g_{11}\cdot dx_1^2 + 2 g_{12}\cdot dx_1 dx_2 + g_{22} \cdot dx_2^2 $

Надо найти уравнение геодезической линии.

Ссылки Править

Опыты подтверждающие общую теорию относительности
Теги для математических формул