Numerics: Làm cách nào để tôi tái chuẩn hóa ODE sau


9

Câu hỏi này là về cách giải quyết vấn đề bằng số.

Trong một dự án nhỏ, tôi muốn mô phỏng chuyển động coobicital của Janus và Epimetheus. Đây là một vấn đề cơ thể ba. Tôi chọn Sao Thổ được cố định tại điểm gốc, lần lượt r1r2 là các vectơ vị trí của janus và epimetheus. Vì hiệu ứng xảy ra khi Janus và Epimetheus rất gần nhau, tôi đã chọn tọa độ tương đối để có độ phân giải tốt hơn, tức là r=r1r2R=r1+r2 . Bây giờ tôi nhận được các phương trình chuyển động sau đây:

d2dt2(Rr)=G(m2±m1)RR34MG(r+R(r+R)3rR(rR)3)

Trong đó mi tương ứng với khối lượng của các mặt trăng, M là khối lượng của Sao Thổ và G là hằng số hấp dẫn. Vấn đề phát sinh khi tôi cố gắng giải quyết số này. Người ta phải đối phó với các giá trị có độ lớn hoàn toàn khác nhau, tức là Me28mie17 . Và r , R nằm trong vùng từ 0 đến 150.000.

Thành thật mà nói tôi không chắc đây có phải là diễn đàn để thảo luận về những vấn đề số như vậy không.

Thêm thông tin:

Mã được viết bằng Matlab và tôi sử dụng bộ giải ODE tiêu chuẩn để thu được kết quả. Tuy nhiên, điều này bị phá vỡ vì kích thước bước không thể giảm theo độ chính xác của máy. (Tôi thấy điều này không có gì đáng ngạc nhiên vì người ta phải đối phó với các mệnh lệnh đã được đề cập).


2
Bạn đang chạy mô phỏng này trong các đơn vị SI? Tối thiểu, bạn nên chia mọi thứ cho một số yếu tố của , để bạn có thể loại bỏ một vài bậc độ lớn. Gm2

Xin chào, tôi thế này, nhưng nó vẫn không hoạt động ... Những vấn đề tương tự xảy ra như trước đây. :(

Bạn phải đặt đơn vị khối lượng của mình thành một trong những khối lượng của mặt trăng và đơn vị độ dài / thời gian của bạn để đặt mọi thứ thành 1. Không nên nhỏ hơn 1/100 nếu bạn viết tốt. Không cần một người giải quyết không cần đơn. Viết mã để tự làm việc này, nơi bạn kiểm soát các bước. Sự cố trong stepize với các loại tiềm năng này có thể xảy ra khi va chạm, trong đó người giải sẽ cố gắng giảm các bước cho đến khi hội tụ và khi va chạm không có sự hội tụ. Bạn cần đảm bảo rằng các quỹ đạo không thẳng hàng, vì vậy bạn cần xem mô phỏng. Bạn không thể nhận được câu trả lời như vậy.
Ron Maimon

1
Vui lòng tránh viết tắt trong tiêu đề. DGL = Difentialgleichung?

Bạn đang sử dụng bộ giải ODE tiêu chuẩn nào?
Geoff Oxberry

Câu trả lời:


2

Cách tiếp cận hiện tại của bạn làm hỏng sự ổn định số; trong thực tế bạn có thể mất độ phân giải theo cách này.

Lấy làm tọa độ cho mỗi vệ tinh, các biến Kepler của nó và góc của mặt phẳng chứa vị trí của vệ tinh, vận tốc và gốc tọa độ. Các phương trình vi phân trong trường hợp không có sự tương tác giữa các vệ tinh sau đó rất đơn giản và chỉ có sự tương tác trở nên hơi phức tạp. Vì tương tác rất nhỏ nếu các vệ tinh ở xa, động lực học kết quả sẽ ổn định về số lượng.



0

Sẽ thế nào nếu bạn có ba bước trong mô phỏng của mình:

  1. cập nhật vị trí của Janus bằng cách tính toán lực Janus - Sao Thổ.
  2. cập nhật vị trí Epimetheus bằng cách tính toán lực Epimetheus - Sao Thổ.
  3. cập nhật vị trí của Janus và Epimetheus bằng cách tính toán lực lượng Janus - Epimetheus.

Có thể sử dụng dấu thời gian tốt hơn cho # 3.

Tôi không chắc chắn nếu điều này sẽ giúp. Tôi cho rằng vấn đề thực sự là cường độ của lực khác nhau trong mặt trăng - mặt trăng và mặt trăng - trường hợp sao Thổ, ngoại trừ nếu các mặt trăng ở gần?

Cách khác:

  1. nếu các mặt trăng đóng lại, hãy tính một mặt trăng gần đúng - lực Saturn sử dụng tâm của vectơ khối lượng của chúng và cập nhật cả hai vị trí với cùng một vectơ.
  2. nếu chúng cách xa nhau, hãy cập nhật chúng một cách riêng biệt.
  3. như trước.

May mắn nhất!

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.