Bài toán thiên văn
Bài toán thiên văn K51 TOÁN TIN2 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA TOÁN TIN ỨNG DỤNG TIỂU LUẬN Đề tài: Bài toán thiên văn Giáo viên hướng dẫn: Nguyễn Hữu Điển Sinh viên thực hiện : Ngô Thị Hiền, Lê Thị Hiền Lớp: toán 2-k51. Hà Nội, tháng 11 năm 2009 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 1 Bài toán thiên văn PHẦN A: GIỚI THIỆU BÀI TOÁN Kể từ ngày quả táo rơi xuống đầu ISAAC NEWTON (1666) con người đã khám phá ra một lực tồn tại và ngự trị trong thiên nhiên tư ngày khai sinh ra vũ trụ. Đó là lực hấp dẫn(đặc biệt đó là trọng lực) Theo NEWTON thì lực này được phát biểu dưới dạng: “giữa 2 vật có khối lượng M và m bao giờ cũng tồn tại một lực: F= 2 r GMm − Với G=6,67x 10 : hằng số vũ trụ ( hệ MRS) 11− r : khoảng cách giữa 2 vật Dựa trên công thưc đơn giản này mà NEWTOON đã làm sáng tỏ hai giả thuyết về hệ nhật tâm ( hệ mà trong đó mặt trời là trung tâm của THÁI DƯƠNG hệ ) của các nhà khoa học đi trước như Copernic, Galiee, Kepler… và làm cơ sơ cho các nhà khoa học của thế hệ sau: Lomonosov, Leverrier……đễ xây dựng lên những điều kì diệu làm nền tảng cho môn thiên văn họ c hiện đại. Nhờ đó mà con người đã khám phá ra những hiện tượng xảy ra cách đây hang ngàn năm ánh sáng, dự đoán được những sự kiện sẽ xảy ra trong hang ngàn năm tiếp theo, cũng như hiểu thêm về những huyền bí xảy ra cách đây bốn tỉ năm, ngày trái đất chưa được sinh ra. Ngay từ thuở xa xưa, khi quan sát bầu trời, một trong những điều con người quan tâm trước tiên là chúng ta đang ở nơi nào trong vũ trụ thăm thẳm kia, và những ngôi sao, những hành tinh chúng ta thấy được, chúng di chuyển hay đứng yên, mà nếu di chuyển thì theo quỹ đạo nào? Các nhà khao học đã bỏ hang chục năm vùi đàu vào các con số cực kỳ phức tạp để trả lời cho những thắc mắc này Ngày nay, nhờ MAPLE chúng ta chỉ mất vài giây để tìm ra câu giải đáp. Và trong bài báo cáo này chúng em xin dùng MAPLE để mô phỏng lại quỹ đạo chuyển động của m ột thiên thể và tính vận tốc của phi thuyền K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 2 Bài toán thiên văn PHẦN B: LÝ THUYẾT CƠ SỞ I. Giới thiệu 1. Các tính năng cơ bản của Maple Có thể nêu vắn tắt các chức năng cơ bản của Maple như sau: • là một hệ thống các toán trên các biểu thức đại số; • có thể thực hiệc được hầu hết các phép toán cơ bản trong chương trình toán đại học và sau đại học; • cung cấp các công cụ minh họa hình học thuận tiện gồ m: vẽ đồ thị tĩnh và động của các đường và mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau; • một ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với các ngôn ngữ lập trình khác; • cho phép trích xuất ra các định dạng khác nhau như LaTex, Word, HTML, • Một công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với các lớp học tương tác trực tiếp; • mộ t trợ giáo hữu ích cho học sinh và sinh viên trong việc tự học 2.Xây dựng và hiển thị một khung hình động Hình ảnh là một thứ trực quan và dễ tác động vào não chúng ta nhất, vì vậy trong giảng dạy người ta luôn cố gắng tạo ra và mô phỏng bằng hình ảnh để hiệu quả cao tốt. Hiện nay có rất nhiều ứng dụng tạo ra những hoạt cảnh rất sinh động và thứ vị như Flash , Java …, trong Maple cũng là mộ t công cụ rất thuật lợi hỗ trợ tạo ra các ảnh động, thông thương có 2 cách để tạo ảnh động trong Maple: 9 Dùng các hàm có sẵn trong thư viện của maple: animate, animatecurve, and animate3d có trong gói plot 9 Hoặc tự xây dựng các thủ tục bao gồm: tạo ra các dãy frame liên tiếp sau đó xếp chồng chúng lên nhau và hiển thị đồng thời dãy liên tục các hình ảnh. K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 3 Bài toán thiên văn II. Một số gói thủ tục 1. student Gói lệnh Student hỗ trợ cho việc dạy và học toán. • Từ Maple 8, gói lệnh Student được phát triển từ gói lệnh student trước đó nhằm hỗ trợ cho việc dạy và học toán ở đại học và phổ thông. Khai thác khả năng của gói lệnh này sẽ đem đến cho giáo viên rất nhiều công cụ hỗ trợ mới trong phương pháp dạy học. Có thể nói r ằng gói lệnh này đã đề cập đến tất cả các nội dung toán học của đại học và phổ thông, cung cấp nhiều lệnh và thủ tục cho các phép toán và algorithm xuất hiện trong chương trình giảng dạy, cung cấp nhiều công cụ tương tác dưới dạng Maplet và hỗ trợ việc làm từng bước các phép toán cơ bản của vi tích phân. • Gói lệnh Student có 3 gói lệnh con là 9 Calculus1 9 LinearAlgebra 9 Precalculus Để nạp từng gói l ệnh, làm như sau: with(Student[Precalculus]): • Gói lệnh con : Calculus1: là gói lệnh quan trọng nhất của Student. Nó chứa các công cụ hỗ trợ từ hướng dẫn thực hiện các phép tính vi tích phân cho đến khảo sát và vẽ đồ thị hàm; từ việc minh họa vẽ tiếp tuyến đường cong cho đến việc tính diện tích, thể tích mặt tròn xoay,v.v • Sử dụng các Tutor trong các gói của Student và các hỗ trợ tính toán từng bước. Ví dụ: Tích tích phân > with(Student[Calculus1]): IntTutor() K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 4 Bài toán thiên văn Sau khi nhấn Enter, một cửa sổ Maplet hiện ra, cho phép ta nhập hàm và các khoảng cần tính tích phân (nếu là tích phân xác định). 2. plots và plottools: Gói plots chứa các lệnh cho phép vẽ hình trong không gian 2 và 3 chiều, Gói plottools công cụ chứa các lệnh cho phép làm việc với các đối tượng hình ảnh: a. Sự vận động của đồ thị: animate3d(ham_co_tham_so,x=gt_dau gt_cuoi, y=gt_dau gt_cuoi, tham_so =gt_dau gt_cuoi); Ý nghĩa: hiển thị sự biến đổi, vận động của đồ thị khi tham số thay đổi trong khoảng cho trước b.Lệnh plots[display]() Cú pháp: plots[display](a,b,c ,insequence=true(false),options); plots[display](L,insequence=true(false),options); plots[display](A,options); plots[display](P,options); Các tham số: a,b,c là cá đồ thị riêng biệt. L: dãy (list) các đồ thị(ví dụ L:=a,b,c;) A: mảng một chiều hoặc hai chiều của các đồ thị. P: đồ thị dưới dạng vận động. insequence=true(false): nó cho phép hiện từng đồ thị trong dãy(list) theo trình tự của dãy. options: các tính chất cơ bản của các lệnh vẽ như plot/options c. Lệnh plottools[rotate](): quay đồ thị 2D, 3D: Cú pháp: K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 5 Bài toán thiên văn plottools[rotate](p,ang,pt_2d); quay một góc ang quanh điểm có tọa độ pt_2d. plottools[rotate](q,alpha,beta,gamma); quay đồ thị q quanh truc x, y, z với các góc tương ứng. plottools[rotate](q,alpha,[pt_3d1,pt_3d2]); quay đồ thị q quanh trục qua [pt_3d1,pt_3d2] Các tham số: p: cấu trúc đồ thị 2D. q: cấu trúc đồ thị 3D. ang: góc quay. pt_2d: tọa độ điểm làm gốc. alpha,beta,gamma:gốc quay quanh trục x,y,z. [pt_3d1,pt_3d2]: d.Lệnh plottools[scale](): co giãn đồ thị Cú pháp: plottools[scale](p,a,b,pt_2d); plottools[scale](p,a,b,c,pt_3d); Các tham số: a,b,c: là hệ số co giãn theo các trục x,y,z. pt_2d,pt_3d: tâm co giãn. e.Lệnh plottools[translate](p,a,b): Lệnh tịnh tiến đồ thị . Lệnh này tác động lệnh đồ thị p cho kết quả là tịnh tiến đồ thị này đến tọa độ mới (a,b) Cú pháp: plottools[translate](p,a,b); "dịch chuyển tịnh tiến trong 2D" plottools[translate](q,a,b,c); "dịch chuyển tịnh tiến trong 3D" K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 6 Bài toán thiên văn Các tham số: p,q: cấu trúc đồ thị cần dịch chuyển tịnh tiến. a,b,c là các số thực (chính là tọa mới) d Đưa chữ vào chuyển động. Trong cả hình vẽ 2 và 3 chiều bằng gói plot chúng ta đều có thể đưa tiêu đề của hình vẽ vào bằng lựa chọn options: title=”text”. Trong đó “text” là một xâu ký tự. Chúng ta cũng có thể chỉ định phông chữ và cỡ chữ cho tiêu đề đó bằng options: titlefont Mặc đị nh thì title chỉ hiện thị trên một dòng, điều đó sẽ khó khăn nếu title quá dài. Để title có thể trải trên 2 hay nhiều dùng, chúng ta có thể thêm lệnh \n vào trong “text” để đưa đoạn text tiếp theo xuống dòng mới. III. Một số lệnh 1. Cấu Trúc Dữ Liệu Dãy Lệnh Tạo Dãy seq ( f (i) , i=low hight ); Khai báo này sẽ tạo ra một dãy bằng cách thay thế gía trị i trong f(i) bởi các số nguyên liên tiếp nằm trong giới hạn tứ low đến hight . seq ( f(x) , x=expression ); Khai báo này sẽ tạo ra một dãy mà mỗi thành phần của nó được sinh bằng cách cho hàm f tác dụng lên một thành phần (operand ) của biểu thức expression . Giá trị của expression thường là một tập hợp hay danh sách nào đó , và cũng có thể là bất cứ cấu trúc dữ liệu nào khác mà lệnh op có thể áp dụng được , chẳng hạn như tổng hay tích . Dãy ( sequence ) là một nhóm những đối tượng của Maple được sắp xếp có K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 7 Bài toán thiên văn thứ tự và ngăn cách nhau bởi dấu phẩy . Chẳng hạn như a,b,c là một biểu thức dãy . Dãy có thể được gán làm giá trị cho các biến , ví dụ ta có thể gán dãy a,b,c cho biến x bằng lệnh x:=a,b,c . Dãy được dùng vào nhiều mục đích khác nhau trong Maple : dãy được dùng để xây dựng tập hợp và danh sách , dãy cũng được dùng trong việc truyền đối số cho các hàm có nhiều tham biến . Một số hàm trong Maple cho cho kết qủa dưới dạng dãy . Chẳng hạn hàm solve() đôi khi cho một dãy các đáp số khi bài toán có nhiều hơn một nghiệm . Khi hàm op() nhận đối số là một biểu thức , nó cũng cho một dãy bao gồm tất cả các thành phần trong biểu thức nhậ p vào . Ký hiệu đặc biệt NULL thay thế cho dãy trống ( dãy không chứa gì cả ) . Sự định giá hoàn toàn ( full evaluation ) được Maple tự động áp dụng trong qúa trình tạo ra dãy , do vậy dãy các dãy được đơn giản thành một dãy . Chẳng hạn nếu biến s1 được gán bởi dãy a,b,c trongd đó các biến a,b,c là các biến chứ được gán giá trị thì lệnh s2:=s1,d sẽ gán cho biến s2 dãy a,b,c,d và s3:=s1,NULL,s1 sẽ gán cho biến s3 dãy a,b,c,a,b,c . Các hàm op() và nops() không được phép sử dụng cho dãy . Nguyên nhân là do Maple dùng các dãy làm đối số truyền cho các hàm . Do đó lời gọi hàm op(s1) được định giá thành op(a,b,c) , nhưng do hàm op chỉ nhận nhiều nhất 2 đối số : đối số đầu là một số nguyên hay một phạm vi số ( tức là một mảng số nguyên liên tiếp , thí dụ như 2 4 là mảng các số nguyên trong phạm vi từ 2 đến 4 ) , còn đối số thứ 2 là một biểu thức do đó lệnh trện s ẽ bị Maple báo lỗi . Hàm seq() rất thuận tiện cho việc tạo ra một dãy các phần tử phụ thuộc tham số . Như trình bày ở phần khai báo seq() sẽ tạo ra một dãy các phần tử theo một công thức hay một phép gán nào đó . Thông qua sự biến đổi các chỉ số trong phạm vi các số nguyên cho một K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 8 Bài toán thiên văn biểu thức ,ta thu được một dãy ( hay nói cách khác , trong trường hợp này có thể xem dãy như là tập giá trị của một hàm trên một dải số nguyên nào đó ) . Lệnh seq() thực hiện khá giống lệnh sum() trong việc áp dụng mỗi giá trị của chỉ mục trong phạm vi cho trước vào hàm để thu được các phần tử của dãy . Lệnh seq() tạo ra một dãy bằng cách tác dụng hàm f lên mỗi thành phần của danh sách cho trước x : 2. Vòng lặp for: Vòng lặp là cấu trúc được ứng dụng rộng rãi. Trong phần này chúng ta quan tới cách sử dụng nó để tạo ra dãy cấu trúc đồ thị để hi ện thị như hình ảnh trong sản xuất hoạt ảnh. Vòng lặp rất hữu ích khi cấu trúc của dãy là đủ phức tạp mà thủ tục seq không thể biểu diễn rõ rang.Vòng lặp for cúng cấp một cấu trúc lặp lại việc thực hiện một nhóm các câu lệnh. Một trong các dạng của nó là số lần lặ được chỉ ra bằng một biến có quy luật như số đếm. Cú pháp chung là: for i from m by j to n do statement 1; statement 2; statement k end Giả thiết rằng j là số dương và biến lặp i được khởi tạo từ m, nếu i<= n thì các câu lệnh từ 1 tới k trong than vòng lặp được thực hiện. Sau đó i được tăng lên bởi j và nếu i<= n thì dãy các câu lệnh trong than vòng lặp lại được thực hiên một lần nữa. nó còn được tiến hành tới khi kiểm tra i<= n là sai, tại điểm đó thân vòng lặp không được thực hiện nữa và phép lặp kết K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 9 Bài toán thiên văn thúc. Bất kỳ một giá trị mà có thể được yêu cầu để xác định n chỉ được thực hiện một lần khi bắt đầu vòng lặp, và không thay đổi sau mỗi làn lặp. Chỉ số mặc đinh lặp là 1 j =1 và có thể bỏ qua đặc tả by j. Thực tế, m được mặc định là 1 cũng khá nhiều, khi đó đặc tả from m cũng có thể bỏ qua trong trường hợp này. Nếu j là một số âm, thì I s ẽ đếm ngược từ m tới n, và kiểm tra để cho vào vóng lặp mỗi lần i>= n. Thông thường, bản chất của việc lặp của một vòng lặp là sử dụungj giá trị tích lũy của cái gì đó hoặc của đối tượng. ví dụ: Trong phương pháp tương tự, ta có thể sử dụng vòng lặp để sinh ra một dãy. Một dạng khác của vòng lặp for là thực hiện lặp thân vòng lặp vớ i mỗi giá trị của biến điều khiển trong T, T là một dãy, danh sách hay tập hợp. Bất cứ giá trị nào có thể được yêu cầu để xác định T chỉ được thực hiên duy nhất một lần lúc bắt đầu vòng lặp và không thay đổi trong quá trình lặp. Cú pháp chung là: for i in T do statement 1; statement 2; statement k end do; 2. Vòng lặp while while condition do statement 1; Vòng lặp white thực hiện lặp nhóm câu lệnh miễn là điều kiện lặp còn đúng. Cú pháp chung là: K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 10 . Bài toán thiên văn K51 TOÁN TIN2 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA TOÁN TIN ỨNG DỤNG TIỂU LUẬN Đề tài: Bài toán thiên văn Giáo viên hướng dẫn:. K51 TOÁN TIN2 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 11 Bài toán thiên văn PHẦN BA: ỨNG DỤNG MAPLE GIẢI BÀI TOÁN I. QUỸ ĐẠO CỦA MỘT THIÊN THỂ TÍNH TOÁN BẰNG HÌNH THỨC 1. Bài toán • Xét. Ngô Thị Hiền, Lê Thị Hiền Lớp: toán 2-k51. Hà Nội, tháng 11 năm 2009 NGÔ THỊ HIỀN, LÊ THỊ HIỀN 1 Bài toán thiên văn PHẦN A: GIỚI THIỆU BÀI TOÁN Kể từ ngày quả táo rơi xuống