Cơ học quỹ đạo: quỹ đạo như một hàm của thời gian. Công thức biến phổ quát?


7

Tôi đang cố gắng mô hình quỹ đạo hai chiều cho một vấn đề Kepler hai cơ thể nhưng đã bị kẹt khi đưa ra biến thời gian.

Đối với một vệ tinh có trục bán chính (a), độ lệch tâm (e) và dị thường thực sự (theta), tôi có:

r = a*(1-e**2)/(1+e*cos(theta))

Làm cách nào tôi có thể tính toán theta như một hàm của thời gian bằng cách sử dụng phương pháp xây dựng biến số phổ biến được đề xuất Wiki ? Tôi không biết làm thế nào để thực hiện (đang sử dụng Python nhưng mọi lời khuyên về thuật toán đều được đánh giá cao!)

Ngoài ra, làm thế nào để tôi tính r là một hàm của thời gian?

Lưu ý: Tất cả các yếu tố quỹ đạo và khối lượng khác có sẵn. Ngoài ra, tôi đang cố gắng đưa ra một giải pháp chung cho các quỹ đạo hình elip, hyperbol và parabol.

Chúc mừng!


Tôi thấy rằng bạn đã sử dụng các thẻ game-designgame-mechanics. Là dạng đóng này thực sự cần thiết cho một mô phỏng cấp trò chơi, và nó tương tác với trò chơi như thế nào?
Lars Viklund

Đối với vấn đề của bạn, bạn có thể quan tâm đến cuốn sách này chỉ nhắm đến một đối tượng như bạn (và tôi): amazon.com/Astronomical-Alacticms-Jean-Meeus/dp/0943396352
tinh

Lars- Tôi đang chọn hình thức đóng (nếu tôi đã hiểu điều đó có nghĩa là gì) để cho các hành tinh cố định, quỹ đạo ổn định trong một khoảng thời gian dài. Vật thể nhỏ hơn (tàu vũ trụ, v.v.) sẽ có chuyển động thay đổi được xác định bởi định luật hấp dẫn của newton, nên đủ dễ để tính toán.
imnegan

Nhà sản xuất hành tinh- cảm ơn vì lời giới thiệu, tôi sẽ kiểm tra nó.
imnegan

Câu trả lời:


7

Tôi đã tính toán sự bất thường thực sự là hàm của thời gian, đối với chuyển động hành tinh, theo c #, theo cách này:

  1. Tính toán bất thường trung bình (thời gian: thời gian hiện tại, G: newton grav.connstant, M: khối lượng hành tinh hoặc tổng của hai vật thể quay quanh, a: trục bán chính)

            //M = nt
                double n = Math.Sqrt((G * (M)) / (a * a * a));
                double Mt = n * time;
  2. Tính toán dị thường E lệch tâm bằng cách giải phương trình Kepler:

         //For orbits with ε > 0.8, an initial value of E0 = π should be used.
            if (eccentr>0.8)
                E = NumApprox(150, Math.PI,Mt, 10E-15);
            else
                E = NumApprox(150, Mt, Mt, 10E-15);
  3. dị thường thật (góc)

    true_anom = 2.0 * Math.Atan2 (Math.Sqrt (1.0 + eccentr) * Math.Sin (E / 2.0), Math.Sqrt (1.0 - eccentr) * Math.Cos (E / 2.0));

  4. khoảng cách từ hành tinh

    d = a * ((1.0 - eccentr * eccentr) / (1.0 + eccentr * Math.Cos (true_anom)));

Cuối cùng xấp xỉ số của bài toán nghịch đảo :

private double NumApprox(int intr, double prev,double Mt, double  err)
    {
        double ret = prev;
        double retprev = prev;
        for (int i=0 ; i<intr; i++){
            retprev = ret;
            ret = ret - (ret - eccentr * Math.Sin(ret) - Mt) / (1.0 - eccentr * Math.Cos(ret));
            if ( Math.Abs(ret - retprev) < err)
                break;
        }
        return ret; 
    }

nhập mô tả hình ảnh ở đây

EDIT: tính toán vị trí và vận tốc

Những gì chúng tôi đã làm là một nửa công việc trong việc lấy các yếu tố quỹ đạo Cartesain từ các yếu tố quỹ đạo kepler trong đó:

    //some kepler Orbit Elements: 
    public double d;
    public double true_anom;
    public double eccentr;
    public double a;
    public double E;
    public double w=0; //small omega ω :  Argument of periapsis (in rad)

    //Cartesain Orbit Elements: 
    //Position Vector
    private double x;
    private double y;
    private double z; //2d :not used
    //Velocity Vector
    private double vx;
    private double vy;
    private double vz; //2d :not used

là bước cuối cùng, chúng ta có thể tính toán các vectơ vị trí và vận tốc như:

//Position
x = d * Math.Cos(true_anom);
y = d * Math.Sin(true_anom);
//apply ω
double xx = x * Math.Cos(w) - y * Math.Sin(w);
double yy = x * Math.Sin(w) + y * Math.Cos(w);
x = xx;
y = yy;


//Velocity
double v = Math.Sqrt(G * M * a) / d;
vx = -v * Math.Sin(E);
vy = -v * Math.Sqrt(1.0-eccentr*eccentr) * Math.Cos(E);

EDIT: tài liệu tham khảo nhập mô tả hình ảnh ở đây

Yếu tố quỹ đạo

Phương trình của Kepler

Bất thường thật

Vectơ lệch tâm

Luận cứ về bệnh hoạn

Phương pháp của Newton cho phép tính gần đúng số

Chương trình Vật lý Vật lý của Chương trình Không gian Kerbal (KSP) (pdf)


Điều này thật tuyệt, cảm ơn! Ngoài ra, thực tế là nó ở dạng 2D chỉ phù hợp với những gì tôi đang chơi. Vì tò mò, không sử dụng độ nghiêng và trục z có thể biểu diễn các vật thể quay quanh theo chiều kim đồng hồ?
imnegan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.