299
Phạm Minh Hoàng Maple và các bài toán ứng dụng Nhà xuất bản Khoa Học và Kỹ Thuật

Maple Va Cac Bai Toan Ung Dung

  • Upload
    slowlove

  • View
    1.809

  • Download
    13

Embed Size (px)

Citation preview

Page 1: Maple Va Cac Bai Toan Ung Dung

Phạm Minh Hoàng

Maplevà các

bài toán ứng dụng

Nhà xuất bản Khoa Học và Kỹ Thuật

Page 2: Maple Va Cac Bai Toan Ung Dung

Lời nói đầu

Tôi còn nhớ cách đây không lâu, một học sinh lớp 9 đặt cho tôi một bài toán như sau:

∼∼∼∼∼∼∼

Hai đội công nhân làm chung một công việc trong 2g24'. Nếu mỗi đội chianhau làm nửa công việc thì thời gian hoàn tất là 5g. Hỏi thời gian mỗi độilàm xong công việc của mình?

Loay hoay một lúc tôi mới tìm ra phương trình của bài toán và phải khó khăn lắm tôi mới cắtnghĩa được cho em, rồi lại phải mất thêm một ít thời gian mới có thể tự mình tìm được phươngtrình của bài toán. Nhưng đến khi thay số vào em lại làm sai, phải đợi đến khi em dùng máytính thì mọi chuyện mới xong.

Bất chợt tôi đặt câu hỏi: tìm ra được phương trình bài toán là co như đã đi được 3/4 đoạnđường, phần còn lại chỉ là thay số, vậy mà em học sinh này lại làm sai, thật uổng. Nếu là ngườichấm điểm, tôi có thể châm chước và cho em 7/10, nhưng nếu chỉ căn cứ vào kết quả hoặc thibằng trắc nghiệm có thể em bị 0 điểm. Vậy thì rõ ràng máy tính đã thay đổi tất cả.

Ngày nay, ở Việt Nam tất cả các kỳ thi cấp trung học trở lên đều được phép dùng máy tính(không lập trình), điều đó có nghĩa là xã hội đã chấp nhận cho các em miễn làm tính bằng tay,mà chẳng ai đặt vấn đề ''mất tư duy'' Toán học cả. Lên đến bậc đại học, công cụ này còn trởlên tối cần thiết hơn cho sinh viên khoa học tự nhiên. Bắt sinh viên tính các bước trong phươngpháp Runge-Kutta không máy tính là các em chịu thua ngay mặc dù tất cả đều hiểu bài. Và lêncao hơn nữa, các nhà nghiên cứu còn phải hoàn toàn dựa vào những máy tính siêu mạnh vớinhững phần mềm thích ứng để hỗ trợ họ trong các bài toán phức tạp. Như thế, họ đã ''khoán''tất cả những tính toán tầm thường cho máy tính và để hết tâm trí của mình vào những chủ đềchuyên sâu của họ.

Vị trí và vai trò của máy tính đã ngày một trở nên quan trọng, nhất là trong lãnh vực giáodục. Tin học hầu như là một môn bắt buộc cho các sinh viên ngay từ bước đầu vào đại học, vàcàng lên cao, càng đi sâu vào một lãnh vực nào đó, con người bắt buộc phải dùng đến máy tính.Bước ra ngoài đời, bước vào kỹ nghệ, công nghiệp, vai trò của máy tính lại trở nên quan trọnghơn, đến nỗi chúng ta có thể khẳng định rằng: ngày nay nếu không có máy tính, con người sẽkhông làm gì được cả.

Không máy tính, ngày hôm nay con người không thể xây dựng những cây cầu hiện đại,không thể dự đoán được thời tiết, không thể vẽ được các vỏ tàu, cánh máy bay, không thể đo độrung của một chiếc tên lửa... vốn là những vật dụng, những phương tiện gần gũi với chúng ta.Lý do là máy tính có một khả năng tính toán và một bộ nhớ gần như vô hạn.

Tuy nhiên, cho dù có mạnh đến đâu đi chăng nữa, tất cả các máy tính đền tính toán trêncác con số. Chúng có thế tính một triệu số lẻ của số π trong nháy mắt nhưng không tai nào tìmra°8

n=0(1)n

2n+1= π

4. Điều này gây ít nhiều khó khăn cho những nhà khoa học vốn đã quen với

các ký hiệu như x, BBxf(x, s), ln[sin(x2 + 1)] . . . nên họ vẫn ao ước có một công cụ thích ứng để

làm việc, một phần mềm không chỉ thao tác các con số, mà phải làm được điều này trên các ký

Page 3: Maple Va Cac Bai Toan Ung Dung

hiệu quen thuộc. Đó là một phần mềm tính toán hình thức1. Và phải đợi tới năm 1980 đại họcWaterloo (Canada) mới hoàn tất công trình đồ sộ của mình và cho ra đời Maple.

Maple được viết ra từ mục đích đó.Vào năm 1867, nhà thiên văn Delaunay đã bỏ ra 20 năm đằng đẵng để thiết lập và tính toán

quĩ đạo của mặt trăng dưới tác dụng của mặt trời. Biểu thức hoàn toàn bằng ký tự (hình thức)này dài gần 2000 trang giấy. Một thế kỷ sau, năm 1970, nhà toán học A. Deprit chỉ mất 9 thángđể viết một chương trình để tính toán lại2. Ngày nay, có lẽ chúng ta chỉ mất khoảng nửa giờ!Maple quả là tiết kiệm cho người dùng một khoảng thời gian khổng lồ.

Nhưng Maple có thể còn làm nhiều hơn thế.Tôi còn nhớ một trong những ''kinh nghiệm xương máu'' của mình hồi học lớp 12. Thầy

dạy chúng tôi tính diện tích hình tròn bán kính r bằng cách chia nhỏ nó ra thành từng mảnh nhỏvà xem như đó là những hình chữ nhật rồi cộng diện tích chúng lại để có được kết quả là πr2.Nhưng tôi mãi lấn cấn cái chuyện phải xem như đó là những hình chữ nhật. Vì nếu ''xem như''thì rõ ràng đã có sai số, và nếu cộng hết các hình chữ nhật là cộng hết cả các sai số thì đâu thểra một cái gì tròn trịa như πr2. Chính cái lấn cấn ấy đã làm điểm toán của tôi sút giảm nghiêmtrọng. Mãi đến khi có được Maple tôi mới nghiệm ra ''chân lý'' của vấn đề khi vẽ thật nhiều hìnhchữ nhật để thấy rằng rõ ràng là nó tiến về diện tích hình tròn.

Đến đây , tôi nghĩ có nhiều thầy (thậm chí có cả các bạn sinh viên) phì cười cho rằng tôithuộc loại ''chậm tiêu''. Tôi nghĩ điều ấy không sai, nhưng riêng tôi, tôi lại nhìn vấn đề cáchkhác. Cái gì đã làm cho mình hiểu ra vấn đề? câu trả lời là hình ảnh. Ngày xưa tôi không ''tiêu''được chẳng qua là vì thầy không đủ sức vẽ thật nhiều những hình chữ nhật như Maple. Vậy tạisao chúng ta không tận dụng những khả năng vượt trội của máy tính để tiết kiệm thời gian?.

Tôi nghĩ không cần dài dòng để thuyết phục về ưu điểm của máy tính trong một bài thuyếttrình (chứ không riêng gì việc học). Một diễn giả ngồi đọc lê thê sẽ không cuốn hut bằng chiếucùng một nội dung ấy lên màn hình. Mà đã không cuốn hút thì khó đưa nội dung ''vào đầu'' thínhgiả. Đặc biệt nếu những nội dung ấy là những trừu tượng như toán thì lại càng phải cụ thể hóa,sinh động hóa.

Tôi còn nhớ khi dạy toán bằng Maple vào một ngày không có máy chiếu. Sinh viên ngồinhìn bảng đen mà tôi cứ nghĩ tâm hồn các bạn đang lượn lờ ở ''chốn bồng lai'' nào (vì các kháiniệm ấy các em đều đã học qua). Nhưng khi có máy chiếu, tôi thấy các em háo hức mừng lộ ramặt. Cặp mắt lờ đờ khi nãy bỗng sinh động khác thường, cứ mỗi khi thay slide là khuôn mặtcác em cũng thay đổi theo. Rồi đến khi thực hiện những bài tập lớn cuối học kỳ, rất nhiều bạnđã làm nhiều hơn những gì chủ đề đòi hỏi. Lý do là các bạn ấy đã hiểu rõ hiện tượng mà khôngngần ngại sử dụng sức mạnh của máy tính để khai triển xa hơn. Điều đó là việc ''xưa nay hiếm''.Vậy thì rõ ràng Maple đã giúp ích cho việc học toán.

Trên đây tôi vừa nhắc đến những hình chữ nhật xấp xỉ hình tròn. Điều ấy nếu là một ngườicó ''hoa tay'', thầy tôi có thể vẽ được. Nhưng khi đó là những hình trong không gian, nhữnghình co-nic 3 chiều thì không dễ dàng đề vẽ. Tôi còn nhớ khi dạy phương pháp đường dốc nhất(steepest descent) trong môn Tối Ưu hóa hàm nhiều biến, để cắt nghĩa phương pháp, tôi cứ phảiliên tục làm những động tác một người đang lao xuống vực để các bạn hiểu ý nghĩa hình họccủa gradient. Nhưng đến khi hiển thị bằng máy tính thì tối chắc chắn các bạn sinh viên đã hiểutại sao phương pháp steepest ascent (nghĩa là dốc lên) mà tối không cần phải làm động tác nàokhác.

Maple không chỉ giúp bằng hình ảnh mà còn kích thích óc sáng tạo. Chúng ta đã dạy chohọc sinh làm thế nào để viết phương trình một đường thẳng qua hai điểm; vậy thì các em có thể

1Tiếng Anh là formal computation tiếng Pháp là calcul formel.2và đã tìm thấy chỉ một chỗ sai trong 2000 trang của Delaunay!

ii Phạm Minh Hoàng

Page 4: Maple Va Cac Bai Toan Ung Dung

dùng Maple xác định được đường cao, đường trung tuyến, sau đó xác định được trực tâm, trọngtâm rồi viết phương trình đường thẳng Euler. Tất cả các công đoạn ấy làm bằng máy tính đâucó làm ''nhụt'' tư duy toán học của các em đâu, trái lại nó làm cho các em có cơ hội sử dụng mộtvũ khí sắc bén của trí tuệ là trí tưởng tượng3. Rồi ở bậc đại học, chúng ta đã dạy cho sinh viênđiều kiện để chéo hóa một ma trận M và áp dụng nó để tính Mn. Nếu làm bằng tay sẽ rất ''oải'',dễ chán, thậm chí mới chỉ là ma trận bậc 3; nhưng với Maple, sinh viên có thể ''vui chơi'' và tựtạo cho mình những trường hợp cực kỳ phức tạp và như thế các bạn sẽ hiểu rõ vấn đề. Các thídụ như thế còn rất nhiều và trong mọi lãnh vực như lý, hóa, sinh, kỹ thuật, kiến trúc... Rõ rànglà nó giúp chúng ta học hiệu quả hơn.

Tôi thực sự chưa bao giờ nghĩ rằng Maple có thể thay thế người thầy vì để đánh một lệnhMaple để tính diện tích hình tròn thì ai cũng có thể làm được, thậm chí là một học sinh cấp II!nhưng nếu hiểu được ý nghĩa hình học của nguyên hàm (và các vấn đề sau sa hơn) thì không thểthiếu thầy được. Maple chỉ cung cấp cho chúng ta một công cụ để hiểu rõ vấn đề và khơi nguồnsáng tạo mà thôi. Nhưng đó lại là yếu tố rất cần trong cuộc đời sinh viên kể cả khi đã ra trường.

Với tất cả những tâm tình đó, tôi đã viết cuốnMaple và các bài toán ứng dụng này. Saulần xuất bản thứ nhất tác giả bỏ đi những chủ đề phức tạp đồng thời thêm một số chương ích lợihơn cho việc học Maple, trong đó có một chương nói về cú pháp dành cho các độc giả chưa cókinh nghiệm với phần mềm này. Tác giả cũng chân thành xin lỗi bạn đọc về những sơ sót đãmắc phải trong lần phát hành đầu tiên.

Mọi ý kiến đóng góp xin chuyển về địa chỉ: Nhà xuất bản Khoa Học và Kỹ Thuật, 28 ĐồngKhởi, phường Bến Nghé, quận I, TPHCM. ĐT: 822.50.62-829.66.28

Ước mong của tác giả là cuốn sách nhỏ bé này sẽ giúp bạn đọc có một cái nhìn mới về vũtrụ vô tận của Toán học.

Sài Gòn Xuân Mậu Tí 2008Phạm Minh Hoàng

email: [email protected]

Vài dòng về tác giả:Sinh năm 1955 tại Sài

Gòn, đậu tú tài và đi du học Phápnăm 1973, tốt nghiệp Cao học Cơ HọcỨng Dụng tại Đại học Pierre & MarieCurie(Paris VI) và đã đi làm nhiều nămvề tịn học quản lý và tin học kỹ nghệtại Paris. Năm 2000 trở về Việt Namvà hiện công tác tại Bộ Môn ToánỨng Dụng, Khoa Khoa HọcỨng Dụng, Trường Đại

học Bách KhoaTPHCM.

3Kiến thức không quan trọng bằng trí tưởng tượng. Kiến thức thì giới hạn nhưng trí tưởng tượng có thể vâyquanh nhân loại (Albert Einstein)

Phạm Minh Hoàng iii

Page 5: Maple Va Cac Bai Toan Ung Dung

Mục lục

Trang

Lời nói đầu i

Chương 1. Cú pháp Maple 11.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Các thao tác trên một biểu thức . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Lệnh simplify: đơn giản . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 Lệnh expand: khai triển . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.3 Lệnh factor: thừa số . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.4 Lệnh combine: gom . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.5 Lệnh convert: biến đổi . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Mệnh đề và hàm mũi tên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4 Các thao tác trên một dãy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Giải tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.6 Đồ thị hai chiều . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.7 Giải phương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.7.1 Phương trình đại số . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.7.2 Phương trình quy nạp . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.8 Phương trình vi phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.8.1 Cách giải giải tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.8.2 Cách giải số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.9 Đại số tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.10 Lập trình trong Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.10.1 Khai thác sau khi biên dịch . . . . . . . . . . . . . . . . . . . . . . . . 211.11 Nguyên hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.12 Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.12.1 Các lệnh cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.12.2 Đại số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.12.3 Phương trình vi phân . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.12.4 Nguyên hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.12.5 Lập trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.13 Bài đọc thêm: Thalès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

iv

Page 6: Maple Va Cac Bai Toan Ung Dung

Mục lục

Chương 2. Bài toán cực trị 332.1 Tiết kiệm nhôm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.2 Đoạn đường gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3 Góc nhìn của phi hành gia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.4 Hình nón và hình cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.4.1 Tính bằng thể tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.4.2 Tính bằng diện tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.5 Khúc cua gắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.5.1 Vấn đề 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.5.2 Vấn đề 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.6 Ellipsoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.6.1 Hình vẽ cho bài toán Ellipsoid . . . . . . . . . . . . . . . . . . . . . . 48

2.7 Cực trị của hàm hai biến: Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . 482.8 Cực trị của hàm ba biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.9 Bài đọc thêm: Pythagore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Chương 3. Đồ thị ba chiều 543.1 Thí dụ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2 Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.3 Thí dụ 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.4 Thí dụ 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.5 Bài đọc thêm: Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Chương 4. Hình học giải tích 694.1 Tìm và vẽ tiếp tuyến chung của hai vòng tròn . . . . . . . . . . . . . . . . . . 694.2 Diện tích phần giao của hai vòng tròn . . . . . . . . . . . . . . . . . . . . . . 714.3 Quỹ tích 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.4 Quỹ tích 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.5 Quỹ tích 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.5.1 Cách giải thứ nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.5.2 Cách giải thứ hai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

4.6 Giới hạn của Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.6.1 Một thí dụ thuần hình thức . . . . . . . . . . . . . . . . . . . . . . . . 814.6.2 Một khúc mắc... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.6.3 Một thí dụ điển hình . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.7 Bài đọc thêm: Archimède . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Chương 5. Bài toán mô phỏng 895.1 Cạnh tranh tay đôi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5.1.1 Giải bằng hàm tổ hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . 905.1.2 Gải bằng ma trận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Phạm Minh Hoàng v

Page 7: Maple Va Cac Bai Toan Ung Dung

Mục lục

5.1.3 Giải bằng hàm quy nạp rsolve . . . . . . . . . . . . . . . . . . . . . 915.1.4 Biểu diễn trong không gian 3-D . . . . . . . . . . . . . . . . . . . . . 91

5.2 Kinh tế ASEAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.3 Lãi suất ngân hàng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5.3.1 Lập trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.3.2 Hàm số hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.3.3 Dãy truy hồi (quy nạp) . . . . . . . . . . . . . . . . . . . . . . . . . . 945.3.4 Phương trình vi phân . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5.4 Nuôi tằm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975.5 Bồn khuấy nước đều . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025.6 Bài toán cân bằng môi sinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035.7 S.A.R.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.7.1 Giải với các đại lượng rời rạc . . . . . . . . . . . . . . . . . . . . . . 1055.7.2 Giải với các đại lượng liên tục . . . . . . . . . . . . . . . . . . . . . . 108

5.8 Bài đọc thêm: Eratosthene . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Chương 6. Bài toán kích thước hình xoay 1156.1 Diện tích, thể tích ellipse và ellipsoid . . . . . . . . . . . . . . . . . . . . . . . 115

6.1.1 Diện tích một ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.1.2 Thể tích một ellipsoid . . . . . . . . . . . . . . . . . . . . . . . . . . 1166.1.3 Diện tích một ellipsoid . . . . . . . . . . . . . . . . . . . . . . . . . . 117

6.2 Thể tích sinh ra bởi phép quay quanh trục Ox của một hàm . . . . . . . . . . . 1186.3 Thể tích sinh ra bởi phép quay quanh trục Oy của một hàm . . . . . . . . . . . 1186.4 Trường hợp một hàm nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196.5 Tìm thể tích sinh ra bởi phép quay của phần giao của hai hàm . . . . . . . . . . 120

6.5.1 Xoay quanh Ox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206.5.2 Xoay quanh Oy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6.6 Một trường hợp phức tạp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.6.1 Xoay quanh Ox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.6.2 Xoay quanh Oy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

6.7 Bài đọc thêm: Galilée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Chương 7. Bài toán sức bền vật liệu 1277.1 Tải trọng đều . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.1.1 Hai đầu gối đơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287.1.2 Ngàm một đầu, đầu kia tự do . . . . . . . . . . . . . . . . . . . . . . . 1297.1.3 Ngàm hai đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1.4 Ngàm một đầu, đầu kia gối đơn (hệ siêu tĩnh) . . . . . . . . . . . . . . 1317.1.5 Ngàm một đầu, đầu kia gối đơn ở một điểm bất kỳ u . . . . . . . . . . 131

7.2 Tải trọng tập trung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.2.1 Ngàm một đầu, lực tập trung ở đầu kia. [Hình 7.14 (a)] . . . . . . . . . 137

vi Phạm Minh Hoàng

Page 8: Maple Va Cac Bai Toan Ung Dung

Mục lục

7.2.2 Ngàm một đầu, lực tập trung ở x = u l [Hình 7.14 (b)] . . . . . . . . 1387.2.3 Hai gối đơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

7.3 Bài đọc thêm: Képler - Thái Dương hệ . . . . . . . . . . . . . . . . . . . . . . 142

Chương 8. Bài toán đạn đạo 1458.1 Môi trường không có ma sát không khí . . . . . . . . . . . . . . . . . . . . . . 1458.2 Môi trường có ma sát không khí . . . . . . . . . . . . . . . . . . . . . . . . . 148

8.2.1 Thí dụ 1: nghiệm giải tích . . . . . . . . . . . . . . . . . . . . . . . . 1498.2.2 Thí dụ 2 : nghiệm bằng phương pháp số . . . . . . . . . . . . . . . . . 1498.2.3 Tìm góc bắn xa nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518.2.4 Nối dài tầm bắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548.2.5 Sức cản trong trường hợp phức tạp . . . . . . . . . . . . . . . . . . . . 1568.2.6 Dưỡng Do Cơ thế kỷ XXI! . . . . . . . . . . . . . . . . . . . . . . . . 157

8.3 Bài đọc thêm: Shwerer Gustav . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Chương 9. Bài toán dao động 1: Lò xo 1689.1 Lò xo nằm ngang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

9.1.1 Trường hợp 1 : Không có lực giảm xóc, λ = 0 . . . . . . . . . . . . . 1709.1.2 Trường hợp 2 : Lực giảm xóc, λ ¡ 0 . . . . . . . . . . . . . . . . . . 1719.1.3 Khảo sát hiện tượng cộng hưởng . . . . . . . . . . . . . . . . . . . . . 174

9.2 Hệ ba lò xo nằm ngang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1779.3 Bài đọc thêm: Cầu Tacoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Chương10.Bài toán dao động 2: Con lắc toán học 18310.1 Con lắc đơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

10.1.1 Trường hợp 1: góc quay nhỏ . . . . . . . . . . . . . . . . . . . . . . . 18410.1.2 Trường hợp 2: góc quay lớn không ma sát . . . . . . . . . . . . . . . . 18510.1.3 Trương hợp 3: góc quay lớn với ma sát . . . . . . . . . . . . . . . . . 188

10.2 Con lắc kép . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18910.2.1 Trường hợp 1: góc quay nhỏ, tính toán hình thức . . . . . . . . . . . . 19110.2.2 Trường hợp 2: góc quay lớn - Tính toán số . . . . . . . . . . . . . . . 19310.2.3 Kiểm chứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

10.3 Con lắc đơn đàn hồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.3.1 Vẽ hình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.3.2 Tính toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

10.4 Bài đọc thêm: Lịch sử số π . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Chương11.Số học và ứng dụng 20911.1 Tóm tắt lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

11.1.1 Số học mô-đun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20911.1.2 Phép chia Eculide trong Z /mZ . . . . . . . . . . . . . . . . . . . . . 21011.1.3 Ứng dụng của phép tính đồng dư . . . . . . . . . . . . . . . . . . . . . 212

Phạm Minh Hoàng vii

Page 9: Maple Va Cac Bai Toan Ung Dung

Mục lục

11.1.4 Định lý Trung Quốc . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.2 Mật mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

11.2.1 Mã César . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21711.2.2 Mã Khối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21911.2.3 Mã RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

11.3 Bài đọc thêm Bẻ khóa RSA: Con đường chông gai . . . . . . . . . . . . . . . 229

Chương12.Xử lý hình động 23112.1 Chuyển động đơn giản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

12.1.1 Thí dụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23112.1.2 Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23212.1.3 Thí dụ 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

12.2 Chuyển động phức tạp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23412.2.1 Thí dụ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23412.2.2 Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

12.3 Chuyển động có sự thay đổi vận tốc . . . . . . . . . . . . . . . . . . . . . . . 24012.3.1 Thay đổi đều . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24012.3.2 Thay đổi không đều - Thí dụ 1 . . . . . . . . . . . . . . . . . . . . . . 24112.3.3 Thay đổi không đều - Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . 242

12.4 Chuyển động với một hay nhiều hình tĩnh . . . . . . . . . . . . . . . . . . . . 24512.4.1 Thí dụ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24512.4.2 Thí dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

12.5 Đường lập lên bởi hình động . . . . . . . . . . . . . . . . . . . . . . . . . . . 24812.5.1 Viên bi lăn theo đường thẳng . . . . . . . . . . . . . . . . . . . . . . . 24812.5.2 Viên bi lăn theo một đường bất kỳ . . . . . . . . . . . . . . . . . . . . 25012.5.3 Cycloid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25212.5.4 Điểm động học . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

12.6 Bài đọc thêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

Tài liệu tham khảo 278

Chỉ mục 280

viii Phạm Minh Hoàng

Page 10: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

Hình Trang

1.1 (a) Ba lời giải và (b) khi vẽ chung với tập hợp các lời giải . . . . . . . . . . . . 151.2 Lời giải phương trình vi phân phương pháp giải tích . . . . . . . . . . . . . . . 161.3 Lời giải phương trình vi phân và phương pháp số . . . . . . . . . . . . . . . . 181.4 Sơ đồ tạo và sử dụng tập tin thực thi . . . . . . . . . . . . . . . . . . . . . . . 22

2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.4 (a) Hình nón nội tiếp (b) đương biểu diễn của thể tích theo h khi R = 3. . . . . 382.5 (a) hình nón ngoại tiếp (b) đường biểu diễn của thể tích theo h khi R = 3. . . . 392.6 Đồ thị của diện tích theo h khi R = 3: (a) trường hợp nội tiếp; (b) ngoại tiếp . . 412.7 Hình nón nội tiếp và ngoại tiếp hình tròn . . . . . . . . . . . . . . . . . . . . . 432.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.10 Hình hộp nội tiếp trong một ellipsoid . . . . . . . . . . . . . . . . . . . . . . . 472.11 Hình khối cực đại trong một ellipsoid . . . . . . . . . . . . . . . . . . . . . . 492.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.2 Đường đồng mức của hàm f(x, y) . . . . . . . . . . . . . . . . . . . . . . . . 563.3 Cực trị hàm nhiều biến và hình chiếu của nó . . . . . . . . . . . . . . . . . . . 583.4 Các điểm dừng của f(x, y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.5 Điểm cực đại và cực tiểu của f(x, y) . . . . . . . . . . . . . . . . . . . . . . . 603.6 Điểm yên ngựa của hàm f(x, y) . . . . . . . . . . . . . . . . . . . . . . . . . 613.7 Đồ thị gradient, đường đồng mức và chuyển động của Pk . . . . . . . . . . . . 623.8 Chuyển động Pk trong không gian . . . . . . . . . . . . . . . . . . . . . . . . 633.9 Biểu diễn tham số của hàm ràng buộc g(x, y) trên f(x, y) . . . . . . . . . . . . 653.10 (a) Đường đồng mức và ellips 2D, (b) Véc-tơ gradient tại điểm cực trị . . . . . 67

4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

ix

Page 11: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.7 (a), (b) Vị trí tương đối của H; (c) Quỹ tích H . . . . . . . . . . . . . . . . . . 794.8 Quỹ tích của H với các vị trí M . . . . . . . . . . . . . . . . . . . . . . . . . . 804.9 Vòng tròn trực giao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.2 Thương vụ với đồ thị 3-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.4 Sai biệt giữa phép giải rời rạc và liên tục . . . . . . . . . . . . . . . . . . . . . 965.5 (a), (b) Phát triển ổn định sau 30 tháng và (c) phát triển không ổn định . . . . . 985.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025.8 Đường biểu diễn của lượng muốn (a) trường hợp 1⃝ và (b) trường hợp 2⃝ . . . 1045.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055.10 Lây lan của bệnh dịch khi không có và khi có thuốc chữa . . . . . . . . . . . . 107

5.11 Lây lan của bệnh dịch với b =1

10và b =

1

2. . . . . . . . . . . . . . . . . . . 109

5.12 Lây lan của bệnh dịch trường hợp c) và d) . . . . . . . . . . . . . . . . . . . . 1105.13 Thuật toán "Sàng Eratosthene" và cách đo chu vi trái đất. . . . . . . . . . . . . 114

6.1 ellipse và ellipsoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.2 Đồ thị y = f(x) =1

2x3 và hình xoay quanh Ox . . . . . . . . . . . . . . . . . 119

6.3 Đồ thị x = f1(y) và hình xoay quanh Oy . . . . . . . . . . . . . . . . . . . . 1206.4 Đồ thị một hàm nội suy và hình xoay quanh Ox . . . . . . . . . . . . . . . . . 1216.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.6 Phần giao của hai hàm và hình xoay quanh Ox,Oy . . . . . . . . . . . . . . . 1236.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.8 Phần giao của hai hàm trong một trường hợp phức tạp và (b),(c) cách vẽ để tính

thể tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287.3 Chuyển vị, góc quay và moment trường hợp hai gối đơn . . . . . . . . . . . . 1307.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317.5 Chuyển vị, góc quay và moment trường hợp ngàm một đầu . . . . . . . . . . . 1327.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337.7 Chuyển vị, góc quay và moment trường hợp ngàm hai đầu . . . . . . . . . . . 134

x Phạm Minh Hoàng

Page 12: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

7.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357.9 Chuyển vị, góc quay và moment trường hợp ngàm một đầu, đầu kia gối đơn . . 1367.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.11 Chuyển vị, moment ngàm một đầu và gối đơn ở: (a) x = 8 và (b) x = 7 (cách

giải thứ nhất) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.13 Chuyển vị, moment trường hợp ngàm một đầu và gối đơn ở: (a) x = 8 và (b)

x = 7 (cách giải thứ hai) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.14 Các trường hợp tải trọng tập trung với ngàm . . . . . . . . . . . . . . . . . . . 1397.15 Chuyển vị, góc quay và moment trường hợp ngàm một đầu, lưu tập trung khi:

(a) u = 4 và (b) u = 6 (các tỷ lệ được sửa đổi để dễ nhìn) . . . . . . . . . . . . 1397.16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1407.17 Lực tập trung, hai nối đơn qua hai cách giải . . . . . . . . . . . . . . . . . . . 1417.18 Thái Dương Hệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1458.2 Quỹ đạo trong trường hợp không ma sát với: (a) v0 = 300 và (b) v0 = 900m/s 147

8.3 Đạn đạo với hệ số ma sát bằng : (a) k = 1 (tối đa) và (b) k =1

10. . . . . . . . 151

8.4 Đạn đạo 5 góc bắn α P[

π

10,7π

30

]với ma sát . . . . . . . . . . . . . . . . . . . 153

8.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548.6 Nối dài tầm bắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558.7 (a), (b): Các hàm sức cản p(h) và (c) tầm bắn tương ứng với α =

π

4. . . . . . 157

8.8 Đạn đọa của 6 góc bắn với độ gia tăngπ

50. . . . . . . . . . . . . . . . . . . . 158

8.9 Các hàm nội suy ftd(d), fdt(d) và fad(t) . . . . . . . . . . . . . . . . . . . . . . 1608.10 Các hàm nội suy ftd(t), fad(a) và fda(x) . . . . . . . . . . . . . . . . . . . . . 161

8.11 Đạn đạo của 6 góc bắn với độ gia tăngπ

60. . . . . . . . . . . . . . . . . . . . 162

8.12 Các hàm nội suy spline của fdt(t), fad(a), fda(x) . . . . . . . . . . . . . . . . . 1638.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648.14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1658.15 Hình 8.14: Đại bác Schwerer Gustav (hình mẫu trưng bày) . . . . . . . . . . . 166

9.1 Lò xo và khối m trên trục hoành . . . . . . . . . . . . . . . . . . . . . . . . . 1699.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

9.3 Chuyển động với giảm xóc λ = dfrac120 và1

11. . . . . . . . . . . . . . . . . 172

9.4 Chuyển động với độ giảm xóc lớn ∆ ¡ 0 và (b) giảm xóc tớn hạn (∆ = 0) . . 1739.5 Chuyển động với ảnh hưởng ngoại lực . . . . . . . . . . . . . . . . . . . . . . 1749.6 Chuyển động khi ngoại lực (a) cùng vận tốc góc và (b) không cùng vận tốc góc 1769.7 Hệ ba lò xo trước và sau khi chuyển động . . . . . . . . . . . . . . . . . . . . 1779.8 Chuyển động của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Phạm Minh Hoàng xi

Page 13: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

9.9 Cầu Tacoma lúc sụp đổ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18310.2 Con lắc đơn với góc quay nhỏ . . . . . . . . . . . . . . . . . . . . . . . . . . 18510.3 Con lắc đơn với góc quay lớn . . . . . . . . . . . . . . . . . . . . . . . . . . . 18710.4 Con lắc đơn với góc quay lớn và lực ma sát . . . . . . . . . . . . . . . . . . . 18910.5 Con lắc kép . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19010.6 Chuyển động cùng chiều với góc quay nhỏ . . . . . . . . . . . . . . . . . . . . 19410.7 Chuyển động ngược chiều với góc quay nhỏ . . . . . . . . . . . . . . . . . . . 19510.8 Chuyển động với u1(0) = u2(0) = 1 radian . . . . . . . . . . . . . . . . . . . 196

10.9 Chuyển động với u1(0) =π

2, u2(0) = 1radian . . . . . . . . . . . . . . . . . 197

10.10Đồ thị của động năng, thế năng và cơ năng của con lắc kép . . . . . . . . . . . 19710.11Con lắc đơn đàn hồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.12Khai báo con lắc đàn hồi và vài chuyển động . . . . . . . . . . . . . . . . . . 20010.13(a) Quỹ đạo con lắc và (b) đồ thị năng lượng . . . . . . . . . . . . . . . . . . . 20110.14Con lắc kép đàn hồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20310.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20410.16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20510.17Tukey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

12.1 Hình tĩnh của hàm sin(x) và 4 chuyển động khác nhau . . . . . . . . . . . . . 23212.2 (a) Chong chóng ở vị trí đầu, (b) sau khi quay 30o và (c) 4 chuyển động 5o . . . 23312.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23412.4 (a) Chuyển động tịnh tiến của bánh xe và (b) chuyển động quay của van . . . . 23512.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23612.6 Chuyển động của van xe trong 3 vòng quay . . . . . . . . . . . . . . . . . . . 23712.7 4 chuyển động với khoảng cách thời gian (a) đều và (b) không đều . . . . . . . 23812.8 (a) Cả hai xe ngừng cùng lúc và (b) lần lượt ngừng . . . . . . . . . . . . . . . 24012.9 (a) Chuyển động với thay đổi đều và (b) thay đổi không đều . . . . . . . . . . 24112.10Chuyển động theo định luật Képler . . . . . . . . . . . . . . . . . . . . . . . . 24312.11Chuyển động của mặt trăng quanh trái đất theo định luật Képler . . . . . . . . 244

12.12Tiếp tuyến của hàm f(x) = ex2 sin(x

2) . . . . . . . . . . . . . . . . . . . . . 246

12.13Sự hội tụ của°k

n=1[1

ncos(x)n cos(nx)] . . . . . . . . . . . . . . . . . . . . . 247

12.14Chuyển động thẳng của viên bi . . . . . . . . . . . . . . . . . . . . . . . . . . 249

12.15Đồ thị của hàm (a),sinx

x, (b)f(x) và (c)f(

x

3) nhân lên 30 lần . . . . . . . . . 250

12.16Chuyển động của viên bi (a) trước và (b) sau khi chỉnh vận tốc . . . . . . . . . 25112.17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25212.18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25412.19Biểu diễn của vận tốc và gia tốc ở hình (a) cardiod và (b) hình ốc sên . . . . . . 256

xii Phạm Minh Hoàng

Page 14: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

12.20Babylone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25612.21Pythagore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25712.22Thales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25712.23Hippocrates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25712.24Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25712.25Aristote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25812.26Archimede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25812.27Eratosthene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25812.28Apollonius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25812.29Ptoleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25912.30Liu Hui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25912.31Diophante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25912.32Hệ Thập Phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25912.33Abu-bin-Musa-al-Khwarizmi . . . . . . . . . . . . . . . . . . . . . . . . . . . 26012.34Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26012.35Qin Jinshao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26012.36Nicolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26112.37Copernic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26112.38Viète . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26112.39Kepler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26112.40Neper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26212.41Cavalieri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26212.42Descartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26212.43Desargues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26212.44Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26312.45Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26312.46Huygens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26312.47Leibniz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26312.48Seki Kowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26412.49Isaac Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26412.50Jacques Bernoulli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26412.51Rolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26512.52Jean Bernoulli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26512.53De Moivre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26512.54Jacapo Riccati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26512.55Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26612.56Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26612.57D'Alembert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26612.58Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26612.59Monge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Phạm Minh Hoàng xiii

Page 15: Maple Va Cac Bai Toan Ung Dung

Danh mục hình minh họa

12.60Legendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26712.61Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26712.62Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26712.63Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26812.64Laplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26812.65Bolzano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26812.66Navier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26812.67Green . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26912.68Galois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26912.69Lobachevsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26912.70Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26912.71Dirichlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27012.72Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27012.73Cayley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27012.74Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27012.75Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27112.76Sylvester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27112.77Venn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27112.78Poincaré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27112.79Frobenius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27212.80Lyapunov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27212.81RungeKutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27212.82Carmichael . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27212.83Borel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27312.84Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27312.85Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27312.86George Dantzig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27312.87Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27412.88Schwartz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27412.89Hall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27412.90Edward Lorenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27412.91Tukey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27512.92Mandelbrot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27512.93Adleman, Rivest, and Shamir . . . . . . . . . . . . . . . . . . . . . . . . . . . 27512.94Wiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

xiv Phạm Minh Hoàng

Page 16: Maple Va Cac Bai Toan Ung Dung

Danh mục bảng biểu

Bảng biểu Trang

1.1 Sắp xếp một dãy số thực . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2 Sử dụng worksheet với tập tin thực thi là pgm1.m . . . . . . . . . . . . . . . . 221.3 Sử dụng worksheet với tập tin thực thi là pgm2.m . . . . . . . . . . . . . . . . 23

2.1 Kết quả theo V và theo S của hình nón nội tiếp hình cầu . . . . . . . . . . . . . 42

5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

7.1 Thái Dương hệ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

8.1 Chương trình của 5 góc bắn với độ gia tăngπ

30. . . . . . . . . . . . . . . . . 152

9.1 Các lệnh tạo hình động cho hệ ba lò xo có một đầu tự do . . . . . . . . . . . . 180

10.1 Các lệnh để tạo hình tĩnh chuyển động con lắc đơn. . . . . . . . . . . . . . . . 18610.2 Các lệnh để tạo hình tĩnh chuyển động con lắc đơn với ma sát. . . . . . . . . . 18810.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

11.1 Bảng hoán chuyển mẫu tựÐÑ số . . . . . . . . . . . . . . . . . . . . . . . . 21711.2 Chương trình mã César . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21811.3 Kết quả mã khối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22011.4 Chương trình mã khối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22111.5 Chương trình mã RSA và phép bình phương liên tiếp . . . . . . . . . . . . . . 22411.6 Chương trình mã RSA có ký tên và liên kết với phép bình phương liên tiếp. . . 228

12.1 Chương trình cine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25512.2 Lịch sử các ký hiệu Toán học . . . . . . . . . . . . . . . . . . . . . . . 277

xv

Page 17: Maple Va Cac Bai Toan Ung Dung

Chương1

Cú pháp Maple

Chương này tóm tắt một số lệnh Maple cơ bản[1] và được dùng nhiều trong cuốn sách này.Để có thêm chi tiết cách hay nhất vẫn là tham khảo phần trợ giúp.

1.1 Tổng quan

Khi khởi động maple chúng ta sẽ có một màn hình đơn giản:Ở trên cùng chúng ta có một menu với những chức năng quen thuộc của một phần mềm

Windows: File,Edit,View,Insert... Cách sử dụng những chức năng này cũng khá dễdàng. Phần lớn nhất của màn hình là một trang trắng, đó là nơi người sử dụng đánh các lệnhMaple và nhận kết quả. Một lệnhMaple được đánh sau dấu ">" vàmặc định có nét chữ couriermàu đỏ, một kết quả có màu xanh và nét chữ times. Thí dụ:

> p:=x+3;

p := x + 3

Trước khi vào từng câu lệnh Maple, một vài quy tắc chung cần nhớ:

Lệnh đầu tiên là restart (không bắt buộc), để xoá sạch bộ nhớ và chuẩn bị cho nhữngđiều kiện làm việc tốt nhất cho Maple.

> restart:

Maple phân biệt chữ thường và chữ hoa: thí dụ simplify khác với Simplify. TrongMaple đại đa số các câu lệnh đều là chữ thường những có một số rất ít có cả chữ thườnglẫn chữ hoa (và dĩ nhiên chức năng cũng khác). Thí dụ expand và Exphand, thậm chícó những option toàn viết bằng chữ in.

Trong Maple, để gán giá trị vào một biến phải dùng dấu := Nếu ta đánh dấu =, Maple sẽkhông thông báo sai. Thí dụ:

> x:=Pi;

x := π

> y=sin(x);

1Phiên bản Maple được dùng trong sách là phiên bản 8

Page 18: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

y = 0

Maple hiển thị y = 0 vì nó lập lại những gì ta đánh nhưng trong biến y vẫn còn trống(người ta gọi biến y là biến tự do, trong khi x đã được gán cho giá trị π, x được gọi là biếnràng buộc). Kiểm chứng:

> x,y;

π, y

Để giải phóng một biến ràng buộc, (ta lấy thí dụ ở trên, x đang ràng buộc vì nó bằng π):

> x:='x';

> x;

x

Một lệnh của Maple được chấm dứt bằng dấu (;) hoặc dấu hai chấm (:). Nếu chấm phẩy,kết quả sẽ hiện ra ; nếu là hai chấm, lệnh sẽ được thực hiện nhưng kết quả không hiện ra(xem thí dụ trên).

Dấu %: Đây là một ký hiệu quan trọng trong Maple. Dấu % biểu tượng cho kết quả vừathực hiện. Thí dụ khi ta lấy nguyên hàm của 3sin(x):

> int(3*sin(x),x);

3 cos(x)

Ở đây, % biểu tượng cho 3 cos(x). Nếu lấy đạo hàm của nó ta sẽ tìm lại được 3 sin(x).Trong trường hợp này ta sẽ dùng dấu %:

> diff(%,x);

3 sin(x)

Mapple cho phép đánh nhiều lệnh trên một dòng. Lấy lại thí dụ trên:

> int(3*sin(x),x): diff(%,x)

3 sin(x)

Dòng trên gồm 2 lệnh. Lệnh nguyên hàm»

3 sin(x)d(x) chấm dứt bằng dấu hai chấm, kết

quả (-3cos(x)) không được hiển thị nhưng nó đã gán vào biến %. Lệnh đạo hàm chấmdứt bằng dấu chấm phẩy, kết quả được hiện ra.

Maple cho phép kết hợp nhiều lệnh vào một lệnh:

> diff(int(3*sin(x),x),x);

3 sin(x)

Hãy quan sát lệnh sau:

> Int(3*sin(x),x):=value(%);

Lệnh Int (với chữ I được viết hoa) sẽ cho ra kết quả là ký hiệu nguyên hàm»

3 sin(x)d(x),

nhưng vì lệnh này chấm dứt bằng dấu hai chấm nên ký hiệu này ẩn và được gán vào biến%.

2 Phạm Minh Hoàng

Page 19: Maple Va Cac Bai Toan Ung Dung

1.2. Các thao tác trên một biểu thức

Lệnh tiếp theo bắt đầu bằng dấu %= có nghĩa là»

3 sin(x)d(x) =, tiếp theo value(%)

có tác dụng tính giá trị của biến %. Và vì lệnh này chấm dứt bằng dấu chấm phẩy nên kếtquả của nó sẽ được in ra:»

3 sin(x)d(x) = 3 cos(x)

Ở đây % biểu tượng cho kết quả của cả dòng trên. Để có được phần bên trái dấu bằng, tadùng hàm lhs và bên phải bằng rhs[2]:

> lhs(%); rhs(%%);[3]»3 sin(x)d(x),3 cos(x)

Một vài quy tắc cần nhớ khi khai báo các hàm toán học: sin(x)2 chứ không phải sin2(x), tan(x)chứ không phải tg(x). Hàm mũ của x là exp(x) chứ không phải là ex. Ký hiệu π là Pi,số phức là I...

Dòng thuyết minh: Để đánh dòng thuyết minh (có thể dùng font tiếng Việt), nhấp chuộtvào nơi muốn đánh thuyết minh sau đó nhấp vào nút T nằm dưới hàng menu. Dấu > sẽbiến mất và tất cả những gì bạn đánh sẽ mang màu đen và đều là những dòng chữ khôngđược biên dịch bởi Maple. Sau khi hoàn tất, dùng chuột hoặc mũi tên

(trên bàn phím)để ra khỏi dòng thuyết minh, nhấp vào nút > để trở lại với các lệnh Maple.

Lưu vào ổ cứng: Tất cả các câu lệnh Maple và kết quả được gọi là một worksheet và đượclưu lại dưới 2 dạng: dạng cũ (MWS) và dạng mới (MW, kể từ phiên bản 9). Trong phạmvi cuốn sách này, chúng ta chỉ làm việc với dạng MWS.

Maple có trên 1500 lệnh (phiên bản 8), trong đó có những lệnh ít được dung. Để tránhphải nhập tất cả các lệnh vào RAM của máy một cách vô ích, người ta gom những lệnhcó cùng một ứng dụng voà những package (tạm dịch là gói). Những gói thường gặp làplots,linalg,geometry,plottools... Khi cần sử dụng, dùng hàm with đểnhập:

> with(plots):Ta cũng có thể dùng lệnh mà không cần nhập package bằng cách đánh(thí dụ lệnh display trong gói plots):

> plots[display](...);

1.2 Các thao tác trên một biểu thức

Lệnh simplify: đơn giản

Đơn giản một biểu thức (expression) đại số. Đây có thể là một đa thức, một biểu thức lượnggiác, logarithm, hàm mũ, hàm hữu tỷ...

> p:=1/(a*(a-b)*(a-c))+1/(b*(b-a)*(b-c))+1/(c*(c-a)*(c-b)):

> %=simplify(%);

2right hand side3Hàm rhs được dùng với 2 dấu %, vì sau khi thực hiện lệnh lhs(%);,biến % đã trở thành.phải thêm một dấu %

thứ hai để có được đúng giá trị bên phải dấu bằng.

Phạm Minh Hoàng 3

Page 20: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

1a(a b)(a c)

+1

b(b a)(b c)+

1c(c a)(c b)

=1

cab

> 2*cos(x)ˆ3+sin(x)*sin(2*x):=simplify(%);

2(cos(x))3 + sin(x) sin(2x) = cos(2x)

> (x-2)ˆ3/(xˆ2-4*x+4):%=simplify(%);(x 2)3

x2 4x + 4= x 2

Tuy nhiên có những trường hợp không "suôn sẻ" như ta nghĩ:> sqrt(xˆ2):%=simplify(%);?

x2 = csgn(x)x

csgn(x) là hàm cho ra 1 nếu Re(x) ¥ 0[4],và cho -1 nếu Re(x) 0.Tại sao? Trước khi trả lời, chúng ta đừng bao giờ quên rằng đây là môi trường tính toán

hình thức, điều đó có nghĩa là Maple phải làm việc trên các ký tự chứ không phải những con số.Khi ta viết ký tự x, trong đầu mình đã nghĩ ngay đến một con số (thậm chí là số dương). NhưngMaple không nghĩ như thế, nó sẽ hiểu đây là một biến bất kỳ, có thể là một số phức, một matrận, hay một đồ thị...Và trong tất cả những "giả thuyết" này, số phức là hợp lý hơn cả và câu trảlời của Maple (csgn(x)x) là hoàn toàn chính xác. Để kiểm chứng, ta có thể "bảo" cho Maplerằng x là một số thực bằng cách dùng hàm assume:

> assume(x,real):

> sqrt(xˆ2):%=simplify(%);?x 2 = |x |

Dấu được thêm khi một biến được assume. Tuy nhiên kể từ bây giờ để dễ đọc chúng ta sẽbỏ qua và không hiển thị ký tự này. Và khi x ¡ 0:

> assume(x,real):

> sqrt(xˆ2):%=simplify(%);?x2 = x

Nói tóm lại, trước khi áp dụng một quy tắc đơn giản, Maple phải xét đến bản chất của biến.Nhưng trước khi đi vào các thí dụ, chúng ta sẽ giải phóng x trở lại tình trạng ban đầu đồng thờiđể tránh lặp đi lặp lại chữ simplify, ta sẽ viết tắt thành Sp qua lệnh alias:

> s:='x': alias(Sp=Simplify): p:=(x-2)ˆ3/ sqrt(xˆ2-4*x+4)

> p:%=Sp(%)(x 2)3?

x2 4x + 4= (x 2)2csgn(x 2)

Maple đã đơn giản tử và mẫu cho (x 2) nhưng vẫn đặt dấu hỏi về dấu của x 2. Và khix ¡ 2 mọi chuyện sẽ tốt đẹp.

> assume (x>2): p:%=Sp(%);(x 2)3?

x2 4x + 4= (x 2)2

Tương tự với hàm ln:> x:='x':p:=ln(xˆ3) - 2*ln(x): p=Sp(p);

ln(x3) 2 ln(x) = ln(x3) 2 ln(x)

> assume (x>0): 'ln(xˆ3)-2*ln(x)'=Sp(p);[5]

4Trong Maple, phần thực của x ký hiệu là Re(x), phần phức là Im(x)5Dấu nháy đơn để tránh Maple tự động đơn giản khi x>0

4 Phạm Minh Hoàng

Page 21: Maple Va Cac Bai Toan Ung Dung

1.2. Các thao tác trên một biểu thức

ln(x3) 2 ln(x) = ln(x)

Ta có thể đơn giản hơn bằng cách:> Sp(p,assume=positive;

Tuy nhiên, Maple có option symbolic cho phép đơn giản mà không cần assume nhưngvẫn bảo toàn các quy tắc toán học thông thường:

> x:='x': (x-2)ˆ3/sqrt(xˆ2-4*x+4):%=Sp(%,Symbolic);(x 2)3?

x2 4x + 4= (x 2)2

> ln(xˆ3)-2*ln(x):%=Sp(%,Symbolic);

ln(x3) 2 ln(x) = ln(x)

Lệnh expand: khai triển

Hàm expand có mục đích:

Khai triển đa thức (phá dấu ngoặc, hiểu theo nghĩa rộng)

Biểu diễn các hàm lượng giác theo nx thành hàm theo x

> sqrt((4+sqrt(3))*(4-sqrt(3))):%=expand(%);b(4 +

?3(4?3)) =

?13

> cos(3*x):%=expand(%);

cos 3x = cos(x)3 3 cos(x)

> (a+b)/(a-b):%=expand(%);a + b

a b=

a

a b+

b

a b

Trong trường hợp phân số hữu tỷ, expand không khai triển mẫu số, phải dùng hàm nor-mal, expanded:

> (x+1)/((x+3)*(x+2)):%=expand(%);x + 1

(x + 3)(x + 2)=

x

(x + 3)(x + 2)+

1(x + 3)(x + 2)

> expand(normal(lhs(%),expanded));x

x2 + 5x + 6+

1x2 + 5x + 6

Trái với simplify, expand không có symbolic:> ln(a*b):%=expand(%,symbolic);

ln(ab) = ln(ab)

> assume(a>0, b>0): ln(a*b):%=expand(%);

ln(ab) = ln(a) + ln(b)

Lệnh factor: thừa số

Lệnh này được xem như ngược lại với lệnh expand> p:=xˆ4-3*xˆ2+2: p=factor(p);

x4 32 + 2 = (x 1)(x + 1)(x2 2)

> factor(rhs(%))=expand(lhs(%));

Phạm Minh Hoàng 5

Page 22: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

x 1)(x + 1)(x2 2) = x4 32 + 2

Qua kết quả trên, ta thấy đa thức x2 2 đã không được khai triển trong Q . Người ta nói đathức này tối giản trong Q :

> irreduc(xˆ2-2);

true

Hãy quan sát các lệnh sau:> factor(xˆ2-4);

(x 2)(x + 2)

> factor(xˆ2-2);

x2 2

> factor(xˆ2-2,sqrt(2));

(x?2)(x +?

2)

> factor(xˆ2+2,sqrt(2),I);

(x I?

2)(x + I?

2)

Qua 4 lệnh này ta có thể kết luận là hàm factor chỉ thừa số hoá một đa thức trong trườnghợp các số hữu tỷ. Khi nghiệm không thuộc Q , phải khai báo phần tử này. Và khi có trên mộtphần tử khai bapf, phải để tất cả trong ngoặc nhọn(tu).

Trong trường hợp các đa thức bậc cao (¡ 2) thường phải dùng lệnh solve (giải phươngtrình) để tìm nghiệm trước khi thừa số hoá:

> solve(xˆ3+9);

32/3, 1/232/3 3/2I 6?

3, 1/232/3 + 3/2I 6?

3

Có tất cả ba nghiệm, trong đó có hai nghiệm phức và đều là vô tỷ (32/3, 6?

3). Chúng ta thửvới lệnh sau:

> factor(xˆ3+9,3ˆ(1/6),I);14(2x 32/3 3I 6

?3)(2x 32/3 + 3I 6

?3)(x + 32/3)

Qua kết quả này chúng ta thấy Maple rất "thông minh". Chỉ có 6?

3 được khai báo nhưngtrong quá trình thừa số hoá, Maple cũng tìm ra được 32/3. Một chi tiết quan trọng cần lưu ý lànghiệm của đa thức là 3/2 6

?3 nhưng ta chỉ khai báo 6

?3 và phải bỏ qua thừa số 3/2:

> factor(xˆ3+9,3/2*3ˆ(1/6),I);

Error, (in factor) 2nd argument, 3/2*3ˆ(1/6), I, is not a valid algebraric extension

Lệnh combine: gom

"Gom" những hàm toán giống nhau (exp,ln, hàm lượng giác...) và biến đổi tích các hàmlượng giác thành tổng (ngược lại với expand).

> exp(x)*exp(y):%=combine(%);

exey = ex+y

> sqrt(x)*sqrt(y):%=combine(%,sqrt,symbolic);?

x?

y =?

xy

> (xˆa)ˆb:%=combine(%, power, symbolic);

xa)b = xab

6 Phạm Minh Hoàng

Page 23: Maple Va Cac Bai Toan Ung Dung

1.2. Các thao tác trên một biểu thức

> ln(x)+ln(y):%=combine(%, ln, symbolic);[6]ln(x) + ln(y) = ln(xy)

> sin(x)*cos(y):%=combine(%);[7]

sin(x) cos(y) =12sin(x + y) +

12sin(x y)

> Int(f,x)+Int(g,x):%=combine(%,Int);[8]»fdx +

»gdx =

»(f + g)dx

Lưu ý là khi dùng với symbolic, cần thiết phải xác định hàm toán học nào cần phải gom.

Lệnh convert: biến đổi

Biến đổi một biểu thức toán học sang dạng khác. Đây là lệnh phức tạp nhất(gần 100 cáchbiến đổi khác nhau):

> convert(12,binary);

1100

> exp(I*x):%=convert(%,trig);

eIx = cos(x) + I sin(x)

> arcsinh(x):%=convert(%, ln);

arcsinh(x) = ln(x +?

x2 + 1)

> A:=matrix([[1,2],[3,4]]): convert(A,listlist);

[[1, 2], [3, 4]]

Một trong những chức năng quan trọng của hàm convert là phân tích một phần số hửu tỷthành tổng các phần tử đơn giản:

> 1/(xˆ2-4):%=convert(%,parfrac,x);1

x2 4=

14(x + 2)

+1

4(x 2)

Giống như trường hợp factor, nếu đa thức có nghiệm vô tỷ hoặc phức, cần phải khai báocác nghiệm này. Giả sử muốn phân tích đa thức p = x2 + 8, phải thừa số hoá

1

pvới I

?2 trước

khi phân tích:> p:=xˆ2+8:

> factor(1/p,I,sqrt(2)):%=convert(%,parfrac,x);1

(x 2I?

2)(x + 2I?

2)=

I

8(x + 2I?

2) I

8(x 2I?

2)

convert cũng được dùng để tính tổng hoặc tích các phần tử trong một dãy:> convert([1,2,3],`+`);

6

6Ngược với Simplify7Giống factor, ngược với expand8Ngược với expand

Phạm Minh Hoàng 7

Page 24: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

1.3 Mệnh đề và hàm mũi tên

Cho biểu thức toán học:> p:=xˆ2-3*x+2;

p := x2 3x + 2

Để biết giá trị tại điểm x = 2, dùng hàm subs. Trong Maple, p được gọi là một mệnh đềexpression:

> subs(x=2,p);

0

Cho hàm số f(x) = sin(x), giá trị tại x =π

3được viết như một ký hiệu quen thuộc: f(

π

3).

Trong Maple, f được gọi là một hàm (function hay hàm mũi tên):> f:=x¡sin(x): f(Pi/3);?

32

Để biến một mệnh đề sang một hàm mũi tên:> g:=unapply(p,x): g(2);

0

Đây là một lệnh quan trọng vì nó cho phép khai báo một hàm (mũi tên) từ một kết quảphức tạp.

1.4 Các thao tác trên một dãy

Một dãy có thể được khai báo bằng cách khai báo từng phần tử hoặc bằng hàm seq. Nócó thể có hoặc không có dấu ngoặc vuông:

> p:=seq(2*i+1,i=0..8); q:=[sin(-Pi/3),6,-2,Piˆ2];

p := 1, 3, 5, 7, 9, 11, 13, 15, 17[?

32

, 6,2, π2

] Các phần tử của dãy và số phần tử của dãy:

> p[3],q[4];

5, π2

> nops([p]),nops([q]);

9, 4

Lưu ý cách sử dụng khi dãy khai báo với ngoặc vuông hoặc không ngoặc vuông.

Khai báo dãy bất kỳ bằng hàm rand(random):> k:=rand(-15..15):

> X:=seq(k(),i=1..20); Y:=[seq(k(),i=1..17)];

8 Phạm Minh Hoàng

Page 25: Maple Va Cac Bai Toan Ung Dung

1.4. Các thao tác trên một dãy

X := 8, 14,11, 0, 14, 14,6,9, 4,2, 2, 10, 0,13, 15, 14,8, ,5, 5, 6

Y := [13, 15,12,13,2,9, 9, 7,6,7, 6,10,5,11, 9,14, 9]

Tìm các phần tử xi 4 và chia chẵn cho 3, các số nguyên tố trong Y :

> select(i¡i>4 and i mod 3 = 0, [X]); select(i¡isprime(i),Y);[15, 6]

[13, 7]

Ghép hai kết quả này vào một dãy s. Lệnh op dùng để bỏ ngoặc vuông:

> s:=op(%),op(%%);

s := 13, 7, 15, 6

Khi dãy có số vô tỷ phải dùng lệnh is (dùng lại dãy q ở trên):

> select(i>0,q);

Error,selecting function must return true or false

> select(i¡is(i>0),q);[6, π2]

Lệnh map: Đây là một lệnh quan trọng. Lệnh này áp dụng một hàm (có thể hàm Maplehoặc hàm mũi tên) cho tất cả các phần tử trong một dãy.

> map(i¡iˆ2,[s]);

[169, 49, 225, 36]

> map(i¡i-3*I,[s]);[13 3I, 7 3I, 15 3I, 6 3I]

> u:=[seq(sin(i*x),i=1..3)];

u := [sin(x), sin(2x), sin(3x)]

> map(diff,u,x);

[cos(x), 2 cos(2x), 3 cos(3x)]

option has:

> p:=x=sin(t),y=cos(t)ˆ2,z=1+cos(u);

p := x = sin(t), y = cos(t)2, z = 1 + cos(u)

Tìm những phần tử trong p không có cos(t):

> remove(has,[p],cos(t));

[x = sin(t), z = 1 + cos(u)]

Phạm Minh Hoàng 9

Page 26: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

1.5 Giải tích

Hàm một biến

Các lệnh để tính giới hạn, đạo hàm, nguyên hàm...:

> p:=exp(-xˆ2): Limit(p,x=infinity):%=value(%);

limxÑ8 ex2

= 0

> Diff(p,x):%=diff(%);d

dxex2

= 2xex2

Trong lệnh trên hàm diff(p,x) dùng để lấy đạo hàm mệnh đề p theo x. Hàm Diff (vớichữ D hoa), được gọi là dạng tĩnh (inert form) của hàm diff(p,x). Nó chỉ có tác dụng

viết ký hiệud

dxp.

Lệnh dưới đây tínhd2

dx2p (dấu nháy được dùng để hiển thị chứ p thay vì ex2)

> 'Diff('p;,x,x)':%=value(%);

d2

dx2p = 2xex2

+ 4x2ex2

Tính đạo hàm bậc n: diff(p,x$n) (dưới đây ta kết hợp với toán tử mũi tên):

> dp:=n¡diff(p,x$n):> factor(dp(5));

8xex2(15 20x2 + 4x4)

Tính nguyên hàm: Int (với chữ I hoa), là dạng tĩnh của hàm int(p,x):

> Int(p,x):%=value(%);»ex2

dx =12?

πerf(x)

Trong trường hợp hàm mũi tên, đạo hàm bậc nhất và bậc 2:

> f:=x¡sin(xˆ2): D(f);

x ÞÑ 2 cos(x2)x

> f2:=(D@@2)(f);

f2 := x ÞÑ 2 cos(x2) 4sin(x2)x2

> f2(sqrt(Pi/2));

Trong trường hợp nguyên hàm của một mũi tên, phải biến đổi sang dạng mệnh đề (f(x)là mệnh đề tương ứng với hàm mũi tên f ):

> Int(f(x),x):%=value(%);»sin(nx)dx = cos(nx)

n

10 Phạm Minh Hoàng

Page 27: Maple Va Cac Bai Toan Ung Dung

1.6. Đồ thị hai chiều

Hàm nhiều biến

> p:=xˆ3+x*yˆ2+yˆ3;

p := x3 + xy2 + y3

> 'Diff('p,y,y')':%=value(%);d2

dy2p = 2x + 6y

> f:=unapply(p,x,y);

Theo trên, f là một hàm theo (x, y). Các công thức tính đạo hàm:BfBx là D[1](f),

B2f

B2xlà (D@@2)[2](f),

B2f

BxBy là D[1,2](f)

> D[1](f),(D[2]@@2)(f),D[2,1](f);

(x, y) ÞÑ 3x2 + y2, (x, y) ÞÑ 2x + 6y, (x, y) ÞÑ 2y

Và để thấy được sức mạnh của Maple, hãy quan sát bài toán Pavelle sau đây:

> p:=sin(n*z*sqrt(xˆ2+yˆ2+zˆ2)/sqrt(yˆ2+zˆ2))sqrt(xˆ2+yˆ2+zˆ2);

p =

sin

(nz

ax2 + y2 + z2ay2 + z2

)a

x2 + y2 + z2

> 'Diff('p,x')':%=value(%);

d

dxp =

cos

(nz

ax2 + y2 + z2ay2 + z2

)nzx

(x2 + y2 + z2)a

y2 + z2sin

(nz

ax2 + y2 + z2ay2 + z2

)x

(x2 + y2 + z2)3/2

Kết quả trên cực kỳ phức tạp, nhưng đây mới chỉ là đạo hàm bậc nhất. Trong trường hợpbạn thực sự rảnh rỗi, hãy chứng minh (bằng tay) rằng:[ B2

Bx2

( B2

Bx2+

B2

By2+

B2

Bz2

)+ n2

( B2

Bx2+

B2

By2

)]p(x, y, z) = 0

Còn nếu bạn không có thời giờ, câu lệnh tương ứng là:> Diff('Diff('p,x,x')+Diff('p,y,y')+Diff('p',z,z),x$2')+

nˆ2*('Diff('p,x$2')+Diff('p,y$2')'):%=simplify(value(%),symbolic);

1.6 Đồ thị hai chiều

[9]

Toạ độ Descarter

Gọi p, q là những mệnh đề, f, g là những hàm mũi tên (theo x)

> plot(p,x=-3..3): plot([p,q],x=-3..3,-2..6):

> plot(f,-4..4,1..3)

> plot([f,g],-1..3,thickness=[2,5],color=[blue,green]):

9Tất cả các đồ thị trong mục này không được in ra.

Phạm Minh Hoàng 11

Page 28: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Tọa độ cực

> plot(1,u=0..2*Pi,coords=polar);

> with(plots):

> polarplot(1,u=0..2*Pi); polarplot(u,u=0..4*Pi);> polarplot([theta,4*sin(3*theta)],

theta=0..2*Pi,color=[red,blue]);

Hàm ẩn

> p:=xˆ3+yˆ3-5*x*y+3;

p := x3 + y3 5xy + 3

> implicitplot(p,x=-3..3,y=-3..3,grid=[100,100]);

> p1:=xˆ2+yˆ2=9: p2:=xˆ2/25+y2/9=1:

> implicitplot(p1.p2,x=-5..5,y=-3..3,scaling=constrained);

Hàm tham số

> plot([sint(t),cos(t),t=0..2*Pi]);> plot([[sint(t),cos(t),t=0..2*Pi],[sin(2*t),cos(3*t),t=0..2*Pi]],

color=[red,blue]);

Hàm nối điểm

> k:=rand(-20..20);

> p:=seq([i,k()],i=1..40); plot([p]);

Đồ thị các hàm khác nhau

Cách dễ nhất là gán các đồ thị vào một biến, rồi sau đó dùng display để vẽ chung. Khigán nhớ chấm dứt bằng dấu (:).

> a:=plot([sin(t),x-1],t=-Pi..Pi,color=tan):

> b:=polarplot([sin(t),t]t=-Pi..Pi,color=navy):

> c:=implicitplot(xˆ2+yˆ2-1,x=-3..3,y=-3..3,grid=[100,100]):

> display(a,b,c,scaling=constrained);

Hình động

> plot([sin(x),sin(x-1)],x=0..4*Pi);

> plot([seq(sin(x-i),i=1..10)],x=0..5*Pi);

> f:=i¡sin(x-i):> seq(plot(f(i),x=0..5*Pi),i=1..10):

> display(%,insequence=true);

> display(seq(plot(f(i/5),x=0..5*Pi)i=1..50),insequence=true);

12 Phạm Minh Hoàng

Page 29: Maple Va Cac Bai Toan Ung Dung

1.7. Giải phương trình

1.7 Giải phương trình

Phương trình đại số

Phương trình đơn

> p:=xˆ3+xˆ2-2;

p := x3 + x2 2

> solve(p,x);

1,1 + I,1 I

Tuy nhiên không phải lúc nào kết quả cũng đơn giản. Phương trình sau nghiệm giải tíchcực kỳ phức tạp, Maple chỉ xuất dưới dạng RootOf:

> p:=xˆ4-4*xˆ3+1;

p := x4 4x3 + 1

> s:=solve(p);

s := RootOf( Z4 4 Z3 + 1, index = 1), RootOf( Z4 4 Z3 + 1, index = 2)

RootOf( Z44 Z3 +1, index = 3), RootOf( Z44 Z3 +1, index = 4)

Để thấy giá trị dạng đó lẻ (float), dùng evalf (ở đây hiển thị 5 số lẻ):> evalf(%,5);

.66963, 3.9842,.32691 + .51764I,.32691 .51764I

Để có dạng tường minh giải thích, dùng hàm allvalues (không hiển thị vì dài)

> allvalues([s]);

Nếu chỉ muốn lấy thực nghiệm dùng phương pháp giải gần đúng:

> fsolve(p);

0.6696315467, 3.984188231[10]

Một lệnh khác là isolate có tác dụng giống solve, nhưng có thêm vế bên trái. Việcnày rất tiện lợi khi tiếp sau đó là lệnh subs:

> p:=x-x*ln(xˆ2);

p := x x ln(x2)

> isolate(p,x): subs(%,p);

x =?

e, 0

Hệ phương trình (phải thêm ngoặc nhọn khi khai báo hoặc khi giải bằng solve).

> p:=x-y=2), x*y=4;

p := x y = 2, xy = 4

> solve(p): (dạng RootOf, không hiển thị)

> s:=allvalues(%);

10Đôi khi lệnh fsolve không cho ra hết các nghiệm thực, lúc đó phải xác định thêm (bằng đồ thị) khoảng cáchly nghiệm. Thí dụ fsolve(f,x=a..b) sẽ cho 1 nghiệm của f trong khoảng [a,b]

Phạm Minh Hoàng 13

Page 30: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

s := x = 1 +?

5, y = 1 +?

5, y = 1?5, x = 1?5

Để trích ra giá trị của x, y có thể dùng subs hay eval:

> eval(x,s[1]),subs(s[2],y);

1 +?

5,1?5

Phương trình quy nạp

Thí dụ 1. Dãy tuyến tính

> eq:=u(n)=-3*u(n-1)-2*u(n-2);

eq := u(n) = 3u(n 1) 2u(n 2)

> rsolve(eq,u(0)=1,u(1)=1,u);

(1)n (2)n

> S:=unapply(%,n): seq(S(i),i=0..10);

0, 1,3, 7,15, 31,63, 127,255, 511,1023

Thí dụ 2. Dãy Fibonacci

> eq:=f(n)=f(n-1)+f(n-2);

eq := f(n) = f(n 1) + f(n 2)

> rsolve(eq,f(1..2)=1,f);?

55

(12

+?

52

)n

?

55

(12?

52

)n

> g:=unapply(%,n): seq(simplify(g(i)),i=1..15);

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610

Thí dụ 3. Dãy quy nạp chéo

> s:=u(n+1)=u(n)-2*v(n), v(n+1)=u(n)+4*v(n);

s := u(n + 1) = u(n) 2v(n), v(n + 1) = u(n) + 4v(n)

> p:=rsolve(s,u(0)=-1,v(0)=-1,u,v);

p := u(n) = 33n 42n, v(n) = 33n + 22n

> su:=unapply(eval(u(n),p),n): seq(su(i),i=1..6);

1, 11, 49, 179, 601, 1931

1.8 Phương trình vi phân

Cách giải giải tích

Phương trình bậc nhất

> p:=diff(y(x),x)=-k*y(x);d

dxy(x) = ky(x)

14 Phạm Minh Hoàng

Page 31: Maple Va Cac Bai Toan Ung Dung

1.8. Phương trình vi phân

> dsolve(p,y(0)=1); (với điều kiện đầu, dấu ngoặc nhọn bắt buộc)

y(x) = ekx

Chúng ta cũng có thể giải không điều kiện đầu. Và để tránh lặp đi lặp lại các ký hiệu đạohàm, chúng ta sẽ phải khai báo các ký hiệu này như sau:

> y0=y(x): y1=diff(y(x),x): y2:=diff(y(1),x): CB:='color=blue':

> eq:=y1-y0ˆ2+3*y0; dsolve(eq); (lệnh dsolve ngoặc nhọn không bắt buộc)

eq :=d

dxy(x) y(x)2 + 3y(x)

y(x) =3

(1 + 3e3x C)

Ba đồ thị của lời giải tương ứng với C1 = -1,0,1:

> f:=unapply(rhs(%), C1):

> plot([seq(f(i),i=-1..1)],x=-2..2,y=-2..5,CB); (Hình 1.1(a))

Maple có thể vẽ tập hợp lời giải dưới dạng các mũi tên (không hiển thị):

> with(DEtools):

> gr1:=dfieldplot(eq,y(x),x=-3..2,y=-3..5,CB): display(%):

Đồ thị ba lời giải vẽ chung với tập hợp các lời giải:

> gr2:=plot([f(-8),f(3),f(10)],x=-3..2,CB):

> display(gr1,gr2); (Hình 1.1(b))

Hình 1.1: (a) Ba lời giải và (b) khi vẽ chung với tập hợp các lời giải

Phương trình bậc hai

> eq:=y2+5*y1+6*y0;

eq :=d2

dx2y(x) + 5

d

dxy(x) + 6y(x)

Phạm Minh Hoàng 15

Page 32: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Điều kiện đầu: ký hiệu đạo hàm bắt buộc là toán tử D thay vì diff:> dsolve(eq,y(0)=0,D(y)(0)=1);

y(x) = e3x + e2x

Hệ phương trình bậc nhất> eq:= diff(x(t),t)=-4*y(t)+5, diff(y(t),t)=x(t)-2;

eq :=d

dtx(t) = 4y(t) + 5

d

dty(t) x(t) 2

dsolve trong trường hợp này bắt buộc phải có ngoặc nhọn:> s:=dsolve(eq,x(0)=1,y(0)=-1)

s :="

x(t) =92sin(2t) cos(2t) + 2, y(t) = 9

4cos(2t) 1

2sin(2t) +

54

*Đường biểu diễn x(t) theo y(t): (Hình 1.2(a))

> plot([eval(x(t),s),subs(s,y(t))],t=0..2*Pi,linestyle=[1,4]);

Đường biểu diễn y(t) theo x(t): (Hình 1.2(b))> plot([eval(x(t),s),subs(s,y(t)),t=0..2*Pi],color=black);

Hình 1.2: Lời giải phương trình vi phân phương pháp giải tích

Cách giải số

Sử dụng khi cách giải giải tích không cho ra kết quả hoặc kết quả không khai thác được.

Phương trình bậc nhất> restart: with(plots): [11]> eq:=diff(y(x),x)-xˆ2*y(x)=1;

11Thư mục plots cần thiết cho các lệnh display, odeplot được dùng dưới đây

16 Phạm Minh Hoàng

Page 33: Maple Va Cac Bai Toan Ung Dung

1.8. Phương trình vi phân

d

dxy(x) x2y(x) = 1

> dsolve(eq,y(1)=2): (Không hiển thị vì quá phức tạp)

> s:=dsolve(eq,y(1)=2,y(x),numeric);

s := proc(x rkf45) . . . end proc

Mặc định Maple dùng phương pháp Runge-Kutta 4 nút để giải phương trình vi phân [12].Kết quả cách giải số là một dãy nhiều phần tử. Để hiển thị một phần tử (thí dụ ở hoànhđộ x=1.54)

> s(1.54);

[x = 1.54, y(x) = 5.76389774048564440]

Để hiểu rõ ý nghĩa của lời giải số s, trước tiên ta tạo từ s một dãy u gồm 5 cặp điểm, mỗiđiểm cách nhau một khoảng cách bằng 1 và nối những điểm ấy lại với nhau (đồ thị g1),sau đó dùng hàm odeplot để vẽ lời giải của bài toán (đồ thị g2):

> f:=t¡[subs(s(t),x), eval(y(x),s(t))];

> u:=seq(f(i),i=-3..1.2);

u := [3.,0.1217], [2.,0.3483], [1.,0.4176], [0., 0.5090], [1., 2.]

> g1:=plot([[u],[u]], style=[point,line], symbol=diamond):

> g2:=odeplot(s,[x,y(x)],-3..1.1): display(g1,g2);

Hình 1.3(a) cho thấy hai đồ thị không trùng nhau, đơn giản laf vị độ chia quá lớn. Lệnhsau chia mịn hơn 3 lần, ta sẽ thấy kết quả tốt hơn:

> seq(f(i/3),i=-9..4.5):

Phương trình bậc hai

Phương trình dao động của một lò xo độ cứng K, hệ số ma sát B:

> eq:=diff(x(t),t,t)+B*diff(x(t),t)+K*sin(x(t));

eq :=d2

dt2x(t) + B

d

dt+ K sin(x(t))

Phép giải giải tích không cho kết quả. Để giải bằng phương pháp số, điều quan trọng nhấtlà phải gán trị số cho tất cả các biến:

> B:=1/4: K:=2:

> s:=dsolve(eq,x(0)=1,D(x)(0)=0,numeric): s(.13);

[t = 0.13, x(t) = 0.9859,d

dtx(t) = 0.2146]

Đồ thị của biên dộ x theo thời gian t là:

> odeplot(s,[t,x(t)],0..15,numpoints=200); (Hình 1.3(b))

Tương tự, đồ thị của vận tốc x1 theo thời gian t là:

> odeplot(s,[t,diff(x(t),t)],0..15,numpoints=200);

12Xem chương trình Phương pháp tính, Giải tích số

Phạm Minh Hoàng 17

Page 34: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Hình 1.3: Lời giải phương trình vi phân và phương pháp số

1.9 Đại số tuyến tính

Những điều cần nhớ là: Nhập thư viện: lệnhlinalgĐể hiển thị ma trận: lệnh evalĐể tính toán ma trận: lệnh evalm

Nhập thư viện và khai báo ma trận bằng 2 cách:

> with(linalg):

> A:=matrix(3,3,[-2,2,3,3,7,8,10,-4,-3]):

> B:=matrix([[2,4,-1],[3,6,-3],[2,3,9]]): A:=eval(A),B:=eval(B);

A =[2 2 3

3 7 810 4 3

], B =

[2 4 13 6 32 3 9

]> A+B=evalm(A+B), AB=evalm(A&*B);

A + B =[ 0 6 2

6 13 512 1 6

], AB =

[ 8 13 2343 78 482 7 25

]> inverse(A):%=1/90*map(i¡i*90,eval(%)); (ma trận nghịch đảo)

1190

115

11889

90415

518

4145

215

29

=190

[11 6 589 24 2582 12 20

]

> diag(a,b,c), band([x,y,z],4); (ma trận đường chéo, ma trận băng)[a 0 00 b 00 0 c

],

y z 0 0x y z 00 x y z0 0 x y

18 Phạm Minh Hoàng

Page 35: Maple Va Cac Bai Toan Ung Dung

1.9. Đại số tuyến tính

Tích một ma trận và một vector> v:=vector([1,2,3]): evalm(A&*v);

[11, 41,7]

> evalm(A&*[a,b,c]);

[2a + 2b + 3c, 3a + 7b + 8c, 10a 4b 3c]

Đa thức đặc trưng, trị riêng và định lý Cayley-Hamilton:> cp:=charpoly(A,x); s:=eigenvals(A);

cp := x3 2x2 33x + 90

s := 3, 5,6

> subs(x=A,cp):%=evalm(%);

A3 2A2 33A + 90 =[0 0 00 0 00 0 0

] Véc-tơ riêng và ma trận chuyển cơ sở P :

> v:=eigenvects(A);

v := [5, 1, t[1, 13/2,2]u], [3, 1, t[1, 49/4,13, 2]u], [6, 1, t[1, 1,2]u]Kết quả là một dãy ba phần, mỗi phần gồm ba phần tử. Phần tử thứ nhất là trị riêng, thứhai là số bội, thứ ba là véc-tơ riêng tương ứng. Từ ba véc-tơ này có thể xây dựng ma trậnchuyển vị:

> P:=concat(op(v[1,3]),op(v[2,3]),op(v[3,3]));

P :=

1 1 1132

494

1

2 132

2

(1.9.1)

Ta có PJP1 = A với J là ma trận đường chéo:> evalm(P$*diag(5,3,-6)$inverse(P));

Tuy nhiên, ta có thể tínhma trận đường chéo J vàma trận chuyển cơ sở bằng lệnh jordan:> J:=jordan(A,'P'): J:=eval(J),P=eval(P);

J :=[6 0 0

0 3 10 0 5

], P :=

7199

49

811

7199

494

5211

14299

269

1611

(1.9.2)

Lưu ý: P tại (1.1) khác với P tại (1.2) vì hai ma trận đường chéo tương ứng không giốngnhau. Tại (1.1), ma trận đường chéo là diag(5,3,-6), tại (1.1) là (-6,5,3).

Khai báo ma trận bằng hàm mũi tên và kích thước động.

Cho ma trận M bậc n mà các phần tử là: mij =

$&% 0 (i = j)1 (i j)1 (j i)

> B:=matrix(4,4),(i,j)¡if i=j then 0 elif i>j then -1 else 1fi);

Phạm Minh Hoàng 19

Page 36: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Khai báo như trên, kích thước của ma trận luôn là 4. Cách hay nhất là tạo một hàm mũitên với tham số là n

> C:=n¡matrix(n,n,(i,j)¡if i=j then 0 elif i>j then -1 else1 fi);

Một thí dụ khác:

> E:=n¡matrix(n,n,(i,j)¡(n-1)*(i-1)+j): C(4),E(4);

C(4) =

0 1 1 11 0 1 11 1 0 11 1 1 0

, E(4) =

1 2 3 44 5 6 77 8 9 1010 11 12 13

1.10 Lập trình trong Maple

Lập trình Maple rất đơn giản, chỉ cần biết cú pháp và nhớ vài chi tiết:

Lệnh đầu tiên là tên chương trình :=proc (tham số). Lệnh sau cùng là end:. Để xuốnghàng nhấn Shift+Enter

Không được sửa biến đầu vào. Giả sử tham số đầu vào là u và a là một biến bất kỳ, ta cóthể viết u:=a. Trong trường hợp này Maple sẽ xuất ra một thông báo sai:

Error, (in pgm) illegal use of a formal parameter (1.10.1)

Kết quả của lênh sau cùng trước end: (khác với lênh print) có thể in ra và có thể đượcgán vào một biến.

Chỉ có hai lệnh cần nhớ là lệnh if ... fi và for ... do ... od hay for... while do ... od. fi viết tắt của end if, od viết tắt của end do

Chương trình sau có tên rsort có công dụng sắp xếp một dãy số thực[13]> p:=ln(3),-Pi,exp(-sqrt(2)),sin(Pi/9),-1;

ln(3),π, e?

2, sin(π

9),1

> q:=rsort([p]);

10

q := [π,1, e?

2, sin(π

9), ln(3)]

Ở dòng 3 nếu bỏ lệnh u:=u1: và làm việc trực tiếp trên u1, sẽ nhận được thông báo 1.3.Lý do là vì đã sửa biến đầu vào u1

Ở dòng 10, lệnh print(k) xuất ra kết quả 10 [14] và lệnh u: xuất ra dãy đã được sắp xếp.Nhưng chỉ có dãy u mới có thể được gán và biến q.

Kiểm chứng: q[5] = ln(3).

13Trong Maple có lệnh sort, nhưng lệnh này chỉ có tác dụng trên các dãy có phần tử hửu tỷ. Các số dòng đượcthm vào để dễ cắt nghĩa.

14k = 10 tương ứng với số lần lặp = 5 4/2

20 Phạm Minh Hoàng

Page 37: Maple Va Cac Bai Toan Ung Dung

1.10. Lập trình trong Maple

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> auto:proc(m)local M,s,mp,lu,,lx,ly,f,i:M:=p¡matrix(4,4,[0,0,0,100,0.11,0,0,0,0,0.2,0,0,0,0,0.3,0.4]):s:=i¡eigenvals(M(i)):mv:=p¡max(op(evalf(select(i¡Im(i)=0,[s(p)]))));for i to 20 doif mv(i/50)<1 and mv((i+1)/50)>1 then break: fi:od:lu:=seq([j/50.,mv(j/50.)],j=i-2..i+3);lx:=seq(lu[i,1],i=1..nops([lu])):ly:=seq(lu[i,2],i=1..nops([lu])):f:=interp([lx],[ly],x);opselect(i¡is(Im(i)=0 and i<=.2 and i>0),[solve(f-1)]));end:

Bảng 1.1: Sắp xếp một dãy số thực

Khai thác sau khi biên dịch

Mục đích của lập trình trước tiên là gom các dòng lệnh vào trong một thuật toán, nhưng cònmột tiện ích khác là sau khi biên dịch (compiler), chúng ta có thể lưu lại trong một file để dùngvề sau mà không cần biên dịch lại. File này có dnagj nhị phân, còn được gọi là tập tin thực thi(executable) file. Trong Maple, tập tin này có đuôi là m. Lệnh tạo ra tập tin này là:

> save xxx,"C:/DIR/pgm.m":

Trong đó xxx là tên của thuật toán, pgm là tên của tập tin thực thi. Hai tên này không nhấtthiết giống nhau. C:/DIR là đường dẫn thư mục chứa tập tin thực thi.

Sau khi lưu lại, người ta có thể gọi ra để thi hành bằng lệnh:> read "C:/DIR/pgm.m":

Tất cả được tóm tắt trong sơ đồ sau:Trong đó:

ms là tên của thuật toán (còn gọi là chương trình con)

pgm.m là tên của tập tin thực thi của thuật toán ms

work.mws là tên của worksheet tạo ra thuật toán ms

test.mws là tên của worksheet gọi thuật toán ms

Thí dụ: Cho ma trận p:> p:=matrix(2,2,[1/2,2/3,3/4,4/5]);

p :=

12

23

34

45

Phạm Minh Hoàng 21

Page 38: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

..> ms:=proc(n) .> restart:

.end:

.> read "C : /DIR/pgm.m" :

.> ms(n);.> save ms, "C : /DIR/pgm.m" :

.work.mws .test.mws

Hình 1.4: Sơ đồ tạo và sử dụng tập tin thực thi

Các phần tử p đều là những phân số nên cách viết này khá "tốn chỗ". Dưới đây chúng tasẽ thực hiện một chương trình có tên msimply để đặt mẫu số chung. msimply được viết trongworksheetmsimply.mws và tập tin thực thi tương ứng là pgm1.m:

> msimply:=proc(m)local p:linalg[coldim](m):linalg[rowdim](m);p:=ilcm(seq(seq(denom(m[i,j]),j=1..%%),i=1..%));evalm(m*p)/p;end:

> seve msimply,"D:/My path/pgm1.m":msimply.mws

Bảng 1.2: Sử dụng worksheet với tập tin thực thi là pgm1.m

(Lệnh ilcm tính bội số chung nhỏ nhất của một dãy số, denom(x) là mẫu số của phân số x)

Sau khi tạo pgm1.m trong một worksheet mới ta làm:> restart: read "D:/My path/pgm1.m":

> p:=matrix(2,2,[1/2,2/3,3/4,4/5]);

> eval(p)=msimply(p);

p :=

12

23

34

45

=160

[30 4045 48

]Bây giờ chúng ta sẽ viết một thuật toán khác có tên mjor để lũy thừa một ma trận M bằng

công thức Mn = PDnP1(D là ma trận đường chéo và P là ma trận chuyển cơ sở ).mjor cóhai tham số: ma trận và bậc lũy thừa:

Sau khi tạo pgm2.m trong một worksheet mới ta sẽ lần lượt khai báo một ma trận m, gọihai thuật toán msimply và mjor để dùng một lúc tính và thu gọn m3:

> restart:

22 Phạm Minh Hoàng

Page 39: Maple Va Cac Bai Toan Ung Dung

1.11. Nguyên hàm

> mjor:=proc(m,n)linalg[jordan](m,'p'):map(i¡iˆn,%):simplify(evalm(p&*%&*linalg[inverse](p))):end:

> seve mjor,"D:/My path/pgm2.m":mjor.mws

Bảng 1.3: Sử dụng worksheet với tập tin thực thi là pgm2.m

> m:=matrix(2,2,[2,1,-1/3,3/2]);

> read "D:/My path/pgm2.m": read "D:/My path/pgm1.m":

> eval(m)ˆ3:%=msimply(mjor(m,3));

p :=

[1 2

13

32

]3

=172

[444 642214 123

]Lưu ý: Thí dụ trên chỉ có mục đích nêu cách tạo và sử dụng tập tin thực thi. Ở đây chúng

ta có thể tính m10 dễ dàng, nhưng với một ma trận vuông bậc 3 có phân số, dùng các thuật toántrên là không khả thi vì kết quả quá phức tạp.

1.11 Nguyên hàm

Maple lấy được hầu như mọi nguyên hàm và tích phân:> Int(x/(xˆ3+1),x):%=value(%);»

x

x3 + 1dx =

16ln(x2 x + 1) +

?3

3arctan

(?3

3(2x 1)

) 1

3ln(x + 1)

Kiểm chứng bằng đạo hàm:> diff(rhs(%),x):%=normal(%,expanded);

2x 16(x2 x + 1)

+1

2(x2 x + 1) 1

(3x + 3)=

x

x3 + 1> Int(xˆ2*sin(x),x=0..Pi):%=value(%);

π»0

x2 sin(x)dx = π2 4

Ngược lại, có những dạng không thể lấy được nguyên hàm dưới dạng giải tích hoặc kết quảlà những hàm siêu việt (transcendant). Trong trường hợp đó bắt buộc phải lấy giá trị gần đúng:

> Int(sin(x)/x,x):%=value(%);»sin(x)

xdx = Si(x)

> Int(sin(x)/x,x=0..1):%=evalf(%,5);1»0

sin(x)x

dx = 0.94608

> Int(1/ln(xˆ2-1),x):%=value(%);

Phạm Minh Hoàng 23

Page 40: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

»1

ln(x2 1)dx =

»1

ln(x2 1)dx (1.11.1)

Trong kết quả 1.4, dấu nguyên hàm (

») của vế bên trái màu đen, đây là ký hiệu của lệnh tĩnh

Int, còn dấu nguyên hàm vế trái màu xanh [15]. Điều đó có nghĩa Maple không tính được vàcũng không thể biểu diễn kết quả dưới dạng các hàm Si, Ei, Elliptic, hypergeom...

Tuy nhiên, có nhiều trường hợp Maple "bó tay" như 1.4, nhưng với vài biến đổi, người tavẫn có thể tìm ra lời giải giải tích. Hai cách biến đổi thông thường mà mọi người đều biết lànguyên hàm từng phần và biến đổi. Dưới đây là một vài thí dụ đơn giản (mà Maple giải dễdàng):

Nguyên hàm từng phần (

»(u1v) = uv

»(uv1)). Để sử dụng hai phép biến đổi, trước

tiên phải nhập thư viện student sau đó khai báo nguyên hàm dạng tĩnh (không hiển thị):

> with(student):

> p:=Int(x*ln(x),x):

Chọn u = ln(x) :

> intparts(p,ln(x));12x2 ln(x)

»x

2dx

Giá trị của biểu thức trên đơn giản, có thể dùng value

> p:=value(%);»x ln(x)dx =

12x2 ln(x) 1

4x2dx

Ta cũng có thể chọn u = x

> intparts(p,x):expand(%);

x2 ln(x) x2 »

x ln(x)dx +»

xdx

Biểu thức trên chính là p, vậy ta có thể "đơn giản" bằng hàm solve để tìm p:

> solve(p=%,p);12x2 ln(x) 1

2x2 +

12

»xdx

Đến đây thì ta có thể dùng value để hiển thị kết quả:

> p:%=value(%);»x ln(x)dx =

12x2 ln(x) 1

4x2dx

Để phương pháp này (cũng như phương pháp đổi biến) thực sự có ý nghĩa, ta chỉ có thểáp dụng lệnh value khi biểu thức đó đơn giản và có thể nhìn ngay ra kết quả bằng cáccông thức quen thuộc.

15Kể từ phiên bản V9, tất cả đều mang màu xanh

24 Phạm Minh Hoàng

Page 41: Maple Va Cac Bai Toan Ung Dung

1.11. Nguyên hàm

Phương pháp đổi biến.> p:=Int(x*sqrt(1-xˆ4),x);

p :=»

x?

1 x4dx

Đổi biến bằng cách x2 = sin(u):> changevar(xˆ2=sin(u),p,u);»

12

a1 sin(u)2 cos(u)du

> simplify(%,symbolic);12

»cos(u)2du

Đến đây ta có thể dùng value(%) vì cos(x)2 =1

2(cos(2x) + 1):

> value(%);14sin(u) cos(u) +

14u

Trở lại biến x:> simplify(subs(u=arcsin(xˆ2,%),symbolic);

14

?1 x4x2 +

14arcsin(x2)

Kiểm chứng bằng đạo hàm:> simplify(diff(%,x));

x?

1 x4[16]Trên đây chỉ là những thí dụ đơn giản, trong thực tế đôi khi phải lặp lại nhiều lần các lệnhintparts hay changevar, thậm chí phải làm cả hai lệnh.

Thiết lập các công thức quy nạp.Các cách biến đổi trên có một ứng dụng rất hay là tính các công thức tích phân quy nạp,

chẳng hạn như thiết lập công thức của»

x lnn xdx.

> p:=Int(x*ln(x)ˆn)»x lnn xdx

> q:=intparts(p,ln(x)ˆn);

q :=12ln(x)nx2

»12ln(x)nnx

ln(x)dx

Nếu đặt F (n) =

»x ln(x)ndx, ta thấy biểu thức có dấu nguyên hàm chính là F (n 1).

Để hiển thị công thức quy nạp ta cần khai báo hàm F (n), F (n 1) bằng alias và dùnghàm map (trong Maple F [n] có nghĩa là Fn):

> alias(F[n]=Int(x*ln(x)ˆn,x),F[n-1]=Int(x*ln(x)ˆ(n-1),x)):

> F[n]=map(simplify,q);

Fn :=12ln(x)nx2 1

2nFn1

16Chúng ta sẽ giải bài toán này bằng một phương pháp khác (xem mục 1.12.4)

Phạm Minh Hoàng 25

Page 42: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Để áp dụng công thức quy nạp ta viết một chương trình đệ quy (recursive)[17]. Chươngtrình có tên là F được định nghĩa như sau:

F (n) =»

x lnn(x)dx =

$'&'%12x2 ln(x) 1

4x2 (n = 1)

12ln(x)nx2 1

2nFn1 (n ¡ 1)

∼∼∼∼∼∼∼∼∼∼∼

F:=proc(n)if n=1 then 1/2*xˆ2*ln(x)-1/4*xˆ2else 1/2*ln(x)ˆn*xˆ2-1/2*n*F(n-1):fi:

end:

> factor(F(3)); int(x*ln(x)ˆ-F(3);18x2(4 ln(x)3 6 ln(x)2 + 6 ln(x) 3)

0

1.12 Bài tập

Các lệnh cơ bản

Cho đa thức p = x2 4x3 1

1. Vẽ đường biểu diễn của p. Tìm các nghiệm trong R và trong C .

2. Thừa số hóa p và1

ptrong R và trong C .

Đại số

1. Cho M =

[2t 12 t

]. Xác định t sao cho M nhận giá trị riêng kép.

Tính véc-tơ riêng trong trường hợp này. (ĐS: t = 2I?

2

3, [1,I

?2]).

2. Cho M =

x 0 00 y

?3

0?

3 z

. Tìm x, y, z sao cho m nhận ba giá trị riêng 4, 8, 12.

Hướng dẫn: Dùng tính chất det(M) = det(J) với J là ma trận đường chéo.(ĐS: tx = 4, y = 11, z = 9u, tx = 4, y = 9, z = 11u).

3. Cho M =

5 1 11 5 11 1 5

.17Đệ quy là chương trình gọi chính nó.

26 Phạm Minh Hoàng

Page 43: Maple Va Cac Bai Toan Ung Dung

1.12. Bài tập

Tìm an, bn sao cho @n P N ,Mn = anM + bnIn

(ĐS: an = 2n 1, bn = 1

3(2n+1 + 1)).

Phương trình vi phân

1. Cho phương trình vi phân E : x(x2 1)y1(x) (x2 1)y(x) + 2x = 0.

Chứng minh rằng tiếp tuyến tại hoành độ x = 2 của các lời giải của E đều đi qua mộtđiểm cố định A. Tìm A, vẽ đồ thị.

2. Cùng một câu hỏi nhưng tại hoành độ x = u với:

E(k) : x(x2 1)y1(x) (x2 1)y(x) + kx = 0

3. Cùng một câu hỏi nhưng tại hoành độ x =3

2với:

E(k) : x(x2 1)y1(x) (xk 1)y(x) + 2x = 0

Nguyên hàm

I. Tìm nguyên hàm và kiểm chứng bằng đạo hàm (bài có dấu : khó hơn)

1. p =ln(x)3

x3

2. p = x2 arccos(x)

3. p = ex sin(x)

4. p = x?

1 + x4

5. p =arcsin(x)

x2

6. p =a

x(x2 + 1) ln(x2 1)

II. Phân số hữu tỷ: Tìm nguyên hàm và kiểm chứng bằng đọa hàm của1

ax2 + bx + c

(Hướng dẫn: Đổi biến bằng công thức: x +b

2a=

c1

a(c b2

4a) tan(u)) [18]

1. p =1

3x2 + 6x + 5

2. p =1

(2x2 4x + 10)2

3. p =1

(x2 6x + 18)2

4. p =3x?

8 2x x2[19]

III. Tìm công thức quy nạp và viết hàm đệ quy tương ứng.

1. p := xnex 2. p := xn sin(x)

Lập trình

Dãy Syracuse là một dãy được định nghĩa như sau: ui+1 =

# ui

2(ui chẵn )

3ui + 1 (ui lẻ )

18Xem hàm completesquare19Đặt (x + 1) = 3 sin(u).

Phạm Minh Hoàng 27

Page 44: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

Với u0 là một số nguyên dương cho sẵn, người ta thấy (nhưng chưa chứng minh được) rằngtuu Ñ 1

1. Viết một chương trình có tên orbite có tham số là u0 để xuất ra dãy [i, uni] với i P [0, n].Đường nối những điểm của dãy này được gọi là quỹ đạo của tuu.

2. Viết một chương trình plotorb(n) vẽ quỹ đạo của tuu.Xem cách vẽ như hình bên orbite(20))

Chọn các hình tròn và đường nối những màu khác nhau.Thí dụ: plotorb(20,red,blue);

Bài giải1.12.1

> p:=xˆ4-4*xˆ3-1: plot(p,x=-2..6,-2..2);solve(p);

> allvalues([%]); evalc(%); select(i¡Im(i)=0,%);> factor(p,sqrt(2));factor(1/p,sqrt(2)):%=convert(%, parfrac,x);

> factor(1/p,I,(-10+8*2ˆ(1/2))ˆ(1/2)):%=convert(%, parfrac,x);

1.12.2.1

> restart: with(linalg):M:=matrix(2,2,[2*t,1,2,-t]);

> s:=eigenvects(M); r:=solve(%[1,1]=%[2,1]);

> p:=subs(t=r[1], eval(M)); eigenvects(%);

> p:=subs(t=r[2],eval(M);>eigenvects(%);

1.12.2.2> restart: with(linalg):

p:=matrix(3,3,[x,0,0,0,y,sqrt(3),0,sqrt(3),z]);

> s:=eigenvals(p);solve(s[2]=8,s[3]=12);

> det(p); s[2]+s[3];solve(y*z-3=8*12,y*z=20);

> assigs(%[1]): x:=4:map(eval,p);eigenvals(%);

1.12.2.3

> restart:with(linalg):S:=matrix(3,3,(i,j)¡if i=j then 5 else-1 fi);

28 Phạm Minh Hoàng

Page 45: Maple Va Cac Bai Toan Ung Dung

1.12. Bài tập

> J:=jordan(avalm(1/3*S),p); Jn:=map(i¡iˆn,eval(J));

> Sn:=evalm(P&*Jn&*inverse(P));evalm(Sn-(1/3+2/3*2ˆn)*diag(1,1,1));> (1/3*2ˆn-1/3)*map(i¡i/(1/3*2ˆn-1/3),eval(%)):

U:=map(simplify,eval(%));

1.12.3.1

> restart:with(plots):

> eq:=diff(y(x),x)*x*x(xˆ2+1)-(xˆ2-1)*y(x)+2*x;

> dsolve(eq);f:=subs(rhs(%), C1):

> tg:=a¡subs((x=2,diff(f(a),x)*(x-2))+subs(s=2,f(a));> plot([f(2),tg(2),tg(2),f(3),tg(3)],x=-3..3,0..12);

> solve(tg(u)=tg(v),x);subs(%,tg(u));

> s:=seq(plot([f(i),tg(i)],x=-3..3,0..12,color=[blue,red]),i=0..6):

> dr:=plot([2,x,x=0..12]);display(dr,s);

1.12.3.2

> eq:=k¡diff(y(x),x)*x*(xˆ2+1)-(xˆ2-1)*y(x)+k*x;

> dsolve(eq(k));f:=unapply(rhs(%), C1,k):

> tgx:=(a,u,k) ¡subs(x=u,diff(f(a,k),x))*(x-u)+subs(x=u,f(a,k));> solve(tgx(x1,u,h)=tgx(x2,u,h),x);simplify(subs(%,tgx(x2,u,k)));

1.12.3.3

> eq:=k¡diff(y(x),x)*x*x(xˆ2-2)-(xˆk-1)*y(x)+2*x;

> dsolve(eq(3));f:=unapply(rhs(%), C1):

> tg:=(a)¡subs(x=3/2,diff(f(a),x)*(x-3/2)+subs(x=3/2,f(a));> plot([f()2],tg(2),f(3),tg(3),f1,tg(1)],x=0..3,-1..12);

1.12.4.a.1

> with(student):p:=Int((ln(x)/x)ˆ3,x);

> intparts(p,ln(x)ˆ3);intparts(%,ln(x)ˆ2);

> intparts(%,ln(x));value(%);simplify(diff(%,x),symbolic);

1.12.4.a.2

> P:=Int(xˆ2*arccos(x),x);intparts(p,xˆ2);expand(%));

> solve(p=%,p);simplify(diff(%,x),symbolic);

1.12.4.a.3> p:=Int(exp(-x)*sin(x),x);intparts(p,sin(x));

simplify(intparts(%,cos(x)));

> solve(p=%,p);simplify(diff(%,x),symbolic);

1.12.4.a.4

> p:=Int(x*sqrt(1+xˆ4),x):%=value(%);

> changevar(tan(u)=xˆ2,p,u):%=simplify(convert(sincos),symbolic);

> RP:=rhs(%): RP=changevar(cos(u)ˆ2=t-tˆ2,RP,t);op(1,2*rhs(%));

> Int(convert(%,parfrac,t),t)/2:%=cionbine(value)(%);> subs(t=sin(acrtan(xˆ2)),rhs(%));simplify(%,symbolic);

simplify(diff(%,x));

Phạm Minh Hoàng 29

Page 46: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

1.12.4.a.5[20]> P:=Int(arcsin(x)/xˆ2,x);intparts(p,1/xˆ2;expand(%);

> solve(p=%,p);res:=expand(%);op(1,res),op(2,res);p:=op(3,res);

> changevar(x=cos(u),p,u);subs(sqrt(1-cos(u)ˆ2)=sin(u),%);

> map(simplify,(intparts(%,sin(u))));value(%);

> subs(u=arccos(x),%);res3:=expand(%);

> diff(%,x);simplify(%,symbolic);rationalize(%);

> op(1,res),op(2,res),res3;op(1,res)+op(2,res)+res3;q:=diff(%,x);

> simplify(%,symbolic);simplify(op(2,q)+op(3,q)+op(4,q),symbolic);

1.12.4.a.6

> p:=Int(x*sqrt(x2+1)*ln(xˆ2-1),x);value(%);> chargevar(t=sqrt(xˆ2+1),p,t);

intpats(%,ln(-2+tˆ2));s:=map(expand,%)> c:=op(2,s);op(1,op(2,c));

op(1,op(2,c))L%=convert(%,parfrac,t);

> r:=op(3,rhs(%));changevar(t=2/sqrt(2)*u,Int(r,t0,u);> value(%);subs(u=sqrt(2)/28t,%);

res:=op(1,s)-2/3*(int(tˆ2+2,t)+%);> subs(t=sqrt(xˆ2+1),res);

diff(%,x):%=simplify(%,symbolic);

> cobine(rhs(%),symbolic);factor(%);

1.12.4.b.1

> p:=Int(1/3*xˆ2+6)*x+5),x):%=conpletesqyare(%,x);

> changevar(x+1=sqrt(2/3)*tan(u),rhs(%),u):%=simplify(%);

> p=subs(isolate(x+1=sqrt(2/3)*tan(u),u),value(rhs(%)));

> simplify(diff(rhs(%),x));

1.12.4.b.2

> p:=Int(1/(2*xˆ2-4*x+10)ˆ2,x):%=conpletesquare(%,x);

> char((x-1)=2*tan(u),rhs(%),u):%=simplify(convert(%,sincos));

> p=simplify(subs(isolate((x-1)=2*tan(u,),u),value(rhs(%))));

> p=subs(ioslate)

> simplify(diff(rhs(%),x));

1.12.4.b.3

> p:=Int(1/(xˆ2-6*x+18)ˆ3,x):%=completesquare(%,x);

> changevar(x-3=3*tan(u),rhs(%),u):%=simplify(convert%,sincos);

> combine(rhs(%)):%=value(%);

> p=sim;ify(subs(isolate(x-3=3*tan(u),u),value(rhs(%))));

> p1:=simplify(diff(rhs(%),x));

> factor(rationalize(convert(%,exp)));

1.12.4.b.4

20Trong bài này chúng ta chấp nhận»

1cos(x)

dx là một trường hợp "đơn giản".

30 Phạm Minh Hoàng

Page 47: Maple Va Cac Bai Toan Ung Dung

1.12. Bài tập

> p:=Int(3*x/sqrt(8-2*x-xxˆ2),x):%=completesquare(%,x);

> changevar((x+1)=3*sin(u),p,u);simplify(%,symbolic);value(%);

> subs(isolate(x+1=3*sin(u),u),%);>simplify(diff(%,x),symbolic);

1.12.4.c.1

> p:=Int(xˆn*exp(x),x);value(%);intparts(p,xˆn);simplify(%);

> alias(F[n]=Int(xˆn*exp(x),x),F[n-1]=Int(xˆ(n-1)*exp(x),x)):

> map(simplify,%%)> F:=proc(n)

if n=1 then exp(x) else factor(xˆn*exp(x)-n*F(n-1)):fi:

end:

1.12.4.c.2

> P:=Int(xˆn*sin(x),x);u:=unapply(p,n):

> alias(F[n]=u(n),F[n-1]=u(n-1),F[n+1],F[n+2]=u(n+2));

> intparts(p,sin(x));x:=intparts(%,cons(x));s:=F[n]=map(simplify,s);> F:=proc(n)

if n=0 then-cos(x) elif n=1 then sin(x)-x*con(x)else (-F(n-2)+sin(x)*xˆ(n-1)/(n-1)-cos(x)/(n-1)*x(n)/n*(n-1)*(n):fi:

end:

1.12.5> orbite:=proc(u0)

local u,f,i,s;s:=[0,u0];u:=u0;f:=u¡if u mod 2=1 then 3*u+1 else u/2 u/2 fi;for i to= 10000 while u<>1do u:=f(u):s:=s,[i,u]:od:s;

end:

> with (plots):> plotorb:= proc(n,a,b)

local g1,g2:g1:=pointplot([orbite(n)],symbol=circle,symbolsize=20,color=a):g2:=plot([orbite(n)],color=b):display(g1,g2);

end:

> display(plotorb(33,blue,red),plotorb(68,red,black));

Phạm Minh Hoàng 31

Page 48: Maple Va Cac Bai Toan Ung Dung

Chương 1. Cú pháp Maple

1.13 Bài đọc thêm: Thalès

Thalès(625-547 trước Công Nguyên)

Thalès vốn là một thương gia, nhưng sau khiphát tài giàu có thì ông dùng tiền kiếm đượcđể đi chu du, giao lưu học hỏi, nghiên cứu.Chặng đường đầu tiên ông dừng chân là AiCập. Tương truyền rằng ở đó có người tháchThalès đo chiều cao của kim tự tháp mà khôngcần leo lên (mà cho dù có leo lên đỉnh cũngchẳng giải quyết được gì !). Thalès liền cắmmột cây gậy xuống đất rồi nói: Khi chiều dàibóng cây gậy bằng cây gậy thì chiều dài bóngkim tự tháp bằng chiều cao của nó. Có lẽ lúcấy ông không thể ngờ rằng hơn 26 thế kỷ sau,các học sinh đều phải học qua câu nói bất hủnày: Định lý Thalès.

Sau khi đi nhiều, giao du rộng, học hỏikhắp nơi, ông trở về Milet và nổi tiếng là mộtnhà thông thái, hiểu biết uyên bác nhiều lĩnhvực: Doanh nghiệp, Chính trị, Khoa học, Thiênvăn, Toán học... Ông đã biết và truyền bá chonhững người xung quanh rằng một năm có 365ngày, người ta còn đồn rằng vào thời đó ôngđã hiểu vì sao có nguyệt thưc, nhật thực. Ôngđược người đương thời và hậu thế tôn vinh lànhà toán học đầu tiên của loài người. Quanđiểm của ông về nguồn gốc của muôn loài làtừ nước mà ra. Theo Aristore thì Thalès cũnglà "nhà đầu cơ đầu tiên của loài người" vì cómột năm, được mùa quả ô-liu, Thalès bèn bỏhết tiền ra mua sạch tất cả ô-liu vừa thu hoạch,sau đó ông cho bán từ từ ra thị trường. Nămđó, ông thu được tiền nhiều vô kể.

Thật khó kết luận là những phát minh tìm

tòi thời đó có phải thật là của ông hay không,nhưng có điều gần như chắc chắn ông là nhàhình học đầu tiên của nhân loại. Tác phẩm củaông về Hình học sơ cấp như những điều ôngđã phát biểu về đường thằng, góc, tam giác...đều khá rõ ràng tuy có một số kiến thức đượcbiết từ thời văn minh Babylone nhưng Thalèsquan tâm đến chứng minh, đó là điều làm tôngiá trị khoa học của ông. Những nhà khảo cổđã sưu tập được những bài phát biểu này, đóchính là cơ sở để đánh giá tính khoa học củaviệc nghiên cứu ông để lại cho đời sau. Sáu kếtquả quan trọng sau đây người ta cho là công laocủa Thalès:

Các góc đáy của tam giác cân bằng nhau.

Nếu hai đường thẳng cắt nhau thì các gócđối đỉnh bằng nhau.

Một tam giác được xác định chính xácnếu biết độ dài của một cạnh và hai góckề với cạnh đó.

Những cạnh tương ứng của các tam giácđều thì tỉ lệ với nhau.

Đường kính chia vòng tròn ra hai phầnbằng nhau.

Một tam giác ABC nội tiếp trong mộtvòng tròn và nếu BC là đường kính củavòng tròn thì zBAC là một góc vuông.

32 Phạm Minh Hoàng

Page 49: Maple Va Cac Bai Toan Ung Dung

Chương2

Bài toán cực trị

Cực trị là một bài toán cổ điển nhưng nhiều ứng dụng.Ngay từ thời xa xưa con người luôn luôn thắc mắc: đoạn đường nào gần nhất, thể tích nào

lớn nhất, chu vi nào nhỏ nhất... Bằng các tính toán qua kinh nghiệm, người xưa đã thiết lập racác công thức thực nghiệm, nhưng phải đợ đến khi các nhà toán học tìm ra đạo hàm thì mọi việcmới được suy luận một cách chặt chẽ.

Bài toán cực trị đơn thuần là giải phương trình đạo hàm của đại lượng muốn tìm cực trị.Phương pháp tổng quát của bài toán cực trị là:

Xác định đại lượng muốn tìm cực trị.

Tìm sự quan hệ giữa các biến và tìm cách đưa về hàm một hoặc hai biến.

Giải phương trình đạo hàm.

Khó khăn khi dùng trong môi trường tính toán hình thức ở chỗ sau khi giải phương trình phảitìm ra các nghiệm thích hợp.

2.1 Tiết kiệm nhôm

Cho một hình trụ thể tích π lít. Tìm kích thước hình trụ sao cho diện tích của nó nhỏnhất.

Gọi V là thể tích, S là diện tích toàn phần của hình trụ. Đặt r là bán kính đáy, h là chiềucao. Mục đích của chúng ta là tìm cực trị của S theo r (hoặc h) bằng cách giải phương trình:dS

dr= 0. Ta có:

> S:=2*Pi*rˆ2+2*Pi*r*h;

S := 2πr2 + 2πrh

> V:=Pi*rˆ2*h;

V := πr2h

Để loại h ta làm (thể tích là π lít):> eh:=h=solve(V=Pi,h);

Page 50: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

.

.h .

..r

Hình 2.1:

eh := h =1r2

Thay vào biểu thức của S:> subs(%,S);

r+ 2πr2

GiảidS

dr= 0 ta sẽ có ba nghiệm, trong đó ta chỉ lấy một nghiệm thực:

> r=select(i¡Im(i)=0,solve(diff(%,r)));r =

1222/3

Chiều cao h và diện tích S của hình trụ là:> subs(%,eh);

h = 22/3

> 'S'=subs(%%,%,S);

S = 3π21/3

Kiểm chứng vui: Bán kính và chiều cao của mọt lon sữa bò quen thuộc là 36.5 và 75mm.Ta có dung tích của nó là πtimes(36.5)2 75 314cm3.

Hãy kiểm chứng rằng diện tích của lon sữa bò 2π 36.52 + 2π 36.5 75 255cm2 làtối ưu.

2.2 Đoạn đường gần nhất

Một người muốn đi từ P đến R và phải bơi qua con sông. Vận tốc bơi là u, và vậntốc đi là v. Tính quãng đường nhanh nhất đến R. Biết rằng chiều rộng con sông làh và khoảng QR là n.

Gọi X là một điểm trên bờ QR với QX = x, thời gian tổng cộng để bơi từ P đến X và đibộ từ X đến R là:

34 Phạm Minh Hoàng

Page 51: Maple Va Cac Bai Toan Ung Dung

2.2. Đoạn đường gần nhất

Hình 2.2:

> T:=sqrt(hˆ2+xˆ2)/u+(n-x)/v;

T :=

?h2 + x2

u+

n x

v

Tọa độ của x là nghiệm của phương trìnhdT

dx= 0:

> solve(diff(%,x),x);hu?u2 + v2

, hu?u2 + v2

Trước tiên ta lưu ý rằng các lệnh đều độc lập với n. Mặt khác, lời giải này chỉ có ý nghĩakhi v2u2 ¡ 0, và như thế ta chỉ lấy được nghiệm thứ hai. Vì tất cả các biến đều hình thức nêncách duy nhất để lấy nghiệm dương là tìm trên dấu của biểu thức. Kế tiếp gán và biến.

> p1:=select(i¡is(sign(i)=1),%);p1 :=

hu?u2 + v2

Giả sử bây giờ ta đặt RX = x, thời gian tổng cộng sẽ là:> T:=sqrt(hˆ2+(n-x)ˆ2)/u+x/v;

T :=

?h2 + n2 2nx + x2

u+

x

v

> s:=solve(diff(%,x),x); (không hiển thị)Cùng một lý luận tương tự như trên, ta sẽ rút ra được một nghiệm (bây giờ nghiệm sẽ tùy

thuộc vào n). Nhưng vì kết quả quá phức tạp, không thể chọn bằng select nên ta chọn ngẫunhiên nghiệm thứ nhất làm lời giải.

Và nếu lời giải đúng ta phải có p1 + s[1] = QX + XR + QR = n.> simplify(p1+s[1],symbolic);

Phạm Minh Hoàng 35

Page 52: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

hu +?u2 + v2n?u2 + v2

Kết quả trên lớn hơn n, không chấp nhận được, phải lấy nghiệm thứ hai:> simplify(p1+s[2],symobolic);

n

Vậy nghiệm là s[2]. Với h = 10, u = 5, v = 10, n = 20, giá trị của XR là:> simplify(sbus(h=10,v=10,u=5,n=20,s[2])):%=evalf[5](%);

20 203?

3 = 14.226

Lưu ý: Khi u ¡ v, p1 sẽ là một số phức. Điều này hiển nhiên, và nó còn hiển nhiên hơntrong thực tế: nếu bơi nhanh hơn đi, ta chỉ cần bơi thẳng một lèo từ P sang R.

2.3 Góc nhìn của phi hành gia

Giả sử một phi hành gia đang lơ lửng trên đường nối giữaA là tâm trái đất (bán kínha) và B là tâm mặt trăng (bán kính b). Cho l = AB. Xác định tọa độ phi hành giatrên AB sao cho tổng diện tích của phần trái đất và mặt trăng ông ta có thể quan sátđược là cực đại. Biết rằng diện tích phần lồi nhìn thấy được là 2πrh, với r là bánkính hành tinh quan sát, h là chiều cao phần lồi.

..a

.A.B

.H

.J

.K

.X.

Hình 2.3:

Gọi A là tâm trái đất và x = AX là khoảng cách từ A đến điểm muốn tìm. Về phía trái đất,chiều cao của phần lồi là h = a AH . Mặt khác ta còn có:

cosα =AH

a=

a

xñ AH =

a2

x

Tương tự, về phía mặt trăng, chiều cao của phần lồi sẽ là b b2

l x.

Tổng diện tích nhìn thấy từ phi hành gia và là đại lượng cần tìm cực trị là:> p:=2*Pi*a*(a-aˆ2/x)+2*Pi*b*(b-bˆ2/(1-x));

p := 2πa

(a a2

x

)+ 2πb

(b b2

l x

)> s:=solve(diff(p,x),x);

36 Phạm Minh Hoàng

Page 53: Maple Va Cac Bai Toan Ung Dung

2.4. Hình nón và hình cầu

s :=12

(2a2 + 2b?

ba)laa3 + b3

,12

(2a2 + 2b?

ba)laa3 b3

Maple cho ra hai nghiệm, và theo như đầu bài thì ta phải có 0 x l:> select(i¡is(i>0),[s]);

Error, selecting function must return true or false

Điều này khong có gì ngạc nhiên, vì Maple không thể xét dấu của s khi a, b, l đều khôngphải là số. Nhưng thay vì cho số tất cả, ta thử a = 2b :[1]

> simplify(subs(a=2*b,s[2]));

27(4 +

?2csgn(b))l

Hàm csgn(b) là hàm dấu của ℜ(b), cho kết quả là 1 nếu ℜ(b) ¡ 0, và 1 nếu ℜ(b) 0.Bây giờ ta giả sử b ¡ 0.

> assume(b>0):%=evalf(%);

27(4 +

?2l) = 1.546918160l

Nghiệm này bị loại vì lớn hơn l. Tiếp tục với nghiệm thứ hai ta được:> simplify(subs(a=2*b,s[2])):%=evalf(%);

27(4 +

?2l) = 0.7387961251l

Vậy ta phải lấy nghiệm thứ hai.Việc dơn giản biểu thức của lời giải s[2] vô cùng phức tạp và khong đem lại gì khả quan.

Ta phải giúp Maple một tay. Trước tiên ta nhân tử số với (a3/2 + b3/2) rồi rút gọn:> b:='b':

> v1:=aˆ(3/2)+bˆ(3/2);

v1 := a3/2 + b3/2

> simplify(expand(numer(s[2])*v1),symobolic);

la9/2 + la3/2b3/2

Sau đó ta chia kết quả trên cho mẫu số nhân với v1 rồi rút gọn:> %/(denom(s[2])*v1):%=simplify(%);

la9/2 + la3/2b3/2

(a3 + b3)(a3/2 + b3/2)=

la3/2

a3/2 + b3/2

Kết luận: Khoảng cách từ tâm A của trái đất đến điểm muốn tìm làl 3?

a3?

a + 3?

b.

2.4 Hình nón và hình cầu

Tính bằng thể tích

Tìm thể tích lớn nhất của một hình nón có thể nội tiếp được trong một hình cầu bánkính R.

Hình 2.4 (a) là mặt cắt hình nón nội tiếp một hình cầu. Gọi R là bán kính hình cầu; r, h làbán kính đáy và chiều cao hình nón. Ta có:

1Nếu khai báo assume(a ¡ 0, b ¡ 0, l ¡ 0), lệnh select trên cũng không cho ra kết quả gì khác hơn

Phạm Minh Hoàng 37

Page 54: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

AB = r,NB = h, OA = R

Gọi p1 là thể tích hình nón và là hàm số ta phải tính cực trị:> pV:=V=1/3*Pi*rˆ2*h;

pV := V =13πr2h

.

.A .B

.O

.N

Hình 2.4: (a) Hình nón nội tiếp (b) đương biểu diễn của thể tích theo h khi R = 3.

Để loại r trong biểu thức pV , ta có: AB2+ OB

2= OA

2:> uI:=rˆ2+(h-R)ˆ2=Rˆ2;

uI := r2 + (hR)2 = R2

> pI:=isolate(uI,r);

pI := r = RooOf( Z2 + h2 2hR) (2.4.1)

Thay giá trị của r vào biểu thức của thể tích hình nón và tìm cực trị bằng cách giải phương

trìnhBBhpV (h,R) = 0 để tìm giá trị của h(h ¡ 0):> p3:=subs(%,rhs(pV));

p3 :=13πRooOf( Z2 + h2 2hR)2h

> eh:=h=op(select(i¡i<>0,[solve(diff(%,h),h)]));eh := h =

43R

Thay kết quả này vào biểu thức của p3 để tính Vmax. Ta dùng hàm allvalues để hiển thịmọi giá trị:

> subs(eh,p3):%=allvalues(%);49π(RootOf(9 Z2 8R2))2R =

(3281

πR3,3281

πR3

)Để có r ta thay giá trị của V và h vào biểu thức của pV :

> solve(subs(V=rhs(%)[1],eh,pV),r);23?

2R,23?

2R

38 Phạm Minh Hoàng

Page 55: Maple Va Cac Bai Toan Ung Dung

2.4. Hình nón và hình cầu

Kết luận: r =2

3

?2R, h =

4

3R, V =

32

81πR3.

Cách làm trên khá phức tạp với hàm RootOf. Thực ra chúng ta có thể đơn giản đi nhiềubằng cách dùng isolate với r2 thay vì r, và thay thế giá trị này vào biểu thức pV trước khigiải:

> isolate(uI,rˆ2): p3:=subs(%,rhs(pV)):

Để kiểm chứng lại kết quả, ta có thể vẽ đồ thị của p3 và p13, nghĩa là đường biểu diễn củathể tích theo (h,R). Để đơn giản ta cho R = 3:

> fVI:=unapply(p3,R):

> plot([fVI(3)],diff(fVI(3),h)],h=0..5,-10..34,linestyle=[1,4]);

Theo hình 2.4 (b), thể tích cực đại khi h =4

3R = 4 và giá trị này là

32

81π33 33.51

Tìm thể tích nhỏ nhất của hình nón ngoại tiếp hình cầu bán kính R.

.

.B .C

.D

.O

.N

.M

Hình 2.5: (a) hình nón ngoại tiếp (b) đường biểu diễn của thể tích theo h khi R = 3.

Trong trường hợp này ta có (tam giác MBC và MDO đồng dạng):OD

BC=

MD

MBvới MD

2 = MO2 OD

2 = (hR)2 R2

> uE:=R/r=sqrt((h-R)ˆ2-Rˆ2)/h;pE:=isolate(%,r);

uE :=R

r=

?h2 2hR

h

pE := r =hR?

h2 2hR(2.4.2)

Và cùng mọt cách tính cực đại như trên chúng ta có:> p3:=subs(%,rhs(pV));

p3 :=13

πh3R2

h2 2hR> s:=solve(diff(%,h),h);

> simplify(isolate(subs(h=s[2],uE),r),symbolic);

s := 4R

Phạm Minh Hoàng 39

Page 56: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

r = R?

2

Kết luận: h = 4R, r = R?

2, V =8

3πR3

Đồ thị của thể tích theo h với R = 3:> fVE:=unapply(p3,R):

> plot([fVE(3)],h=9..16,tickmarks=[3,3]);

Theo như Hình 2.5 (b) thì thể tích cực tiểu ở h = 4R = 12.

Tính bằng diện tích

Bây giờ giả sử chúng ta cực trị hóa diện tích chung quanh hình nón thay vì thể tích, ta sẽtính cực trị của S = πr

?r2 + h2. Và cùng một lý luận như trên:

Hình nón nội tiếp cực đại

> pS:=S=Pi*r*sqrt(rˆ2+hˆ2);

pS := πr?

r2 + h2

Để loại r trong pS, dùng lại biểu thức pI (2.1):> p3:=subs(pI,rhs(pS));

p3 := πRootOf( Z2 + h2 2hR)a

h2 + (RootOf( Z2 + h2 2hR))2

> eh:=h=solve(diff(p3,h),h);

eh := h =43R

> subs(eh,p3):%=op(map(simplify,[allvalues(%)],symbolic));

1/3πRootOf(9 Z2 8R2)a

16R2 + 9(RootOf(9 Z2 8R2))2

=89πR2

?3,8

9πR2

?3

> s:=solve(subs(S=rhs(%)[1],eh,pS),r);

s := 23?

2R,23I?

6R,23?

2R,23I?

6R

Để tìm nghiệm dương duy nhất trong bốn nghiệm trên ta phải dùng op để tách biến hìnhthức R. Mặt khác vì lênh select thực hiện trên [s] nên ta lại phải op trên các phần tử s[i] đểlại dấu ngoặc vuông:

> select(i¡is(Re(op(1,op(s[i])))>0),[s]);[23?

2R

]Kết luận: h =

4R

3, r =

2

3

?2R, S =

8?

3

9πR2 và đó cũng là kích thước hình nón khi tính

cực trị với thể tích.Vẽ đồ thị ta chọn R = 3:

> fSI:=unapply(p3,R);

> plot([fSI(3)],h=0..6); [Hình 2.6 (a)]Lưu ý: Diện tích là một đại lương dương nhưng đôi khi đường biểu diễn lại âm. Lý do là

vì hàm p3 có hai giá trị đối xứng nhau:> allvalues(p3):

40 Phạm Minh Hoàng

Page 57: Maple Va Cac Bai Toan Ung Dung

2.4. Hình nón và hình cầu

> %=map(combine,[%],radical,symbolic);

π?h2 + 2hR

?2?

hR, π?h2 + 2hR

?2?

hR

= [πha(2h 4R)R,πh

a(2h 4R)R]

Vậy nếu đồ thị âm thì chỉ cần lấy giá trị kia hoặc cũng có thể lựa nghiệm dương bằng cáchxét dấu của nó:

> select(i¡sign(i)>0,[allvalues(p3)]);> fSI:=unapply(op(%),R):plot(fSI(3),h=0..6);

Hình 2.6: Đồ thị của diện tích theo h khi R = 3: (a) trường hợp nội tiếp; (b) ngoại tiếp

Hình nón nội tiếp cực tiểu

> p3:=simplify(subs(pE,rhs(pS)),symbolic);

Ta thực hiện cùng phương pháp bằng cách áp dụng (2.2) vào biểu thức pS:> op(select(i¡i<>0,[solve(diff(p3,h),h)]));

p3 :=πhR(hR)

h 2R> eh:=op(select(i¡is(op(1,op(s[i]))>1),[%]));

(2 +?

2)R, (2?2)R

Và diện tích cực tiểu sẽ là:> s2:=simplify(subs(h=%,p3),symbolic);

s2 := dfrac12π(2 +?

2)R2(1 +?

2)?

2 (2.4.3)

Và giá trị của r là:> s:=solve(subs(S=s2,h=eh,pS),r);

s :=a7 5

?2R,

a7 5

?2R,

a1 +

?2R,

a1 +

?2R

Dĩ nhiên ta chỉ chọn nghiệm r ¡ R:> op(select(i¡is(Re(op(1,op(s[i])))>0),[s])):%=evalf(%);a

1 +?

2R = 1.5537R

Phạm Minh Hoàng 41

Page 58: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

s2 (phương trình 2.3) là một biểu thức không dễ rút gọn vì có dạng căn. Trong trường hợpnày ta chỉ có thể bình phương lên trước khi rút gọn hoặc dùng combine:

> s2:%=factor(expand(combine(%,radical,symbolic)));12π(2 +

?2)R2(1 +

?2)?

2 = πR2(2?

2 + 3)

Đường biểu diễn của diện tích theo h tương ứng với R = 3:> fSE:=unapply(p3,R):plot(fSE(3),h=7.5..13);

Theo Hình 2.6 (b) thì diện tích sẽ cực tiểu khi h = Ra

1 +?

2 10.24

Bảng dưới đây tóm tắt kết quả của các cách tính theo thể tích (V ), diện tích chung quanh(S) và ở mỗi cách tính ta phân biệt hai trường hợp: hình nón nội tiếp (viết tắt là int) hoặc ngoạitiếp (ext):

Tính theo V Tính theo Sint ext int ext

V32

81πR3 8

3πR3 32

81πR3 1

3πR3

(4 + 3

?2

)S

8

9

?3πR2 6πR2 8

9

?3πR2 πR2(3 + 2

?2)

Bảng 2.1: Kết quả theo V và theo S của hình nón nội tiếp hình cầu

Các hình dưới đây được vẽ trực tiếp từ kết quả vừa tính được:

Nội tiếp cực đại tính theo V : h =3

4R, r =

2?

2

3R. Cho R = 3:

> with(plottools):h:=4/3*R:r:=2/3*sqrt(2)*R:R:=3:

> CO:=cone([0,0,-R],r,h,style=patch):SP:=sphere([0,0,0],R):

> plots([display]([SP,C0],style=wireframe); [Hình 2.7 (a)]

Nội tiếp cực đại tính theo S : h = (2 +?

2)R, r =a

1 +?

2R 1.55. Cho R = 3:

> vh:=R*(2+sqrt(2));vr:=sqrt(1+sqrt(2))*R;ct:=vh-R;

> SP:=sphere([0,0,0],R,style=patch);C0:=cone([0,0,-ct],vr,vh):

> plots[display]([SP,C0],style=wireframe); [Hình 2.7 (b)]

2.5 Khúc cua gắt

Trong một khúc cua (rẽ) thẳng góc hợp bởi hai con đường có chiều rộng a và b mét.

1. Tìm chiều dài tối đa của khúc cây thẳng có thể đi qua.

2. Nếu thay vì khúc cây, bây giờ là một chiếu xe có bề ngang u. Tính chiều dàitối đa của xe để có thể vượt qua khúc cua?

42 Phạm Minh Hoàng

Page 59: Maple Va Cac Bai Toan Ung Dung

2.5. Khúc cua gắt

Hình 2.7: Hình nón nội tiếp và ngoại tiếp hình tròn

Vấn đề 1

Đại lượng cần phải tìm cực trị là đoạn AB trong hình bên. Gọi a là chiều rộng đường ACvà b là chiều rộng đoạn BC. Gọi α là góc hợp bởi AB và AC:

> p:=b/cos(alpha)+a/cos(Pi/2-alpha);

p :=b

cos(α)+

a

sin(α) (2.5.1)

Phương trìnhdp

dα= 0 cho ba nghiệm (không in ra vì quá dài), trong đs có hai nghiệm phức

(loại):> solve(diff(p,alpha),alpha):

Để loại các nghiệm phức, chúng ta không thể đi tìm các nghiệm có phần phức khác không,vì tất cả các bieén ở đây đều hình thức. Cách duy nhất là đi tìm chữ I , biểu tượng cho số phức,và ta gán tên cho kết quả tìm thấy (việc này sẽ hữu ích cho phần sau):

> as:=op(remove(has,[%],I));

as := arctan(3?

ab2

b) (2.5.2)

Và chiều dài AB hay khúc cây thẳng dài nhất có thể đi qua khúc cua là:> subs(alpha=%,p);

b

c1 +

(ab2)2/3

b2+ ab

c1 +

(ab2)2/3

b2

13?

ab2[2]

Để đơn giản biểu thức trên, chúng ta cần phải qua những quá trình phức tạp (mà chỉ kết quảsau cùng mới được xuất ra ở đây):

> simplify(%,symbolic):normal(%,expanded):

2Kết quả của lệnh này có dạng lượng giác, nhưng khi xuất sang LATEX thì được chuyển sang căn số

Phạm Minh Hoàng 43

Page 60: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

.

.a

.A .C

.B

.b

Hình 2.8:

> expand(%): factor(%);(b

23 + a

23

) 23

(2.5.3)

Đem kết quả trên gán cho một hàm số theo (a, b):> f1:=unapply(%,(a,b));

Ứng dụng bằng số, ta được chiều dài tối đa của khúc cây có thể qua được khúc cua 3 2 là:> evalf(f1(3,2));

7.023482380

Và theo (2.6) ta chắc chắn f1(a, b) = f1(b, a)

Vấn đề 2

Trường hợp chiếc xe hình chữ nhật có bề ngang u cũng giống như trường hợp khúc câynhưng lúc ấy chiều rọng đường AC sẽ giảm đi một khoảng bằng

u

cos(α).

Ta có thể lý luận rằng trong trường hợp khúc cây ta phải tìm cực tiểu của đoạn AB xoayquanh F , và trong trường hợp chiếu xe, tìm cực tiểu của AB xoay quanh E, với EF =

u

cos(α)

Vẫn gọi a, b lần lượt là chiều rộng mặt đườngAC và CB, u là chiều rọng của xe. Biểu thứccủa p trong trường hợp này là:

> q:=b/cos(alpha)+(a-u/cos(alpha))/sin(alpha);

q :=b

cos(α)+

a u

cos(α)sin(α)

> solve(diff(q,alpha),alpha);

arctan( %13a 2%12u + u

b(%12 1),%1

)44 Phạm Minh Hoàng

Page 61: Maple Va Cac Bai Toan Ung Dung

2.5. Khúc cua gắt

.

.a

.A .C

.B

.b

.F

.A1

.E

.B1.u

Hình 2.9:

%1 := RootOf((a2 + b2) Z6 4 Z5ua + (3b2 + 4u2) Z4

+2ua Z3 + (4u2 + 3b2) Z2 + u2 b2)

Khủng khiếp! Và còn khủng khiếp hơn nếu khai triển ra dưới dạng "tường minh" bằngallvalues. Gọi là "tường minh" chứ thật ra ta chỉ thu được 6 hàng RootOf còn phức tạp hơngấp bội! Đến đây thì ta chỉ còn cách thử nghiệm giá trị của lời giải bằng cách gán từng RootOfvào một hàm theo (a, b, u) trước khi thử với các giá trị bằng số:

Ta dùng seq để gán lời giải i vào hàm f(i, a, b, u):> s2:=allvalues([%]):

> f:=unapply(subs(alpha=op(s2[i]),p),(i,a,b,u)):

Cho a = 3, b = 2, u = 0 nghĩa là trường hợp khúc cây, và thử với 6 lời giải:> seq(evalf(f(i,3,2,0),5),i=1..6);

7.2668,1.5069, 19.239,7.0240, 3.9222,8.6530

Không có một kết quả nào khả dĩ chấp nhận được. Tương tự, khi có bề rọng chiếc xe u = 1ta cũng thu được cùng một kết quả như khi u = 0, thậm chí khi cho u = 4, a = 3, b = 2 nghĩalà bề rọng của xe còn lớn hơn hai con hẻm, kết quả vẫn không mảy may thay đổi.

> seq(evalf(f(i,3,2,4),5),i=1..6):

Trong những trường hợp "khó xử" như thế này, chúng ta chỉ còn cách... gác Maple qua mộtbên và lý luận.

Xem Hình 2.9 ta có thể thấy rằng cho dù đoa là khúc cây hay chiếc xe, ta chỉ tịnh tiến ABđi một đoạn u thành A1B1, điều đó có nghĩa là trong cả hai trường hợp, góc α - tương ứng vớiđoan AB cực tiểu - không đổi và như thế ta có thể dùng lại biểu thức (2.5) và gán vào (2.4) vớiđiều kiện thay a bằng a u:

> subs(a=a-u,as);

arctan(3a

(a u)b2

b)

> subs(alpha=%,a=a-u,p);

Phạm Minh Hoàng 45

Page 62: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

b

cos(arctan((a 2u)b2)

13

b

) +a u

sin(arctan((a 2u)b2)

13

b

)> simplify(%,symbolic);b

b23 + (a 2u)

23 ( 3?

a 2ub23 + a u)

3?

a 2u(2.5.4)

> f3:=unapply(%,(a,b,u)):

Như thế chiều dài tối đa của một chiếc xe có chiều ngang 1mét qua được khúc cua 32 là:> f3(3,2,1):%=evalf(%,5);a

223 + 1(2

23 + 2) = 5.7703

Khi u = 0 nghĩa là trường hợp khúc cây, ta tìm lại được kết quả của (2.7):> f3(3,2,0):%=evalf(%,5);

13

a2

23 + 3

23 ( 3?

3223 + 3)3

23 = 7.0236

Khi u = 2 nghĩa là chiếc xe có chiều rộng bằng mặt đường CB:> f3(3,2,2):%=evalf(%,5);

b

223 + (1)

23 ( 3?12

23 + 1)(1)

23 = 2.6602 0.15181I

Kết quả hợp lý, vì không thể nào một chiếc xe có thể rẽ vào một con hẻm cs cùng chiềurọng với nó, trừ khi chiếc xe không rẽ mà là đâm thẳng vào, và theo (2.4), điều này có nghĩa làα =

π

2hay AB = 8 . . .

Mặt khác khi quan sát biểu thức (2.8), ta thấy nó chỉ có nghĩa khi a ¡ 2u. Điều đó có nghĩachiều rộng của xe không được vượt quá một nửa chiều rộng của đường AC nhưng lại khôngràng buộc gì với BC. Ta có thể suy luận ra rằng: f3(a, b, u) f3(b, a, u):

> evalf(f3(3,4,1),5),evalf(f3(4,3,1),5);

8.4796, 8.5435

Kết quả chiều dài xe tùy thuộc vào hướng đến của xe. Điều này trái ngược với (2.5), ta tabắt buộc phải chia hai trường hợp để xét[3]:

Trên đây ta đã xét trường hợp xe đến từ AC (thay thế a bằng a u), bây giờ giả sử xe đếntừ đường BC, phải thay thế b = b u trong hai biểu thức (2.6) và (2.7) trước khi gán vào hàmf4:

> subs(b=b-u,as);subs(alpha=%,b=b-u,p);

> f4:=unapply(%,(a,b,u));

f4 := (a, b, u) ÞÑ b u

cos(arctan(a(a 2u)2)frac13

b 2u

) +a

sin(arctan(a(a 2u)2)frac13

b 2u

)> evalf(f3(3,4,1)),evalf(f4(4,3,1)),evalf(f4(3,2,0));

8.479785248, 8.479785248, 7.023482380

3Nhưng biết đâu điều này hợp lý ngoài đời (với các tài xế)?

46 Phạm Minh Hoàng

Page 63: Maple Va Cac Bai Toan Ung Dung

2.6. Ellipsoid

2.6 Ellipsoid

Cho ellipsoid (E) có các bán kính theo (a, y, z), lần lượt là (a, b, c). Tính kích thướccủa hình hộp chữ nhật (H) nội tiếp trong (E) có thể tích lớn nhất.

.

.c

.a

.b

.x

.y

.z

Hình 2.10: Hình hộp nội tiếp trong một ellipsoid

Đây là trường hợp tìm cực trị có điều kiện của hàm nhiều biến dưới ràng buộc đẳng thức.Bài toán cực trị được giải theo phương pháp nhân tử Lagrange:

tối ưu hóa hàm f(x, y)dưới ràng buộc g(x, y) = 0

ùñ

$'&'%BBxf(x, y) + u

BBxg(x, y) = 0

BByf(x, y) + u

BByg(x, y) = 0

Trong bài này đại lượng cần tìm cực trị f(x, y) là thể tích V của hình hộp, và điều kiệng(x, y) là phương trình của (E):

> g:=xˆ2/a+yˆ2/bˆ2+zˆ2/cˆ2=1;

g :=x2

a2+

y2

b2+

z2

c2= 1

Vì nội tiếp trong (E) nên (H) có các đỉnh tiếp xúc với (E), tọa độ của chúng là (x, y, z),và thể tích của (H) là:

> V:=8*x*y*z;

V := 8xyz

> fx:=diff(V,x):fy:=diff(V,y):fz:=diff(V,z):

> gx:=diff(g,x):gy:=diff(g,y):gz:=diff(g,z):

> s:=solve(fx+u*gx,fy+u*gy,fz+u*gz,g,u,x,y,z);Trong 10 nghiệm này (hoặc đúng ra trong 4 nghiệm đơn và 3 nghiệm kép của s), đương

nhiên ta chỉ chọn các nghiệm dương cho (x, y, z).> allvalues(s[3])[1];

Phạm Minh Hoàng 47

Page 64: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

"x =

13?

3a, y =13?

3b, u = 43?

3cab, z =13?

3c

*Vậy (H) có các cạnh theo (x, y, z) là

[2a?

3

3, 2

b?

3

3, 2

c?

3

3

]. Và lúc ấy thể tích lớn nhất

sẽ là (nhớ dùng hàm assign để chấp nhận lời giải):> assign(%):V;

8?

39

abc

Và khi (E) là một hình cầu (a = b = c = R), thể tích lớn nhất của (H) sẽ là:> subs(a=R,b=R,c=R,V);

8?

39

R3

Hình vẽ cho bài toán Ellipsoid

Chúng ta lấy lại ký hiệu và các kết quả vừa tính xong. Gọi (a, b, c) là bán kính của ellipsoidtheo (x, y, z). Các đỉnh của hìn khối chữ nhât sẽ từng cặp đối xứng qua ba trục tọa độ và tọa độcủa chúng có dạng:"

x = |a|?

33

, y = |b|?

33?

3, z = |c|?

33

*Để khai báo hình khối chữ nhật, bắt đầu từ phiên bản 8 có lệnh parallelepiped phải

dùng hàm draw.Mặt khác, để có thể vẽ chung hình khối và ellipsoid trong cùng một đồ thị cần biến đổi từ

draw sang POLYGONGọi (u, v, w) lần lượt là tọa độ theo (x, y, z). Đặt a = 3, b = 2.5, c = 2, ta có:

> restart:with(geom3d):eith(plots):

> a:=3:b:=2.5:c:=2:eq:=xˆ2/aˆ2+yˆ2/bˆ2+zˆ2/cˆ2=1:

> u:=a*sqrt(3)/3:v:=b*sqrt(3)/3:w:=c*sqrt(3)/3:

> point(A,u,-v,w),point(B,u,v,w),point(C,u,-v,-w),point(D,-u,-v,w):

> dsegment(d1,[A,B]),dsegment(d2,[A,C]),dsegment(d3,[A,D]):

> paralleleppiped(pp,[d1,d2,d3]):

> p:=convert(draw(pp,labels=[x,y,z]),POLYGONS):

> s:=implicitplot3d(eq,x=-3..3,y=-2.5..2.5,x=-2..2,

style=wireframe,axes=boxed):

> display(p,s,scaling=constrained,orientation=[-36,76]);

Ta cũng có thể "xén" trái dưa Thái để thấy rõ chi tiết hình khối:> s:=implicitplot3d(eq,x=-3..2,y=-2..2,z=-2.5..2.5,style=wireframe):

> display(p,s,scaling=constrained,orientation=[-16,106]);

2.7 Cực trị của hàm hai biến: Thí dụ 2

Ở các thí dụ trên, khi tính cực trị của một hàm hai biến, người ta tìm cách khử đi một biếntrước khi giải phương trình đạo hàm với biến còn lại. Tuy nhiên có những trường hợp không

48 Phạm Minh Hoàng

Page 65: Maple Va Cac Bai Toan Ung Dung

2.7. Cực trị của hàm hai biến: Thí dụ 2

Hình 2.11: Hình khối cực đại trong một ellipsoid

khử được và lúc ấy chúng ta bắt buộc phải giải hệ phương trình đạo hàm.Từ một thanh sắt dài nmét, người ta muốn tạo thành một bồn chứa hình chữ U bằngcách gấp hai đầu một đoạn x vào một góc a. Tính x và a sao cho dung tích bồn cựcđại.

.

.x

......... ............a

Hình 2.12:

Gọi S là đại lượng cần tính, thì lời giải đơn thuần là nghiệm của hệ phương trình đạo hàm:" Bpartialx

S(x, a) = 0,B

partialaS(x, a) = 0

*.

> S:=n*x*x*sin(a)-2*xˆ2*sin(a)+xˆ2*sin(a)*cos(a);

S := nx sin(a) 2x2 sin(a) + x2 sin(a) cos(a)

> ex:=factor(diff(S,x));

ex := sin(a)(n 4x + 2x cos(a))

> ea:=factor(dif(X,x));

ea := x(2x cos(a) x(cos(a))2 + x(sin(a))2 n cos(a))

> solve(ex,ea,x,a);

tx = 0, a = 0u, tx = n, a = 0u, tx =n

3, a = πu

tx =n

3, a = arctan(RootOf( Z2 3, label = L1), 1)u

Ta thu được bốn cặp nghiệm, ba cặp nghiệm đầu không thích hợp và ta phải giữ lại nghiệm

Phạm Minh Hoàng 49

Page 66: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

có RootOf và dùng hàm allvalues để hiển thị:> s:=allvalues(op(select(has,[%],Root0f)));

tx =n

3, a =

π

3u, tx =

n

3, a = π

3u

Trong hai cặp nghiệm trên, dĩ nhiên loại cặp 2:> assign(s[1]):S;

112

n2?

3

Kết luận: x =n

3, a =

π

3, S =

1

12n2?

3

2.8 Cực trị của hàm ba biến

Một hình ngũ giác hợp bởi một hình chữ nhật và một hình tam giác cân có kíchthước theo (α, x, y) như hình bên. Gọi P là chu vi ngũ giác, hãy tính (α, x, y) saocho diện tích S của nó cực đại.

.

.y

.2x

.a

Hình 2.13:

> restart:alias(alpha=a):

> S:=2*x*y+xˆ2*tan(a);

S := 2xy + x2 tan(α)

> vp:=2*x+2*y+2*x/cos(a)-P;

vp := 2x + 2y + 2x

cos(α) P

Chúng ta có cả thảy 3 biến để tính cực trị và vấn đề này sẽ rất phức tạp. Lý tưởng là chúngta sẽ đưa về hai biến bằng cách loại y từ biểu thức trên:

> solve(vp,y);

12P cos(α) + 2x cos(α) + 2x

cos(α)> S1:subs(y=%,S);

S1 := x(P cos(α) + 2x cos(α) + 2x)cos(α)

+ x2 tan(α)

Và hệ hai phương trình để tính cực trị là:

50 Phạm Minh Hoàng

Page 67: Maple Va Cac Bai Toan Ung Dung

2.8. Cực trị của hàm ba biến

> ex:=diff(S1,x);

ex := P cos(α) + 2x cos(α) + 2x

cos(α) x(2 cos(α) + 2)

cos(α)+ 2x tan(α)

> ea:=diff(S1,a);

ea := x(P sin(α) 2x sin(α))cos(α)

x(P cos(α) + 2x cos(α) + 2x) sin(α)

(cos(α))2+ x2(1 + tan(α))2)

> solve(ex,ea,x,a);

tx =12RootOf( Z2 + 1 4 Z, label = L2)P

a = arctan(12,1

2RootOf( Z2 + 1 4 Z, label = L2) + 1)u

> u:=allvalues(%);

u :="

x =12(2 +

?3)P, a =

6

*,

"x =

12(2?3)P, a =

6

*Quan sát hai cặp nghiệm trên thì ta thấy cặp thứ nhất không thích hợp vì:

x =P

2(2 +

?3) ¡ P . Dung hàm assign để chấp nhận lời giải:

> assign(u[2]);

Với x và α xác định, ta tính được y và tức khắc suy ra diện tích S:> y:=factor(solve(vp,y));

y := 16(3 +

?3)P

> 'S'=factor(S);

S = 14(?

3 2)P 2

Kết luận: Với P cho trước, S sẽ cực đại khi:

α =π

6, x :=

P

2(2?3), y :=

P

6(3?3), S :=

P 2

4(2?3) (2.8.1)

Cách giải trên hơi dài dòng nhưng đó là một cơ hội để thao tác trên các lệnh diff, al-lvalues. Cách giải ngắn gọn nhất vẫn là phương pháp nhân tử Lagrange vì nó có thể giải dễdàng một hệ nhiều biến[4]. Bài toán của chúng ta là tối ưu hàm S (phương trình 2.9) với ràngbuộc vp = 0 (phương trình 2.10):

tối ưu hóa hàm f(x, y, a)dưới ràng buộc g(x, y, a) = 0

*ùñ

$''''&''''%BBxf(x, y, a) + u

BBxg(x, y, a) = 0

BByf(x, y, a) + u

BByg(x, y, a) = 0

BBaf(x, y, a) + u

BBag(x, y, a) = 0

> dx:=diff(S,x);dy:=diff(S,y);da:=diff(S,a);

dx := 2y + 2x tan)a), dy := 2x, da := x2(1 + tan(a)2)

> gx:=diff(vp,x);gy:=diff(vp,y);ga:=diff(vp,a);

gx := 2 +2

cos(a), gy := 2, ga :=

2x sin(a)cos(a)2

> s:=solve(dx+u*gx,dy+u*gy,da+u*ga,vp,u,x,y,a);Kết quả là những RootOf phức tạp, không in ra đây.

4Xin xem thêm về phương pháp Lagrange mục 3.4

Phạm Minh Hoàng 51

Page 68: Maple Va Cac Bai Toan Ung Dung

Chương 2. Bài toán cực trị

> allvalues(%);"a =

6, u = 1

2(2 +

?3)P, x =

12(2 +

?3)P, y =

16(2 +

?3)P +

16P

*"

u = 12(2?3)P, x =

12(2?3)P, a =

16π, y =

16(2?3)P +

16P

*Chỉ nghiệm 2 là chấp nhận được và người ta tìm lại được kết quả như ở (2.11)

> 'y'=factor(eval(eval(y,%[2]));

y = (3 +?

3)P6

52 Phạm Minh Hoàng

Page 69: Maple Va Cac Bai Toan Ung Dung

2.9. Bài đọc thêm: Pythagore

2.9 Bài đọc thêm: Pythagore

Pythagore(Samoa 569 - 500 trước Công Nguyên)

Cuộc đời của nhà toán học Hy Lạp lỗi lạc thờicổ đại này luôn là một bí ẩn đối với hâu thế.Người ta đoán rằng gia đình ông gốc Tyr, vàhình như ông đã từng là học trò của Thalès.Ông đi chu du nhiều nơi, qua Ai Cập, rồi Baby-lone, Tiểu Á rồi cuối cùng về định cư và mởtrường tại Crotone. Học trò của ông lúc nàythuộc nhiều tầng lớp của xã hội. Đặc biệt trongtrường có cả phụ nữ, đó là điều cấm kỵ thời bấygiờ. Trong số "nữ sinh" của ông có Théano saunày thành vợ ông mặc dù có sự cách nhau khálớn về tuổi đời.

Trong số học trò của Pythagore, chỉ cómộtsố ít được tuyển vào một nhóm đặc biệt thâncận với thầy mà thôi. Có những phát minh gìmới thì thầy phổ biến cho nhóm đặc biệt nàyvà thành viên không được tự tiện phổ biến rangoài. Pythagore truyền bá mạnh mẽ tư tưởngtriết học cùng tín ngưỡng của minh vào đámhọc trò thân cận. Nhưng cũng vì đómà nảy sinhlòng ganh ghét trong cộng đồng và kết cục làPythagore và một số học trò thân thiết của ôngbị giết thê thảm! Nhưng cộng đồng do ông gâydựng lên thì vẫn tồn tại và phát triển thêm mộtthế kỷ nữa và phần nào thành công trong việcphát triển toán cũng như triết học.

Triết lý Pythagore xem thế giới này là cóthể giải thích được bằng số. Ở đây, số có nghĩalà số nguyên, một phân số không thể xem làsố được. Pythagore quan tâm đến thương củahai độ dài. Ông nói rằng thương số này là khảước nếu ta biểu diễn được dưới dạng phân số,nghĩa là tử số và mẫu số của nó được biểu diễnbằng số nguyên (cùng đơn vị đo). Vì vậy chonên khi phát hiện ra rằng

?2 không phải là khả

ước các học trò hoang mang không hiểu nó làgì, vì chưa giải thích nó được bằng luận điểmcủa thầy, nên họ giấu đi không công bố hiệntượng đó.

Môn đệ của Pythagore gắn mỗi số với mộtsố hạt sỏi tương ứng. Họ xếp các số theo cáchsau: các số như 1, 3, 6, 10... và tổng quát là số12 n (n + 1) được gọi là những số tam giác;

các số như 1, 4, 9, 16, tổng quát là n2 thì gọilà những số vuông. Những số không phải là sốnguyên tố thì gọi là những số chữ nhật.

Nhờ cách sắp xếp ấy mà người ta chứngminh được một số công thức, ví dụ:n2 + 2n +1 = (n + 1)2, 1 + 3 + ... + (2n 1) = n2,và chính trường phái Pythagore đã phát hiện racác số hoàn hảo, số bạn bè.

Số hoàn hảo là các số bằng tổng các ước số của nó.Thí dụ 28 = 1+2+4+7+14

Hai số bạn bè là hai số mà các ước số của số này có tổng bằng số kia.Thí dụ 284 có ước là 1, 2, 4, 71, 142 và tổng của nó là 220.220 có ước là 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 và tổng của nó là 284.

Phạm Minh Hoàng 53

Page 70: Maple Va Cac Bai Toan Ung Dung

Chương3

Đồ thị ba chiều

Chương này trình bày một số lệnh của đồ thị 3 chiều qua thí dụ bài toán đi tìm cực trị hàmnhiều biến hay tối ưu hóa dưới ràng buộc[1].

3.1 Thí dụ 1

Trong thí dụ này, hệ phương trình f 1x(x, y) = f 1y(x, y) = 0 không cho ra lời giải giải tíchcũng như lời giải số, chúng ta bắt buộc sử dụng đến đồ thị.

Cho hàm f(x, y) được khai báo dưới dạng hàm mũi tên:> restart:with(plots): alias(SA='shading=ZHUE,axes=box'):

> f:=(x,y)¡3*(x-1)ˆ2*exp(-xˆ2-(y+1)ˆ2)-10*(1/5*x-xˆ3-yˆ5*

exp(-xˆ2-yˆ2)-1/3*exp(-(x+1)ˆ2-yˆ2);

f := (x, y) ÞÑ 3(x 1)2ex2(y+1)2 10(15x x3 y5)ex2y2 1

3e(x+1)2y2

Surface := plot3d(f(x, y), x = -3.5 .. 3.5, y = -3.5 .. 3.5,grid = [40, 40]):

display(Surface, orientation = [-49, 69], lightmodel = light1,SA);

Quan sát đồ thị ta thấy f(x, y) có nhiều điểm dừng, đó là những điểm đạo hàm riêng f 1x(x, y)và f 1y(x, y) triệt tiêu. Để xác định tọa độ và tính chất của những điểm này, cần thiết giải hệphương trình:

f 1x(x, y) = 0//f 1y(x, y) = 0

Vì f(x, y) là hàm mũi tên nên phải dùng toán tử D để lấy đạo hàm riêng:

fx(x, y) =BfBx D[1]f(x, y), fy(x, y) =

BfBy D[2]f(x, y)

> fx:=D[1](f)(x,y): 'fx'=collect(fx,exp);

fx = (6(x 1)2x + 6x 6)ex2(y+1)2+

(2 + 30x2 + 20(15x x3 y5)x)ex2y2

+ (23

+23x)e(x+1)2y2

1Chủ đề được trích từ giáo trình của Collège de Maisonneuv (Québec, Canada) với sự đồng ý của tác giả, giáosư Pierre Lantagne

Page 71: Maple Va Cac Bai Toan Ung Dung

3.1. Thí dụ 1

Hình 3.1:

> fy:=D[2](f)(x,y): 'fy'=collect(fy,exp);

fy = 3(x 1)2(2 2y)ex2(y+1)2+

(50y4 + 20(15x x3 y5)y)ex2y2

+23ye(x+1)2y2

Hai biểu thức trên cực kỳ phức tạp, Maple không thể tìm ra lời giải giải tích cũng như giảisố:

> solve(fx,fy,x,y);> fsolve(fx,fy,x,y);

Ở lệnh solve không có trả lời. Còn ở lệnh fsolve, Maple trả lời bằng cách xuất ra lại câuhỏi... Chúng ta sẽ giải quyết bằng cách dùng lệnh fsolve kèm thêm khoảng cách ly nghiệm.Và để có khoảng cách ly nghiệm phải dùng đến đồ thị để ước lượng các điểm dừng:

Trước tiên, dùng lệnh contourplot3d để vẽ các đường đồng mức. Đây là đường nốinhững điểm có dùng giá trị z = f(x, y) [2]. Ở đây chúng ta chọn 24 đường là đủ để thấy nhữngđỉnh (cực đại) và những vực (cực tiểu) của hàm. Chọn orientation=[0,180] để áp hình vẽxuống mặt phẳng như tờ giấy:

> C1:=contourplot3d(f(x,y),x=-3..3,y=-3.2..3.0,

contours=24,grid=[80,80]):

> display(C1,axes=normal,orientation=[-85,85]); [Hinh 3.2 (a)]> display(C1,axes=normal,orientation=[0,180]); [Hinh 3.2 (b)]

Bây giờ chúng ta nhấp chuột phải vào hình 3.2 (a), giữ nguyên ngón tay lên và xê dịch chuộtđể tìm một cách chính xác nhất tọa độ các đỉnh và các vực. Trong khi xê dịch, chúng ta có thểquan sát kết hợp với hình 3.2 (b). Trên nguyên tắc chúng ta sẽ tìm ra 9 điểm dừng:

3 điểm cực đại : [0, 1.6], [1.2, 0], [0.4,0.6]

3 điểm cực tiểu : [1.4, 0.2], [0.3, 0.3], [0.2,1.6]

2Được dùng nhiều trong lãnh vực khảo sát địa chất và không ảnh. Kỹ thuật này cho thấy rõ sự gồ ghề của tráiđất

Phạm Minh Hoàng 55

Page 72: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

Hình 3.2: Đường đồng mức của hàm f(x, y)

3 điểm yên ngựa : [1.1, 0.8], [0.3, 0.45], [0.4,0.4]

Mục đích của việc "dò tìm" các điểm dừng bằng đồ thị là có được các tọa độ một cách xấpxỉ. Một khi có được, chúng ta có thể dùng fsolve để tính một cách chính xác hơn. Ba điểmcực đại là:

> pM1:=fsolve(fx,fy,x,y,x=-0.1..0.1,y=1..2);pM1 := tx = 0.9317581960e 2, y = 1.581367963u

> pM2:=fsolve(fx,fy,x,y,x=1..1.5,y=-0.1..0.1);pM2 := tx = 1.285684697, y = 0.4847559076e 2u

> pM3:=fsolve(fx,fy,x,y,x=-1..0,y=-1..0);pM3 := tx = .4600245180, y = .6291965087u

Tương tự các điểm cực tiểu và yên ngựa (chỉ lấy mỗi thứ một điểm):> pm1:=fsolve(fx,fy,x,y,x=0.1..0.5,y=-2..-1);

pm1 := tx = .2282789206, y = 1.625534957u> ps1:=fsolve(fx,fy,x,y,x=1..1.3,y=0..1);

ps1 := tx = 1.098272834, y = .8544609795uKiểm chứng: tại các điểm dừng, gradient triệt tiêu. Ta lập một hàm để tính:

> with(linalg):

> gp:=u¡evalf(subs(u,grad(f(x,y),[x,y])),4):> gp(pM1),gp(pM2),gp(pm1),gp(ps1);

[0.00017, 0.01225], [0.006508,0.00005737], [0.00188,0.01905], [0.001773, 0.002335]

Tại các điểm cực đại, ma trận hessian xác định âm, tại các điểm cực tiểu xác định dương,và tại các điểm yên ngựa giá trị riêng đan dấu:

> gh:=u¡eigenvals(evalf(subs(u,hessian(f(x,y),[x,y])),4)):> gh(pM1);

32.49504707,16.27495293

56 Phạm Minh Hoàng

Page 73: Maple Va Cac Bai Toan Ung Dung

3.2. Thí dụ 2

> gh(pm1,gh(ps1);

17.92101729, 30.17898271

10.01781777, 11.15881777

Sau cùng, để có một cái nhìn cụ thể những điểm cực trị đã tính được, chúng ta sẽ nối nhữngđiểm này xuống hình chiếu của nó trong mặt phẳng xOy. Công đoạn này được thực hiện quacác thao tác sau:

Dùng lệnh contourplot để vẽ các đường cùng mức trong mặt phẳng. Do đặc tính củahàm f(x, y), mặt phẳng này sẽ được tịnh tiến để hiển thị ở z = 8 bằng lệnh transform.

Khai báo một hàm s có tác dụng vẽ một hình cầu bán kính 0.10 tại những điểm cực trị.Chọn cực đại màu đỏ, cực tiểu màu xanh, yên ngựa màu đen (lệnh sphere). Hàm s sẽnhận tham số là tọa độ điểm dừng và màu tương ứng.

Khai báo một hàm r có tác dụng vẽ một đường thẳng nối từ các điểm cực trị xuống hìnhchiếu của nó (lệnh line).

Sau cùng, vẽ tất cả trong một đồ thị chung với hàm f(x, y).

> with(plottools):

> C2:=contourplot(

f(x,y),x=-3.5..3.5,y=-3.5..3.5,contours=20,grid=[40,40]):

> s:=(u,c) ¡sphere([eval(x,u),eval(y,u),f(eval(x,u),eval(y,u))],0.10,style=patchnogrid,color=c):

> r:=u¡line([eval(x,u),eval(y,u),-8],[eval(x,u),eval(y,u),f(eval(x,u),eval(y,u))],linestyle=3):

form > t:=transform((x,y)¡[x,y,-8]):> display([Surface,t(C2),s(pM1,red),s(pm1,blue),s(ps1,black),r(pM1),

r(pm1),r(ps1)],orientation=[-170,65],style=wireframe,axes=framed);

3.2 Thí dụ 2

Trong thí dụ này, hệ phương trình f 1x(x, y) = f 1y(x, y) = 0 cho ra lời giải, f(x, y) có nhiềuđiểm dừng và chúng ta sẽ sử dụng đồ thị sẽ cho thấy tính chất của chúng.

> restart:with(plots):

> f:=(x,y)¡xˆ4-3*xˆ2y+3y-yˆ3;

f := (x, y) ÞÑ x4 3x2y + 3y y3

> solve(D[1](f)(x,y),D[2](f)(x,y),x<infinity,x,y): [3]> S:=map(allvalues,%);

S := ttx = 0, y = 1u, tx = 0, y = 1u, tx = ?

32

, y =12u, tx =

?3

2, y =

12uu

Để biết tính chất các điểm dừng, ta khảo sát hai đại lượng:

3option s<infinity trong lệnh solve sẽ loại tất cả các nghiệm phức.

Phạm Minh Hoàng 57

Page 74: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

Hình 3.3: Cực trị hàm nhiều biến và hình chiếu của nó

∆ =B2f

Bx2

B2f

By2( B2f

BxBy)2

và f2xx =B2f

Bx2

Để làm điều này, ta khai báo ha hàm:> Delta:=(x,y)¡D[1,1](f)(x,y)*D[2,2](f)(x,y)-D[1,2](f)(x,y)ˆ2;

∆ := (x, y) ÞÑ ¡ D1,1(f)(x, y)D2,2(f)(x, y)D1,2(f)(x, y)2

> u:=i¡(eval(x,S[i]),eval(y,S[i]));> seq([u(i)],i=1..4);

[0,1], [0, 1], [?

32

,12], [?

32

,12]

Thí dụ tại điểm dừng C

(?3

2,1

2, f

(?3

2,1

2

)=

13

16

), giá trị của ∆ và f2xx là:

> Delta(u(1)),D[1,1](f)(u(1));

45,6

Để dễ nhìn ta đặt kết qu vào một bảng:Điểm / tọa độ ∆ f2xx Kết luậnA(0, 1, 2) 36 6 cực đạiB(0,1,2) 36 6 cực tiểu

C

(?3

2,1

2,13

16

)45 6 yên ngựa

D

(?3

2,1

2,13

16

)45 6 yên ngựa

Với những gì tính toán, ta có tể kết luận ngya về tính chất các điểm dừng. Nhưng với đồ thị3 chiều, Maple cung cấp thêm cho người sử dụng một công cụ thực sự tượng hình.

Trước tiên ta vẽ đồ thị hàm f(x, y):> alias(TK3='thickness=3',AW='axes=framed,style=wireframe'):

> Surface:=plot3d([x,y,f(x,y)],x=-1.5..1.5,y=-1.5..1.5):

Tiếp theo, vẽ các điểm dừng bằng lệnh pointplot3d, nhưng trước đó phải khai báo những

58 Phạm Minh Hoàng

Page 75: Maple Va Cac Bai Toan Ung Dung

3.2. Thí dụ 2

Hình 3.4: Các điểm dừng của f(x, y)

điểm này trong không gian:> Pts:=seq)[u(i),f(u)i))],i=1..4);

[0,1,2], [0, 1, 2],?3

2,12,1316

,

?3

2,12,1316

> Points:=pointplot3d([Pts],symbol=circle,color=black):

> display(Surface,Points,orientation=[131,60]); [Hinh 3.4 (b)]Maple có một lệnh rất hay là spacecurve. Lệnh này vẽ đường cong đi qua các điểm xác

định và ôm theo hình dạng của f(x, y), những hình này sẽ kiểm chứng tính chất của các điểmdừng một cách dễ hiểu nhất:

> CA:=spacecurve([x,1,f(x,1)],x=-1.5..1.5,color=navy,TK3):

> CB:=spacecurve([x,-1,f(x,-1)],x=-1.5..1.5,color=green,TK3):

> CX:=spacecurve([0,y,f(0,y)],y=-1.5..1.5,color=magenta,TK3):

> display(Surface,CA,CB,CX,Points,AW,orientation=[131,60]);

Điểm A(0, 1, 2) cực đại địa phưng theo phương của đường cong màu navy và đườngmagenta.Tách rời các đường và mặt f(x, y) sẽ thấy rõ hơn bản chất của các điểm dừng:

B(0,1,2) cực tiểu địa phưng theo phương của đường cong màu green và đường ma-genta.

> display(CA,CB,CX,Points,axes=frame,orientation=[131,60]);

Tương tự, bây giờ chúng ta quan sát những điểm yên ngựa:[?

3

2,1

2,13

16

]> CC:=spacecurve([sqrt(3)/2,y,f(-sqrt(3)/2,y)],

y=-1.5..1.5,color=navy,TK3):

> CD:=spacecurve([sqrt(3)/2,y,f(-sqrt(3)/2,y)],

y=-1.5..1.5,color=green,TK3):

Phạm Minh Hoàng 59

Page 76: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

Hình 3.5: Điểm cực đại và cực tiểu của f(x, y)

> CX:=spacecurve([x,0.5,f(x,0.5)],x=-1.5..1.5,color=magenta,TK3):

> display(Surface,Points,CA,CB,CX,AW,orientation=[130,60]);

C

[?3

2,1

2,13

16

]cực đại địa phưng theo phương của đường cong màu green và cực tiểu địa

phưng theo phương của đường magenta.

D

[?

3

2,1

2,13

16

]cực đại địa phưng theo phương của đường cong màu navy và cực tiểu

địa phưng theo phương của đường magenta.

Đó chính là tính chất của điểm yên ngựa, và ta còn thấy rõ hơn với hình 3.6 (b)> display(Points,CC,CD,CX,axes=frame,orientation=[125,80]);

3.3 Thí dụ 3

Trong bài này, sau khi tìm các cực trị bằng phương pháp số, chúng ta sẽ dùng phương phápđường dốc nhất (steepest descent[4]) để kiểm chứng.

Nhắc lại: gradient (`

) tại một điểm là véc-tơ chỉ ra phương theo đó hàm số có sự thayđổi lớn nhất (hoặc nhỏ nhất). Chúng ta sẽ dùng véc-tơ này để đi tìm cực đại (hoặc cực tiểu củamột hàm số). Nếu cho hàm g(x, y), gọi P (xk, yk) là một điểm bất kỳ, ta cho P di chuyển theophương gradient để đến P (xk+1, yk+1). Nếu điểm này là mọt cực trị, thì gradient tại đây triệttiêu. Và để biết giá trị này, ta sẽ tính chuẩn 2, nếu nhỏ hơn một giá trị e nhỏ, thì coi như là tìmra kết quả:

Nếu ` Pk2 ¡ e, tính Pk+1 = Pk + λ`

Pk

4Xin xem môn tối ưu hóa hàm nhiều biến bằng phương pháp số.

60 Phạm Minh Hoàng

Page 77: Maple Va Cac Bai Toan Ung Dung

3.3. Thí dụ 3

Hình 3.6: Điểm yên ngựa của hàm f(x, y)

Nếu ` Pk2 e, ngừng thật toán.(3.3.1)

Trước tiên chúng ta khởi dọng lại bài và nhập các thư mục cần thiết. Một lưu ý là trong thídụ này chúng ta khai báo hàm g(x, y) dưới dạng mệnh đề, các thao tác cũng phải thay đổi theo.

> restart:with(plots):with(linalg):

> g := x*exp(-(x-1)ˆ2-(y+1/4)ˆ2)+y*exp(-xˆ2-yˆ2)+3

> Surf:=plot3d([x, y, g],x=-2..3.5,y= -2.5..2, grid=[30,30],

labels=[x,y,z],axes=framed,tickmarks=[3,3,3]):

> display(Surf):

Vẽ các đường đồng mức và véc-tơ gradient chung trong một đồ thị để thấy một tính chấtquan trọng là véc-tơ gradient tại một điểm luôn thẳng góc với đường đồng mức đi qua điểm đó:

> CDT:=contourplot(g,x=-2..4,y=-2.5..3,contours=20,grid=[40,40]):

> GPL:=gradplot(g,x=-2..4,y=-2.5..3,grid=[15,15],thickness=3):

> display([CDT,GPL]);

> display(CDT,GPL,Surf,axes=frame,orientation=[125,80])Quan sát hình 3.7 ta có thể đoán được hàm số cực đại trong khoảng (1.4,-0.3) và cực tiểu

trong khoảng (-0.2,-0.7). Ta dùng các kết quả này để tìm tọa độ cực trị bằng phương pháp số(vì không có lời giải giải tích):

> gx:=diff(g,x):gy:=diff(g,y):

> xy max:=fsolve(gx,gy,x,y,x=0..1.4,y=-.3..0);xy maxtx = 1.391235485, y = 0.1961444222u (3.3.2)

Kiểm chứng: tại điểm này, gx và gy :> evalf(subs(xy max,[gx,gy]));

[2.9 e10,1 1010]

Bây giờ ta viết một đoạn mã nhỏ để thực hiện thuật toán 3.1:

Phạm Minh Hoàng 61

Page 78: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

Hình 3.7: Đồ thị gradient, đường đồng mức và chuyển động của Pk

> gradient:=(a,b)¡subs(x=a,y=b,[gx,gy]):> v:=[-2,.5]:w:=v:

> for i from 1 to 1000 do

p:=evalf(gradient(v[1],v[2])):

if norm(p,2)<10ˆ(-7) then break (3.3.3)

else v:=v+.3*p:

fi:

w:=w,v;

od:

Theo thuật toán (3.3) thì P0 = [2, 0.5] là điểm khởi đầu. λ = 0.3, e = 107, số vòng lặptối đa 1000. Những dữ kiện này đều có thể thay đổi bất cứ lúc nào [5].

Kết quả là biến w, dãy các tọa độ của Pk. Ta có thể kiểm chứng so với (3.2):> w[-1];

[1.391235479,.1961444047]

Hoặc hiển thị chuyển động củaPk trongmặt phẳng dưới dạng tĩnh hoặc động để thấy chuyểnđộng rất nhanh quanh điểm cực đại:

> pointplot([w],color=black,symbolsize=25);[Hình 3.7 (b)]]> seq(poinplot([seq(w[n],n=1..k)]),k=1..nops([w]));

> display(%,insequence=true); (không hiển thị)> f:=unapply(g,x,y);

> st:=pointplot3d([seq([w[i,1],w[i,2],

evalf(f(w[i,1],w[i,2]))],i=1..nops([w]))],connect=true,

thickness=3,axes=boxed,color=red,orientation=[-160,60]);

> display(%); [Hình 3.8 (a)]5Dĩ nhiên cách hay nhất vẫn là viết một chương trình con

62 Phạm Minh Hoàng

Page 79: Maple Va Cac Bai Toan Ung Dung

3.4. Thí dụ 4

Hình 3.8: Chuyển động Pk trong không gian

Ráp đường đi của Pk vào chung với đồ thị g(x, y):> display([Surf,st],style=hidden,color=navy,

axes=framed,orientation=[-163,69]); [Hình 3.8 (b)]Tuy nhiên ấn tượng nhất là hiển thị bằng hình động:

> anim:=seq(diplay([Surf,pointplot3d(

[seq([w[i,1],w[i,2],evalf(f(w[i,1],w[i,2]))],i=1..k)],

color=red,thickness=3,connect=true)]),k=1..nops([w]));

> display(anim,orientation=[-163,69],lightmodel=light2,

style=hidden,insequence=true);

Bây giờ nếu cho P0 = [0.5, 0.7], λ = 0.3, Pk sẽ đi xuống. [6]

3.4 Thí dụ 4

Trong bài này, chúng ta sẽ dùng phương pháp nhân tử Lagrange để tối ưu hóa một hàm haibiến sau đó biểu diễn phương pháp này dưới dạng hình học.

Bài toán của chúng ta như sau:

Tối ưu hóa hàm f(x, y) = x3 + xy + 2y3

Dưới ràng buộc g(x, y) =1

4(x 9)2 +

1

9(y 7)2 1 = 0

> restart:with(plots):with(plottools):with(linalg):

> f:=(x,y)¡xˆ3+x*y+2*yˆ3;

> g:=(x,y)¡(1/4)*(x-9)ˆ2+(1/9)*(y-7)ˆ2-1;

6Việc chọn lựa giá trị đầu rất quan trọng vì nó quyết định đường đi củaPk. Ở đây nếu chọn P0 = [0.5, 0.8], Pk

sẽ rất đi xa.

Phạm Minh Hoàng 63

Page 80: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

Trước tiên chúng ta có hai nhận xét:

Không thể dùng phương pháp tách biến vì biểu thức phi tuyến của f(x, y). Lệnh Maplesau cho ta 2 trang kết quả cực kỳ phức tạp:

> solve(f(x,y),x);

Vì thế Lagrange là phương pháp giải tích độc nhất để giải bài toán này.

Ràng buộc g(x, y) = 0 có đồ thị là một ellips; điều này có nghĩa là phải đi tìm các cực trịcủa f khi (x, y) chạy trên ellips g(x, y). Để thấy rõ ý nghĩa hình học của bài toán, chúngta vẽ đồ thị g(x, y) dưới dạng tham số.

Nhắc lại, ellips phương trình(

x h

a

)2

+

(x k

b

)2

= 1 có phương trình tham số:"x = a cos(t) + hy = b sin(t) + k

Trong các lệnh dưới đây, Surf,El 2 là đồ thị f(x, y) và hình chiếu g(x, y) trong mặt phẳngxOy, El 3 là hình chiếu g(x, y) lên đồ thị f(x, y), L là 18 đường thẳng nối giữa El 2 và El 3:

> Surf:=plot3d([x,y,f(x,y)],x=-5..12,y=-5..12):

> El 2:=spacecurve([2*cos(t)+9,3*sin(t)+7,0],t=0..2*Pi);

> El 3:=spacecurve([2*cos(t)+9,3*sin(t)+7,f(2*cos(t)+9,3*sin(t)+7)],

t=0..2*Pi,color=navy,thickness=2):

> n:=18:

> L:=seq(spacecurve([[2*cos(k*Pi/n)+9,3*sin(k*Pi/n)+7,0],

[2*cos(k*Pi/n)+9,3*sin(k*Pi/n)+7,f(2*cos(k*Pi/n)+9,3*sin(k*Pi/n)+7)]],

color=navy),k=0..2*n):

> display(

Surf,El 2,El 3,L,axes=framed,style=patchnogrid,orientation=[22,76]);

Hình 3.9 (a).Dưới dạng đồng mức:

> display(

Surf,El 2,El 3,L,axes=framed,style=contour,contours=18,orientation=[-171,70]);

Hình 3.9 (b).Đường biểu diễn trong mặt phẳng:

> Contours 2d:=contourplot(f(x,y),x=-5..12,y=-5..12,filled=true,

contours=18,coloring=[white,navy]);

> El 2d:=plot([2*cos(t)+9,3*sin(t)+7,t=0..2*Pi],color=green);

> display(Contours 2d,El 2d,tickmarks=[3,3]); [Hình 3.10 (a)].Quan sát hình 3.9 (b) và 3.10 (a), chúng ta thấy ở điểm f đạt cực trị khi các đường đồng

mức tiếp xúc với ellips của ràng buộc. Điều này có nghĩa là f và g cùng tếp tuyến. Mặt khácchúng ta cũng biết, gradient tại một điểm luôn thẳng góc với đường đồngmức, có nghĩa là véc-tơgradient của f và g tại mỗi tiếp điểm sẽ cùng phươnbg. Nói khác đi, ở các điểm cực trị ta có:`

f(x, y) = λ`

g(x, y)

64 Phạm Minh Hoàng

Page 81: Maple Va Cac Bai Toan Ung Dung

3.4. Thí dụ 4

Hình 3.9: Biểu diễn tham số của hàm ràng buộc g(x, y) trên f(x, y)

`F (x, y) = 0 với F (x, y) = f(x, y) = λg(x, y)

Dấu của λ không quan trọng, để tiện lợi ta chọn F (x, y) = f(x, y) + λg(x, y).> F:=(x,y)¡f(x,y)+lambda*g(x,y);

Các điểm cực trị thỏa`

F (x, y) = 0:> grF:=grad(F(x,y),[x,y]);

grF := [3x3 + y + λ(x

2 9

2), x + 6y2 + λ(

2y

9 14

9)]

> EnvExplicit:=true;[7].> Sol:=solve(grF[1],grF[2],f(x,y),g(x,y),x,y,lambda);[8]> s:=map(evalf,Sol); (3.4.1)

> nops(s);

6

Hệ`

F (x, y) = 0 có tất cả 6 nghiệm trong đó chỉ có hai nghiệm thực. Ta loại nghiệm phứcvà chỉ lấy 4 số lẻ. Tọa độ của hai điểm cực trị là:

> sr:=remove(has,s,I);

> [eval(x,sr[1]),eval(y,sr[1])]: P:=map(evalf[4],%);

> [eval(x,sr[1]),eval(y,sr[1])]: P:=map(evalf[4],%);

P := [7.697, 4.724], Q := [9.615, 9.855] (3.4.2)

Có được hai điểm cực trị, ta có thể vẽ đường đòng mức tiếp xúc với g(x, y)

> [eval(x,sr[2]),eval(y,sr[2])]: Q:=map(evalf[4],%);

> C 2d:=contourplot(f(x,y),x=0..15,y=0..15,

contours[f(P[1],P[2]),f(Q[1],Q[2])],thickness=3);

7Options EnvExplicit dùng để xuất tất cả các lời giải dưới dạng tường minh. Ở đây nếu không bằngtrue lời giải sẽ thiếu

8Hai dấu ngoặc nhọn ngoài cùng rất quan trọng, nó tránh sự lặp lại của các nghiệm

Phạm Minh Hoàng 65

Page 82: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

> Point P:=textplot([P[1]+.4,P[2]+.7,'P']):

> Point Q:=textplot([Q[1]-.1,Q[2]-.5,'Q']):

> display(C 2d,El 2d,Point P,Point Q,scaling=constrained):

(không hiển thị)Tại P vàQ các véc-tơ gradient thẳng góc với tiếp tuyến chung của f và g. Để vẽ các véc-tơ

này ta phải xác đnhj được các phần của chúng bằng cách thế các tọa độ P, Q vào`

f(x, y):> gf:=grad(f(x,y),[x,y]);

gf := [3x2 + y, x + 6y2]

> vgP:=subs(sr[1],eval(gf)); (3.4.3)

vgP := [182.4486749, 141.6080201]

> vgQ:=subs(sr[2],eval(gf));

[287.2113132, 592.2871979]

Vậy véc-tơ gradient có tọa độ ở hai đầu là:`P =

!7.697, 4.724182.4486, 141.6080

`Q =

!9.615, 9.855287.2113, 592.2871

Để dễ nhìn ta thu ngắn dọ dài của hai véc-tơ bằng cách chia cjho hai hệ số (50 và 150) cũngnhư đảo chiều của véc-tơ tại P .

> VGrad1:=arrow(

[P[1],P[2]],[P[1]-vgP[1]/50,P[2]-vgP[2]/50],.2,.5,.2,color=blue):

> VGrad2:=arrow(

[Q[1],Q[2]],[Q[1]+vgQ[1]/150,Q[2]+vgQ[2]/150],.2,.5,.2,color=blue):(3.4.4)

Để kiểm chứng tính chất hình học của véc-tơ gradient, ta sẽ chung với các tiếp tuyến tại Pvà Q. Tiếp tuyến tại điểm A(xA, yA) của một hàm ẩn u(x, y) là:

y yA = BuBx(xA, yA)

BuBy (xA, yA)

(x xA)

> tg:=(a,b,u)¡y-b=-D[1](u)(a,b)/D[2](u)(a,b)*(x-a);Đồ thị tiếp tuyến tại P của f(x, y) và tiếp tuyến tại Q của g(x, y):

> t1:=implicitplot(tg(P[1],P[2],f),x=0..12,y=0..10):

> t2:=implicitplot(tg(Q[1],Q[2],g),x=0..15,y=0..15):

Và cuối cùng, ta vẽ tất cả chung trong một đồ thị:> display(C 2d,El 2d,Point P,Point Q,VGrad2,t1,t2,

scaling=constrained,tickmarks=[3,3]);[Hình 3.10 (b)]Các trị số cực đại (Q) và cực tiều (P ) của f(x, y) trên g(x, y) là:

> map(evalf[7],[f(P[1],P[2]),f(Q[1],Q[2])]);

[703.2035, 2897.901]

Lưu ý quan trọng: lệnh solve trong (3.4) cho thứ tự các nghiệm rất ngẫu nhiên, vì thếchúng ta có thể thu được tọa đọ P,Q ngược với kết quả ở (3.5). Trong trường hợp đó cần thiếtphải sắp xếp lại các tọa độ tại các câu lệnh (3.6) và (3.7) để có cùng một đồ thị như hình 3.10(b).

66 Phạm Minh Hoàng

Page 83: Maple Va Cac Bai Toan Ung Dung

3.5. Bài đọc thêm: Euclide

Hình 3.10: (a) Đường đồng mức và ellips 2D, (b) Véc-tơ gradient tại điểm cực trị

3.5 Bài đọc thêm: Euclide

Euclide(330 - 275 trước Công Nguyên)

Euclide sống vào thế kỷ thứ 3 trước côngnguyên, khi nền Toán học Hy Lạp cổ đại đạttới đỉnh cao. Tác phẩm cơ bản của ông là bộÉléments- Những nguyên tắc cơ bản có thể nóilà tổng hợp tri thức của loài người về Hình họcMétrique và Lý thuyết Số ở thời cổ đại. Bộ Élé-ments gồm 13 tập trong đó có các tri thức củacác bậc tiền nhân được Euclide soạn lại mộtcách khoa học và rất nhiều phần là sản phẩmcủa bộ óc sáng tạo, thông minh tuyệt vời củaông. Từ xưa đến nay, có lẽ trên thế giới chưacó một bộ sách nào đã được dịch và tái bản đếnhàng ngàn lần như bộ Éléments của Euclide.

Thiên tài của Euclide thể hiện ở chỗ ôngsắp đặt các mệnh đề Toán học theo một trật tựrất khoa học, ông tập trung ý tưởng vào nhữngvấn đề Toán học, không dây dưa đến tôn giáohuyền bí như hầu hết các nhà khoa học đươngthời. Nhờ các phát biểu toán học gãy gọn, vàcác chứng minh chặt chẽ của Euclide, nhữngnhà khoa học thuộc thế hệ sau đã thừa hưởnggia tài trí tuệ của ông để đi tìm những kết quả

mới.Bốn tập đầu của bộ Éléments dành cho

Hình học. Trong tập 1, Euclide đưa ra nhữngkhái niệm nguyên thuỷ như điểm, đường thẳng,mặt, vòng tròn, sự song song, trong đó có địnhđề đầu tiên về Hình học: qua hai điểm có mộtvà chỉ một đường thẳng đi qua. Từ những kháiniệm ban đầu ấy Euclide đã suy diễn ra nhiềukết quả về góc, về tam giác cân, tam giác đều,và ông đã chứng minh định lý Pythagore (Eu-clide ra đời sau Pythagore 239 năm). Trong tập2, Euclide đã dùng Hình học để chứng minhmột số kết quả của trường phái Pythagore màngày nay ta quen gọi là Đại số. Ví dụ (a+b)2 =a2 + 2ab + b2.... Tích ab theo Euclide là diệntích hình chữ nhật mà chiều dài các cạnh là avà b.

Trong tập 7 ông đưa ra một thuật toán màngười đời sai gọi là thuật toán Euclide, dùng đểchứng tỏ hai số là nguyên tố cùng nhau. Trongtập 8 có định lý về phân tích một số nguyên rathừa số nguyên tố, cách tính tổng các số hạng

Phạm Minh Hoàng 67

Page 84: Maple Va Cac Bai Toan Ung Dung

Chương 3. Đồ thị ba chiều

của một cấp số nhân. Tập 9 có 36 mệnh đềnhưng nổi bật nhất vẫn là mệnh đề số 36 vì ởmệnh đề này ông chứng tỏ rằng một số có dạng2n1(2n1) là số hoàn hảo[9] nếu như (2n1)là số nguyên tố.

Ngày nay người ta biết được rằng số hoànhảo là số chẵn có dạng như Euclide đã tìm ra.Còn số hoàn hảo nào là số lẻ không thì đến nayvẫn chưa ai tìm ra. Ngay nhà Toán học vĩ đạicủa thế kỷ 18 (và có lẽ của mọi thế kỷ) là Eu-ler cũng chỉ chứng minh rằng mọi số hoàn hảo

chẵn đều có dạng như Euclide đã tìm ra.Ngoài ra, ông còn dùng Toán để nghiên

cứu Thiên văn, kết quả này được trình bàytrong Phaenomena. Euclide cũng có nhữngnghiên cứu về Quang học, và cả về âm nhạcnhưng đã bị thất lạc.

Những tác phẩm của Euclide rất cơ bản, cógiá trị không phải chỉ vì nội dung khoa học màcòn giá trị với hậu thế vì phương pháp nghiêncứu nữa.

9Số hoàn hảo là số bằng tổng các ước số của nó. Thí dụ 28 = 1+2+4+7+14

68 Phạm Minh Hoàng

Page 85: Maple Va Cac Bai Toan Ung Dung

Chương4

Hình học giải tích

Ở cấp trung học, hình học thuần túy đòi hỏi học sinh trí tưởng tượng và óc nhạy bén để"đoán ra" lời giải trước khi đi tìm chứng minh. Điều này chỉ có thể làm được nếu bài toán đơngiản. Trên đại học (thậm chí ở các năm cuối trung học), hình học giải tích đưa tất cả về cácphương trình trước khi lý luận. Việc này hệ thống hóa vấn đề đồng thời cho phép giải quyếtnhững bài toán cực kỳ phức tạp mà không cần phải tưởng tượng như trước. Lấy một thí dụ đơngiản là bài toán quỹ tích, một môn học "khó nuốt" nhất. Hình học giải tích giúp ta tìm ra tọa độcủa điểm muốn tìm. Một khi biết được tọa đô, xác định và vẽ quỹ tích rất đơn giản: Đường biểudiễn tham số.

Maple là một công cụ hầu như lý tưởng để giải các vấn đề nêu trên. Mặt khác, nến nắmvững các nguyên tắc tạo hình động, các bài toán quỹ tích sẽ đem đến cho chúng ta rất nhiều lýthú qua khía cạnh sinh động của lời giải.[1]

Trước tiên, chúng ta bắt đầu với một thí dụ đơn giản.

4.1 Tìm và vẽ tiếp tuyến chung của hai vòng tròn

Để đơn giản vấn đề, ta giả sử rằng tâm hai vòng đều nằm trên trục Ox, một vòng có tâmnằm tại gốc tọa độ. Gọi A là vòng tròn tâm A(0, 0), bán kính a; B là vòng tròn tâm B(e, 0), bánkính b, (a b) và X(x, 0) là giao điểm của tiếp tuyến và trục Ox. Ta được:

- Nếu x e, trường hợp tiếp tuyến chéo, ta cóx

e x=

a

b

- Nếu x ¡ e, trường hợp tiếp tuyến cùng phía trục hoành, ta cóx

x e=

a

b

Ở đây ta chỉ tìm một tiếp tuyến chéo, các tiếp tuyến khác được suy ra dễ dàng.> x/(e-x)=a/b;

x

e x=

a

b

Giải phương trình theo x, và gán kết quả cho một hàm. Hàm này sẽ tính hoành độ của Xtheo a, b, e:

> u:=unapply(solve(%,x),a(a,b,e));

1Xin xem trước phần Xử lý hình động của chương 12, trang 219

Page 86: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

u := (a, b, e) Ñ ea

a + b

.

.y

.A.B

.H

.J

.K

.X

Hình 4.1:

Đường tiếp tuyến chéo (P ) cắt trục hoành tạiX(x, 0) có phương trình: y = kxku(a, b, e).Ta dùng lệnh line trong gói geometry để định nghĩa (P ):

> with(geometry):line(P,y=k*x-k*u(a,b,e);[x,y]):

Khoảng cách từA(0, 0) đến (P ) bằng bán kính a. Giải phương trình PA = a ta sẽ tìm đượck:

> point(A,0,0):distance(A,P)=a;k ea

b + a

1?k2 + 1

= a(4.1.1)

> vk:=solve(%,k);

Maple không giải được, lý do là trong biểu thức (4.1), k nằm trong trị tuyệt đối và trongcăn. Để đưa k ra ngoài giá trị tuyệt đối, ta giả sử k ¡ 0:

> assume(k>0):

Lệnh solve sẽ cho ra hai lời giải tương ứng với hai tiếp tuyến chéo. Ở đây ta chọn nghiệmdương. Và khi mọi biến đều hình thức, cách duy nhất là dùng sign.

> vk:=solve(%%,k): op(select(i¡sign(i)>0,[%]));da2 +

ea

b + a

2 a

a2 ea

b + a

2Biểu thức trên tính hệ số k theo a, b, e ta gán vào một hàm số:

> p1:=unapply(%,(a,b,e)):

Áp dụng: Đặt a = 10, b = 7, e = 30 ta được:Phương trình tiếp tuyến và hoành độ của K:

> et:=simplify(p1(10,7,30)*x-p1(10,7,30)*u(10,7,30));

et := 17611

?611x +

300611

?611

> solve(et):5=evalf(%,4);

xK :=30017

= 17.65

70 Phạm Minh Hoàng

Page 87: Maple Va Cac Bai Toan Ung Dung

4.2. Diện tích phần giao của hai vòng tròn

4.2 Diện tích phần giao của hai vòng tròn

Trong hệ tọa độ xOy, cho vòng tròn (C1) tâm O, bán kính R và (C2) bán kính r vàcó tâm D ở tọa độ [R, 0].Tính r sao cho diện tích phần giao của 2 vòng tròn bằng một nửa diện tích của (C1).

Với những điểm xác định như trong hình 4.2 ta được:

..O .C.D

.x

.A

.B

.(C2)

.y

.(C1)

..U

Hình 4.2:

Diện tích muốn tìm bằng hai lần tổng diện tích của CUA và UDA.

Diện tích của CUA bằng tích phần hàm số của (C2) từ C đến U .

Diện tích của UDA bằng tích phân hàm số của (C1) từ U đến D.

> p:=xˆ2+yˆ2=Rˆ2, q:=(x-R)ˆ2+yˆ2=rˆ2;

> isolate(p,yˆ2);isolate(q,yˆ2);"p := x2 + y2 = R2

q := (xR)2 + y2 = r2

"y2 = R2 x2

y2 = r2 (xR)2

Hoành độ của U là:> u:solve(rhs(%)=rhs(%%),x);

u :=12r2 + 2R2

R

Và hàm số của (C1) và (C2) là:> s1:=sqrt(rhs(isolate(p,yˆ2)));s2:=sqrt(rhs(isolate(q,yˆ2)));"

s1 :=?

R2 x2

s2 :=?

r2 x2 + 2xRR2

Và diện tích của phần giao là: (hãy kiên nhẫn!)> 2*(int(s2,x=R-r..u)+int(s1,x=u..R)):

Kết quả không in ra đây vì quá phức tạp và vì Maple không tìm ra được giới hạn của biểuthức sau (xem ra rất đơn giản!):

Phạm Minh Hoàng 71

Page 88: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

lim(rÑ2R) arctan(cr2(4R2 r2)

R2

4R2 r2

)Chúng ta lưu ý rằng khi r = 2R đại lượng trên có dạng vô định, và phần giao chính là (C1).

Điều này dĩ nhiên phải loại trừ. Bây giờ ta giả sử r 2R:> assume(r<2*R):S:=2*(int(s2,x=R-r..u)+int(s1,x=u..R));

Kết quả của S là một biểu thức khổng lò nên không tiện in ra đây. Mặt khác đi tìm lời giảir = f(R) với một biểu thức phức tạp như thế này thì chắc chắn Maple phải đầu hàng. Ta phảigiúp một tay bằng cách đặt r = kR(k P R ):

> S:=subs(r=k*R,%);

S :=14k2R

(%1 4 arcsin(

12

c1

k2R2k2R)R + 2kR2

c1

k2R2π

)1

4R

(2R4

?R2π +%1k2R2 2%1R2 + 4R3 arcsin

(12

?R2(k2R2 2R2)

R

))% =

ak2(4R2 + k2R2)

Biểu thức trên thoạt trông cũng "kinh dị" không kém. Nhưng quả thực là nó đã đơn giản đirất nhiều vì đã mất biến r. Bằng chứng:

> S:=simplify(%,sqrt,symbolic);

S :=12R2

( 2k2 arcsin(

12k) + k2π + π k

?4 k2 + 2 arcsin(1 +

12k2))

Vì diện tích phần giao phải bằng nửa diện tích của (C1) nên ta cũng đi tìm lời giải của k

trong phương trình S =1

2πR2( vì R 0 ta đơn giản cho R2):

> simplify((S-Pi*Rˆ2/2/Rˆ2));

2k2 arcsin(12k) +

12

2

π 12k?

4 k2 + arcsin(1 +12k2)

Và cuối cùng ta được:> fsolve(%,k);

1.158728473

Chúng ta vừa giải một bài toán có ý nghĩa cụ thể như sau:∼∼∼∼∼∼∼∼∼

Một người nông dân có một cánh đồng cỏ hình tròn bán kínhR = 100mét.Ông ta cột một con bò vào một cái cọc cắm trên mép đồng. Hãy tính chiềudài đoạn dây sao cho con bò chỉ có thể ăn được đúng một nửa cánh đồng.Câu trả lời (gần đúng) là 115.87 mét.

[2]

2Chủ đề trích từ [7]

72 Phạm Minh Hoàng

Page 89: Maple Va Cac Bai Toan Ung Dung

4.3. Quỹ tích 1

4.3 Quỹ tích 1

Cho một hypperbol vuông (H), gọi P (a) là tiếp tuyến của (H) tại a, và Q(a) làđường thẳng qua gốc tọa độ và thẳng góc với tiếp tuyến P (a) tại M . Tìm quỹ tíchcủa M khi a chạy trên (H).

Gọi f(x), p(a), q(a) lần lượt là phương trình của (H), P (a) và Q(a). Ta có:> f:=x¡1/x;with(plots):

f := x ÞÑ 1x

> p:=a¡y-f(a)=D(f)(a)*(x-a);p := a ÞÑ y f(a) = D(f)(a)(x a)

> q:=a¡y+x/D(f)(a);q := a ÞÑ y +

x

D(f)(a)

Để tính tọa độ của M , giải hệ p(a), q(a) và gán kết quả vào hai biến xm, ym:> s:=solve(p(a),q(a),x,y);

s :="

x = 2a

a4 + 1, y = 2

a3

a4 + 1

*> xm:=unapply(rhs(op(select(has,s,x))),a);

> ym:=unapply(rhs(op(select(has,s,y))),a);

Để vẽ hình tĩnh, ta chọn a = 2. Riêng hình động quỹ tích, ta cho a chạy từ 0 đến 2, nghĩalà quét hết (H). Sau khi xác định được tọa độ của M theo a, cách vẽ đơn giản nhất là tham số.Các lệnh sau vẽ hình tĩnh (hình 4.3) và động của M .

> h1:=plot([xm(a),ym(a),a=0..2*Pi]):

> h2:=implicitplot(p(2),q(2),x*y=1,x=0..4,y=0..3):> display(h1,h2,scaling=constrained);

> g1:=t¡plot([xm(a),ym(a),a=0..2*t]):> g2:=t¡implicitplot(p(t),q(t),x*y=1,x=0..4,y=0..3):> seq(display([g1(t/8),g2(t/8)]),t=1..trunc(15*Pi)):

Phạm Minh Hoàng 73

Page 90: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

Hình 4.3:

> display(%,insequence=true,scaling=constrained);

Quỹ tích củaM được gọi là lá Descartes. Chiếc lá thứ hai tương đương với nhánh hyperbolthứ hai và khi a P [2π; 0].

Diện tích của một chiếc lá là:1

2

2π»0

x(t)BBty(t) y(t)

BBtx(t)dt

> int(xm(a)*D(ym)(a)-ym(a)*D(xm)(a),a=0..2*Pi)/2;

16π4

1 + 16π4

4.4 Quỹ tích 2

Trong hệ tọa độ trực chuẩn Oxy cho hai điểm A[0, 0], B[1, 0]. Gọi M là một điểmchạy trên đường tròn tâm A bán kính AB = 1. Tìm quỹ tích của C là tâm vòng trònnội tiếp tam giác ABM .

Gọi C là giao điểm của các đường phân giác trong tam giác ABM . Muốn tìm quỹ tích củaC ta áp dụng một phương pháp "vô song" của Maple:

Khai báo điểm M dưới dạng tham số.

Viết phương trình 2 đường phân giác của tam giácABM và tìm giao điểmC của hai phângiác này.

Sau cùng vẽ đồ thị hàm số tham số.

Nhắc lại: Phương trình chính tắc của đường thẳng có dạng ax + by + c = 0, và phươngtrình đường phân giác của hai đường thẳng chính tắc là:

a1x + b1y + c1aa2

1 + b21

+a2x + b2y + c2a

a22 + b2

2

= 0

74 Phạm Minh Hoàng

Page 91: Maple Va Cac Bai Toan Ung Dung

4.4. Quỹ tích 2

. .x

.y

.B.A

.M2

.M1

.C1

.C2

Hình 4.4:

Khai báo hàm có tên bs áp dụng công thức trên (hàm sẽ nhận 6 tham số):> bs:=(a1,b1,c1,a2,b2,c2)¡

(a1*x+b1*y+c1)/sqrt(a1ˆ2+b1ˆ2)+(a2*x+b2*y+c2)/sqrt(a2ˆ2+b2ˆ2)=0:

Khai báo A, B, M . Vì vòng tròn bán kính 1 nên M có tọa độ [cos(u), sin(u)]:> with(plots):with(geometry):

> point(A,0,0):point(B,1,0): point(M,cos(u),sin(u)):

Để khai báo phương trình các đường thẳng AB, BM,AM , ta dùng các hàm trong gói ge-ometry và trước tiên phải ấp đặt điều kiện cho u. Đây là môt trong vô số các trở ngại của góinày mà chúng ta sẽ đề cập ở các phần tới:

> assume(-cos(u)<>0,sin(u)<>0):

> EnvHorizontalName:= x: EnvVerticalName:=y:

> line(AM,[A,M]):pAM:=unapply((Equation(AM)),u);

pAM := u ÞÑ x sin(u) + y cos(u) = 0[3]> line(BM,[B,M]:pBM:=unapply((Equation(BM)),u);

pBM := u ÞÑ x sin(u) + y(1 + cos(u)) + sin(u) = 0

Đường phân giác củaAMB - ta gán phương trình vào hàm f1:> bs(-sin(u),cos(u),0,-sin(u),cos(u)-1,sin(u));

x sin(u) + y cos(u)a(sin(u))2 + (cos(u))2

+x sin(u) + y(1 + cos(u)) + sin(u)a

(sin(u))2 + (1 + cos(u))2= 0[4]

> f1:=unapply(%,u):

Đường phân giác củaAMB - ta gán phương trình vào hàm f2:> simplify(bs(0,1,0,-sin(u),cos(u),0),symoblic);

y x sin(u) + y cos(u) = 0

3Để dễ xem, ta bỏ dấu sau biến u bằng cách chỉnh Options/Assume Variable/No Annotation4Maple không tự động đơn giản

asin(u)2 + cos(u)2, và chúng ta cũng không nên đơn giản vì kết quả còn phức

tạp hơn

Phạm Minh Hoàng 75

Page 92: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

> f2:=unapply(%,u):

Đồ thị của tam giác và hai phân giác tương ứng với u =4π

15[hình 4.5 (a)]

> implicitplot(f1(4*Pi/15),f2(4*Pi/15),pAM(4*Pi/15),pBM(4*Pi/15),x=0..1,y=0..1);

Để tìm quỹ tích của C có thể giải phương trình f1(u), f2(u) theo y rồi sau đó tìm x.> solve(f1(u)=f2(u),y);

> vX:=simplify(solve(subs(y=%,f2(u)),x),symbolic):

> vY:=simplify(solve(subs(x=%,f2(u)),y),symbolic):

Tuy nhiên chúng ta có thể giải hệ phương trình f1(u), f2(u) để tìm (x, y) cùng một lúc.Trong trường hợp này đừng quên dấu ngoặc nhọn ở lệnh solve[5]

> s:=solve(f1(u)=f2(u),x,y);

s :="

x =1 + cos(u)a

2 2 cos(u) + 2, y =

sin(u)a2 2 cos(u) + 2

*Sau cùng, trích ra các giá trị của x, y và vẽ quỹ tích bằng đường tham số:

> X:=eval(x,s):Y:=eval(y,s):

> plot([X,Y,u=0..2*Pi]);

Và để tạo hình động:> tr:=u¡implicitplot(f1(u),f2(u),pAM(u),pBM(u),xˆ2+yˆ2=1,

x=-1..1,y=-1..1):

> qt:=i¡plot([X,Y,u=0..i],color=red):> s:=seq(display([tr(i/5),qt(i/5)]),i=0.01..evalf(10*Pi)):

> display(%,insequence=true,scaling=constrained);

> display([tr(7*Pi/5),qt(7*Pi/5)],scaling=constrained);[Hình 4.5 (c)]Quan sát chuyển động (trên màn hình) ta có những nhận xét sau:

1. Các đường phân giác không chỉ nằm trong tam giác mà còn kéo dài ra ngoài, điều này làmta "rối mắt" khi hình chuyển động. Đây là "cái giá phải trả" khi ta dùng implicitplotđể đơn giản cách vẽ đồ thị hình 4:5(b). Để xử lý ta phải tách y ra khỏi biểu thức củaf1, f2, gán kết quả vào một hàm và dùng plot để vẽ đường thẳng kiểu polygonal.

2. Các lệnh line, Equation rất tiện lợi để tính phương trình của các đường thẳng, nhưngMaplebắt buộc phải đặt các điều kiện ban đầu cho góc u(bằng assume). Việc này tạo ra một trởngại vô cùng lớn là các thao tác trên u bị giới hạn, đặc biệt là ta không thể dùng u trongcác lệnh piecewise

3. f1(u) không xác định khi u = 0. Để tránh trị này cách hay nhất là dùng piecewise.Điều này không được vì lý do 2. Ta bắt buộc phải khởi động từ một góc u 0. Đó là lýdo của giá trị 0.01 trong biểu thức của s.

5Tùy vào phiên bản của Maple, thao tác này đôi khi đòi hỏi thêm lệnh allvalues để có dạng tường minh.

76 Phạm Minh Hoàng

Page 93: Maple Va Cac Bai Toan Ung Dung

4.5. Quỹ tích 3

Hình 4.5:

4.5 Quỹ tích 3

Trong tọa độ trực chuẩn Oxy cho hai điểm A[0, 0], B[1, 0] gọi M là điểm chạy trênvòng tròn tâm A bán kính AB. Tìm quỹ tích trực tâm H của tam giác ABC.

Cách giải thứ nhất

Khác với quỹ tích tâm vòng tròn nội tiếp ở phần trên, quỹ tích của trực tâm - là giao điểm

của 3 đường cao có phần phức tạp hơn - vì khi u P[π

2,π

2

], nghĩa là M nằm trên phần tư thứ

hai và ba của vòng tròn, thì trực tâm H nằm ngoài tam giác và đôi khi nằm ngoài vòng tròn.Hơn nữa khi |u| π thì H chạy ra vô cùng, và việc này sẽ gây khó khăn khi vẽ hình động.

Đặt u = MAB, Q là hình chiếu của A xuống MB. Tọa độ của M, Q,H là:

Phạm Minh Hoàng 77

Page 94: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

..x

.y

.B.A

.H2

.M1.M2

.H1

Hình 4.6:

M! cosusinu Q

$'&'%1 + cosu

21 + cosu

2tan(

u

2)

H

" cosucosu tan(

u

2)

Gọi cm,ch,cq lần lượt là các hàm tọa độ của M, H, Q theo u (góc MAB):> cm:=u¡[cos(u),sin(u)]:> cq:=u¡[(1+cos(u))/2,(1+cos(u))/2*tan(u/2)]:> ch:=u¡[cos(u),cos(u)*tan(u/2)]:

Để dễ nhìn, ta vẽ tam giác ABM , hình tròn bằng nét liền. Các đường cao bằng nét đứt

đoạn. Ta đã biết rằng khi u P[π

2,π

2

]thìH ở ngoài tam giác, khi ấy ta phải vẽ một cách khác.

Gọi CR là hình tròn, tg(u) là hàm đồ thị của tam giác ABC (đường liền) f1(u), f2(u) là hàmđồ thị các đường cao (các đường đứt đoạn) khi H nằm trong và ngoài tam giác ABC:

> CR:=[cos(k),sin(k),k=0..2*Pi]:

> tg:=u¡plot([[[1,0],cm(u),[0,0]],CR]):> f1:=u¡plot([[1,0],ch(u),cm(u),cq(u),[0,0]],linestyle=4):> f2:=u¡plot([[1,0],ch(u),cm(u),cq(u)],linestyle=4):

Sau cùng ta dùng lệnh textplot để xuất các chữ trên đồ thị. Ta khai báo dưới dạng hàmvới biến là tọa độ của chữ và chữ muốn xuất (dĩ nhiên trừ A và B là hai điểm cố định):

> with(plottools):

> tt:=(x,y,a) ¡textplot([x/10,y/10,a],font=[HELVETICA,BOLD,10]):> tA:=textplot([-0.6,.06,"A"],font=[HELVETICA,BOLD,10]):

> tB:=textplot([1.05,.06,"B"],font=[HELVETICA,BOLD,10]):

Với những khai báo trên ta có thể vẽ 4 trường hợp tương ứng với 4 vị trí củaM trong 4 phầntư hình tròn. Nhưng ở đây ta gộp chung lại thành 2. Trường hợp đầu, [Hình 4.7 (a)], u P [0, π]và trường hợp 2, [Hình 4.7 (b)] u P [π, 2π].

78 Phạm Minh Hoàng

Page 95: Maple Va Cac Bai Toan Ung Dung

4.5. Quỹ tích 3

> gr1:=display([tg(Pi/4),f1(Pi/4),tB,tt(7,8.5,M),

tt(6.3,3.6,H),tt(9,4,Q)]):

> gr2:=display([f2(23*Pi/34),tg(23*Pi/34),tA,tB,tt(-5,9.5,M),

tt(-6,-9,H),tt(3,5.3,Q)]):

> gr3:=display([f2(21*Pi/16),tg(21*Pi/16),tA,tB,tt(-6.2,10.5,H),

tt(-6.5,-8.5,M),tt(3,-5,Q)]):

> gr4:=display([f1(5*Pi/3),tg(5*Pi/3),tB,tt(4.5,-3.5,H),

tt(6.5,-8.5,M),tt(8,-4.5,Q)]):

> display(gr1,gr2); [Hình 4.7 (a)]> display(gr3,gr4); [Hình 4.7 (b)]

Hình 4.7: (a), (b) Vị trí tương đối của H; (c) Quỹ tích H

Quỹ tích của H [Hình 4.7 (c): cách đơn giản nhất là đường tham số:> gs:=plot([op(ch(x)).,x=0..2*Pi],-1..1,-2..2,color=black):

> display(gs,tg(0),scaling=constrained,tickmarks=[2,2]);

Phạm Minh Hoàng 79

Page 96: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

[Hình 4.7 (c)]: Cho thấy trong quỹ tích của H còn có cả đường thẳng x = 1[6]. Đườngthẳng này là quỹ tích khi u = π. Mặt khác trong lệnh trên ta dùng hàm tg với tham số là 0 đơnthuần là vì không muốn vẽ tam giác ABM .

Bây giờ ta sẽ vẽ các hình tam giác ABM và quỹ tích của H chung trong một đồ thị. Đểlàm việc này, trước tiên ta cần khai báo một hàm f(u) để phân biệt hai trường hợp u P [0,

π

2]Y

[3π

2, 2pi] và u P [π, 2π]. Trong trường hợp thứ nhất (cos(u) ¡ 0, H nằm trong tam giác ABM)

ta chọn hàm f1(u), ngược lại ta chọn f2(u), lúc đó H nằm ngoài ABM :> f:=u¡piecewise(cos(u)>0,f1(u),f2(u)):

Tiếp theo, ta khai báo một hàm gr với hai tham số t1, t2 dùng để vẽ quỹ tích của H khi uthay đổi trong khoảng hai tham số này. Sau đó nhập hai giá trị của t1, t2 để vẽ đồ thị.

> gr:=(t1,t2)¡plot([op(ch(u)),u=t1..t2],x=-1..1.1,-1.5..1.5):> s1:=seq([gr(0,t),f(t),tg(t)],t=[Pi/5,Pi/3,3*Pi/7]):

> display(s1,scaling=constrained,view=[0..1,0..1]); [Hình 4.8 (a)]> s2:=seq([gr(Pi,t),f(t),tg(t)],t=[4*Pi/3,10*Pi/7]):

> display(s2,scaling=constrained,view=[-1..1,-1..1]); [Hình 4.8 (b)]Và sau cùng là hình động. Ta dùng lại các hàm gr,f , và tg. Chúng ta sẽ khai báo một

dãy của 3 hàm trên theo u/10. Chia cho 10 có nghĩa là giảm vận tốc hiển thị 10 lần để có thểquan sát được. Tuy nhiên, quan trọng nhất là chúng ta phải xác định được giá trị của u (hayM ),vì khi |u| tiến đến gần π, H sẽ có những trị số rất lớn, ta phải tránh những giá trị lân cận này.Mặt khác, vận tốc di chuyển của H cũng khác nhau tùy theo giá trị của u. Càng gần đến π vậntốc của H càng nhanh. Tóm lại, với tất cả những trở ngại nêu trên, chúng ta bắt buộc phải khaibáo các giá trị của u một cách "thủ công":

Hình 4.8: Quỹ tích của H với các vị trí M

- M sẽ cahỵ đều trong khoảng [0,5π

7], hay [0 Ñ 2.24]

6Đường x = 1 có thể được vẽ bằng lệnh plot([-1,t,t=-1..0],color=black):

80 Phạm Minh Hoàng

Page 97: Maple Va Cac Bai Toan Ung Dung

4.6. Giới hạn của Maple

- Tại 2.24,M sẽ dừng ít lâu rồi nhảy sang5π

7+

π

2 3.82 Sự kiện dừng ít lâu đơn thuần là

tránh thay đổi đột ngột.- Tại 3.82,M sẽ ừng ít lâu rồi chạy đều về 2π.Tóm lại, các giá trị của u là (nhân lê với 10 vì vận tốc giảm đi 10 lần):

> p:=seq(i,i=0..23),23,23,23,4,40,40,seq(i,i=40..63);

> s:=seq(display([gr(0,t/10),f(t/10),th(t/10)]),t=p):

> display(s,insequence=true,scaling=constrained);

Cách giải thứ hai

Đây đúng ra chỉ là một cách dùng các lệnh trong geometry để tìm trước tiếp tọa độ củacác điểm. Tuy nhiên, điều phức tạp nhất là phải dùng các điều kiện assume. Và các điều kiệnnày chỉ có thể biết được khi Maple từ chối một mệnh lệnh nào đó. Ta bắt buộc phải lùi lại đểthức hiện assume trước khi đi tiếp:

Khai báo các điểm A,B, M , tam giác ABC và trực tâm H . Tọa độ M,H được gán vàocùng hàm cm(u),ch(u) như trên:

> with(geometry):

> point(A,0,0):point(M,cos(u),sin(u)):point(B,1,0):

> cm:=unapply(coordinates(M),u);

> assume(sin(u)<>0):triangle(T,[A,M,B]):orthocenter(H,T):

> ch:=unapply(coordinates(H),u);

Khai báo điểm Q, tọa độ Q được gán vào cùng hàm cq(u) như trên:> assume((1-cos(u))ˆ2+sin(u)ˆ2<>0):

> altitude(hA,A,T,Q):cq:=unapply(coordinates(Q),u);

Các hàm cm(u),ch(u),cq(u) đã được thay đổi, ta có thể tiếp tục dùng lại các lệnh trongmục 4.5.1, và phần tiếp theo cũng giống như cách giải thứ nhất:

> display(gr1,gr2);display(gr3,gr4);

4.6 Giới hạn của Maple

Một thí dụ thuần hình thức

Chứng minh hai vòng tròn có phương trình p1 và p2 sau đây trực giao:"p1 = x2 + y2 2mx 2ny m2 + n2

p2 = x2 + y2 2nx + 2my + m2 n2

Khai báo hai phương trình dưới dạng hàm theo (m,n):> p1:=(m,n)¡xˆ2+yˆ2-2*m*x-2*n*y-mˆ2+nˆ2;

> p2:=(m,n)¡xˆ2+yˆ2-2*n*x+2*m*y+mˆ2-nˆ2;

Nhập thư viện geometry và đặt ngay câu hỏi với Maple:> with(geometry): EnavHorrzontalName:= x: EnvVerticalName:= y:

> AreOrthogonal(circle(k,p1(m,n)),circle(h,p2(m,n)));

Phạm Minh Hoàng 81

Page 98: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

circle: "hint: 2*mˆ2 must be positive"

Error, (in circle) not enough infomation

Maple đòi m phải là số thức mới có thể trả lời.> assume(m>0,n>0):

> AreOrthogonal(circle(k,p1(m,n)),circle(h,p2(m,n)));

true

Câu trả lời ngắn gọn là trực giao. Nhưng ta có thể "tự làm khó mình" bằng hai phương phápkhác để qua đó thấy được khả năng tính toán hình thức (cũng như yếu điểm) của Maple:

Bằng tích vô hướng

Gọi K, H lần lượt là tâm của p1, p2. Giả sử hai vòng tròn này cắt nhau tai P, Q. Nếu chúngtrực giao, ta phải có [Hình 4.9 (a)]:

HP K KP ðñ ÝÝÑHP ÝÝÑKP = 0

Tọa độ của H,K và bán kính của p1, p2:> K:=coordinates(center(k));simplify(radius(k),symbolic);

K := [n,m];m?

2

> H:=coordinates(center(h));simplify(adius(h),symbolic);

H := [n,m];n?

2

Tọa độ hai giao điểm của hai vòng tròn:> s:=solve(p1(m,n),p2(m,n),x,y);

s := ty = m + n, x = 0u,"

y = m3 + m2n n2m n3

m2 + n2, x = 2

(m + n)mn

m2 + n2

*Dùng op,select,has để tách ra tọa độ của P,Q. Gọi v1 =

ÝÝÑHP, v2 =

ÝÝÑKP

> v1:=vector([K[1]-rhs(op(select(has,s[2],x))),

K[2]-rhs(op(select(has,s[2],y)))]);

> v2:=vector([H[1]-rhs(op(select(has,s[2],x))),

H[2]-rhs(op(select(has,s[2],y)))]);

> linalg[dotprod](v1,v2);

0

Bằng hàng điểm điều hòa

Đường thẳng KH đi qua hai tâm cắt p1 tại hai điểm A,B, và cắt p2 ở C, F . Hai vòng tròntrên trực giao nếu A,B,C, F là một hàng điểm điều hòa hay:

BF

BC=

AF

ACðñ BF AC = AF BC (4.6.1)

Trước tiên khai báo đường thẳng KH:> line(kh,[center(k),center(h)]):

> KH:=Equation(kh);

KH := x(n + m) + y(m + n)m2 n2 = 0

Giao điểm của KH và p1:

82 Phạm Minh Hoàng

Page 99: Maple Va Cac Bai Toan Ung Dung

4.6. Giới hạn của Maple

..A .K.C .B

.H .F

.P

.Q.(p1)

.(p2)

Hình 4.9: Vòng tròn trực giao

> solve(KH,p1(m,n),x,y);"y = %1, x = m%1 + n%1m2 n2

m + n

*%1 = RootOf((m2 + n2) Z2 + (2m2n 2n3) Z m4 + n4 2m3n)

Dùng allvalues để hiển thị dưới dạng tường minh, chúng ta sẽ thu được hai nghiệm kháphức tạp. Chọn ngẫu nhiên nghiệm thứ nhất và gán vào tọa độ của A,B:

> s1:=allvalues(%);#x =

( 1

2m%1

m2 + n2+

12

n%1m2 + n2

m2 n2

)m + n

, y =12

%1m2 + n2

+%1 = (2m2n + 2n3 + 2

?2m4n2 + m2n4 + m6 + 2m5n + 2n3m3)

Tọa độ của A, B là:> Ax:=rhs(op(select(has,s1[1],x))):

> Ay:=rhs(op(select(has,s1[1],y))):

> Bx:=rhs(op(select(has,s1[2],x))):

> By:=rhs(op(select(has,s1[2],y))):

Khai báo hai điểm bằng lệnh point:> point(A,Ax,Ay);point(B,Bx,By);

Tương đương với vòng tròn p2 ta cũng có hai điểm C, F :> solve(KH,p2(m,n),x,y);> s2:=allvalues(%);

> Cx:=rhs(op(select(has,s2[1],x))):

> Cy:=rhs(op(select(has,s2[1],y))):

> Fx:=rhs(op(select(has,s2[2],x))):

> Fy:=rhs(op(select(has,s2[1],y))):

Phạm Minh Hoàng 83

Page 100: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

..A .K.C .B

.H .F

.P

.Q

.(p1)

.(p2)

Hình 4.10:

> point(C,Cx,Cy):point(F,Fx,Fy):

> implicitplot(subs(m=3,n=2,KH),p1(3,2),p2(3,2),x=-3..10,y=-6..6.5,scaling=constrained ); [Hình 4.9 (b)]

Để xem (A,C,B, F ) có là hàng điểm điều hòa hay không ta chỉ cần nhập:> AreHarmonic(A,C,B,F);

geometry/smagnitude :"cannot determine the sign of FAIL"

Error, (in geometry/smagnitude) cannot determine the sign of FAIL

Maple chẳng những không xác định được câu hỏi là hàng điểm có điều hòa hay không mànó cũng "chẳng biết tại sao mình không biết". Đến nước này thì chúng ta chỉ còn cách tự giảiquyết bằng cách tính qua biểu thức (4.2). Trước tiên ta phải tính các khoảng cách:

> BF:=distance(B,F):BC:=distance(B,C):

> AF:=distance(A,F):AC:=distance(A,C):

> simplify(BF*AC-BC*AF,sybolic);

(4mn 4?

n2 n%1 + nm + m2 m%1)?

n2 + n%1 + nm + m2 + m%1

%1 =?

m2 + n2

> combine(%,radical,symblolic):

> simplify(expand(%));

0

BF AC = AF BC ñ (A,B, C, F ) là một hàng điểm điều hòa. Vậy p1, p2 trực giao.

Một khúc mắc...

Nói chung Maple là một công cụ tốt để học hình học giải tích. Tuy nhiên, nói đến Maple làphải nghĩ ngay đến khía cạnh "hình thức", và đó là khúc mắt lớn nhất khi áp dụng vào hình học.Ta vừa thấy trong bài toán vòng tròn trực giao cũng như các bài toán dùng geometry trongphần quỹ tích: Maple đặt ra vô số điều kiện để bắt phải lùi trở lại khai báo các lệnh assume.Càng đi sâu vào vấn đề, các assume càng phức tạp hơn. Có những lần chúng ta "luồn lách"được. Nhưng có những lần khác thì... thì bế tắc. Ta thử xem thí dụ nhỏ sau:

Trong mặt phẳng cho 4 điểm A,B, C, E, tìm giao điểm của hai đường thẳng AB,CE:

84 Phạm Minh Hoàng

Page 101: Maple Va Cac Bai Toan Ung Dung

4.6. Giới hạn của Maple

> restart:with(geometry):

> EnvHorizontalName:=x: EnvVerticalName:=y:

> alias(x[a]=xa,y[a]=ya,x[b]=xb,y[b]=yb,

x[c]=xc,y[c]=yc,x[e]=xe,y[e]=ye ):

> point (A,xa,ya),point(B,xb,yb),point(C,xc,yc),point(E,xe,ye):

Tọa độ trung điểm M của AB và AB:> midpoint(M,A,B):[coordinates(M)],distance(A,B);[

12xa +

12xb,

12ya +

12yb

],a

(xa xb)2 + (ya + yb)2

Đến đây thì mọi chuyện đều êm thắm, nhưng khi muốn tìm phương trình đường thẳng ABcũng như khoảng cách từ C tới đường thẳng AB thì mọi chuyện trở lên phức tạp:

> line(AB,[A,B];line(CE,[C,E]));

geometry/checkline: One of the following conditions must be satisfied

x[a] x[b] ¡ 0y[a] y[b] ¡ 0

Error, (in geometry/checkline) not enough information: the line is not defined

Thông báo sai! Maple "cắc cớ" đòi các điểm A,B không được trùng nhau, ta bắt buộc phảivâng lời bằng cách dùng assume, để sau đó mới có thể đi tiếp. Ta tìm được phương trình củaAB cũng như khoảng cách từ C tới đường thẳng AB:

> assume(xa<>xb,ya<>yb,xc<>xe,yc<>ye):

> line(AB,[A,B];line(CE,[C,E]));

> Equation(AB);distance(C,AB);

(ya yb)x + (xa + xb)y + ybxa yaxb = 0| (ya yb)xc + (xa + xb)yc ybxa + yaxb|b

y2a 2yayb + y2

b + x2a 2xaxb + x2

b

Maple đòi cho bằng được A B mới tính phương trình AB nhưng lại không đặt điều gìvới C khi tính khoảng cách từ C tới AB, vì khi A B phương trình không có nghĩa (vế phảibằng không), trong khi nếu C P AB thì khoảng cách C tới AB bằng không.

Nhưng nếu bây giờ ta tìm giao điểm của AB và CE:> intersection(K,AB,CE);

Maple lại cho ra một thông báo đòi (ya yb)(xc +xe) (yc ye)(xa +xb) 0. Nhưngbây giờ thì assume không giải quyết được gì cả. Tóm lại, trong hình học, chúng ta bắt buộcphải khai báo các tọa độ như một hằng số.

Khi đó tất cả sẽ trở nên đơn giản như thí dụ (phức tạp) sau.

Một thí dụ điển hình

Trong tọa độ trực chuẩn Oxy, cho ba điểm A[3, 3], B[7, 6], C[1,3]. Xác định phươngtrình đường Euler[7], vòng tròn nội tiếp và ngoại tiếp của tam giác ABC.

> restart:with(geometry):

> EnvHorizontalName:=x: EnvVerticalName:=y:

> point(A,-3,3):point(B,7,6):point(C,1,-3):

7Đường Euler là đường nối liền trực tâm, trọng tâm và giao điểm ba đường trung trực

Phạm Minh Hoàng 85

Page 102: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

> midpoint(X,A,B): X=coordinates(X);distance(A,B);

X =[2,

92

],?

109

> line(AB,[A,B]),[Equation(AB)];

21 + x + 8y = 0

Khai báo tam giác ABC, tính diện tích của nó và zBAC:> triangle(ABC,[A,B,C]):S[ABC]=area(ABC);

> FindAngle(line(AB,[A,B]),line(BC,[B,C])):

> %=evalf(convert(%,degrees),3);

S[ABC] = 36

arctan(

2429

)= 39.6degrees

Khai báo các đường trung tuyến, trung trực và đường cao của tam giác ABC:> median(mA,A,ABC):median(mB,B,ABC):median(mC,C,ABC):

> PerpenBisector(qA,A,B): PerpenBisector(qB,B,C):

PerpenBisector(qC,C,A):

> altitude(hA,A,ABC):altitude(hB,B,ABC):altitude(hC,C,ABC):

Khai báo như trên ta đượcmA, qA, hA lần lượt là trung tuyến, trung trực và đường cao xuấtphát từ A. Phương trình của chúng là:

> mA=Equation(mA),qA=Equation(qA),hA=Equation(hA);

mA =( 33

2+

32x+7y = 0

), qA =

( 67

2+10x+3y = 0

), hA = (96x9y = 0)

Tương tự với B và C, ta có mB, qB, hB và mC, qC, hC. Gọi M,H, Q lần lượt là trọngtâm, trực tâm và giao điểm của ba đường trung trực. Tọa độ của chúng là:

> AreConcurrent(mA,mB,mC);intersection(M,mA,mC):

> AreConcurrent(qA,qB,qC);intersection(Q,qA,qB):

> AreConcurrent(hA,hB,hC);intersection(H,hA,hC):

> M=coordinates(M),Q=coordinates(Q),H=coordinates(H);

M =[53, 2], Q =

[218

,2912

],H =

[ 1

4,76

]Ba điểm này thẳng hàng và phương trình của đường Euler là:

> AreCollinear(M,Q,H),eMH:=Equation(line(MH,[M,H]));

true, eMH :=229

+56x 23

12y = 0[8]

Tâm và phương trình vòng tròn nội tiếp:> incircle(vI,ABC):

> combine(coordinates(center(vI)),radical):%=evalf(%,3);[1,3

7?

13 +?

1095?

13 +?

109

]= [1.0, 1.58]

> collect(combine(factor(Equation(vI)),radical),[x,y]);

x2 2x + y2 +( dfrac473 +

13?

1417)

y 32?

1417 +1072

= 0

8Dĩ nhiên, người ta có thể có trực tiếp phương trình này sau khi khai báo tam giác ABC bằng lệnhEquation(EulerLine(El,ABC))

86 Phạm Minh Hoàng

Page 103: Maple Va Cac Bai Toan Ung Dung

4.6. Giới hạn của Maple

Hình 4.11:

Tâm và phương trình vòng tròn ngoại tiếp:> circumcircle(vE,ABC):

> coordinates(center(vE)):

> %=evalf(%,3);[218

,2912

]= [2.62, 2.42]

> Equation(vE);

x2 774

+ y2 214

x 296

y = 0

Và hình vẽ tương ứng với các tính toán trên đây là:> Tr:=polygonplot([coordinates(A),coordinates(B),coordinates(C)],

color=white,thickness=3):

> gI:=implicitplot(Equation(vI),x=-4..9,y=-6..9):

> gE:=implicitplot(Equation(vE),x=-4..9,y=-6..9):

> MQH:=polygonplot([coordinates(M),coordinates(Q),coordinates(H)]);

> EL:=implicitplot(eMH,x=-4..9,y=-6..9,linestyle=2):

> display(Tr,gI,gE,EL,MQH,scaling=constrained);

Phạm Minh Hoàng 87

Page 104: Maple Va Cac Bai Toan Ung Dung

Chương 4. Hình học giải tích

4.7 Bài đọc thêm: Archimède

Archimède sinh trưởng ở Syracuse, mộtđô thị lớn thời Hy Lạp cổ đại. Sử chép rằngở ông có một thời lưu học ở Ai Cập, đặc biệtở Alexandrie, và chính tại đây ông được gặpConnon, học trò của Euclide và Eratostène,Giám đốc Thư viện Alexamdrie nổi tiếng, nhờđómàArchimède tiếp cận được với những phátminh mới về Toán học và khoa học. Trở về quêhương, ông say sưa nghiên cứu, truyền thụ chohọc trò những tri thức, phát minh vè Toán học,khoa học đã làm cho tên tuổi ông trở thành bấttử.

Cuộc đời cũng như cái chết của ông đã trởthành huyền thoại được đời đời truyền tụng,thán phục và thương cảm. Vào năm 212 trướcCông Nguyên, thành Syracuse bi quân La Mãvây hãm trong hai năm nhưng không tài nào hạnổi vì Archimède đã giúp dân Syracuse sángchế vũ khí giết giặc. Tướng La Mã là Marcel-lus đành cho quân vây thành chờ thời cơ. Lâungày, quân Hy Lạp mất cảnh giác. Nhân dịp lễnữ thần Diane, quân La Mã lẻn được vào trongthành vì thế mà Syracuse thất thủ. Marcellusmếnmộ tài Archimède đã ra lệnh cho quân línhkhông được chạm đến ông nhưng đã quámuộn,quân La Mã say sưa chém giết vì thế mà ôngđã bị sát hại.

Trong những huyền thoại về cuộc đời ông,thì có lẽ câu chuyện ông phát minh ra nguyênlý đầu tiên của Thủy tĩnh học là thú vị nhất.Tục truyền, vua Hiéron sai thợ kim hoàn làmmột vương miện nhưng nhà vua nghi ngờ thợkim hoàn ăn bớt vàng và thay bạc vào, bèn hỏi

ý kiếm Archimède làm sao xác định được màkhông làm hỏng vương miện. Ông suy nghĩmãi. Một hôm nhân ngâm mình tắm trongnước, ông thấy cơ thể như nhẹ đi, ông sungsướng hét to lên: Eurêka ! Eurêka !. Một lầnkhác, khi nghiên cứu về đòn bẩy, ông thấy cóthể dùng một lực nhỏ để bẩy một vật nặng hơngấp nhiều lần vì vậy ông nói vui: Hãy cho tôimột điểm tựa tôi sẽ bẩy được Quả Đất nên!

Khi tim ra diện tích hình ellipse, ông dùngphương pháp chia ellipse ra thành rất nhiều tamgiác có diện tích tăng theo cấp so nhân có côngbội là

1

4. Theo ngôn ngữ của chúng ta ngày

nay, Archimède đã tính tổng của một chuỗi hộitụ, một kỹ thuật tính toán kỳ lạ của nhân loạivào thời đó, tiền thân của phép tính tích phân.

Sinh thời, ông thích thú với bài toán màông đã giải: "một hình cầu nội tiếp trong mộthình viên trụ" và ông nói rằng: Mai kia, saukhi tôi qua đời, nên ghi hình ảnh bài toán nàytrên bia mộ tôi. Và người ta đã thực hiện đúngnguyên ước của ông. Chính nhờ đó mà hơnmột trăm năm sau Cicéron đã tìm ra được ngôimộArchimède bị bỏ hoang theo năm tháng, gaimọc đầy và cỏ dại phủ kín!.

Ông đã đẻ lại cho đời sau một gai tài vô giávề các phát minh khoa học thuộc các lĩnh vựcHình học phẳng, Hình học không gian, Số học,Cơ học, Thủy tĩnh học, Thiên văn học. Ngônngữ trình bày trong các công trình khoa học ấythật mạch lạc, trong sáng, khiến ngày nay aiđọc cũng kinh ngạc.

88 Phạm Minh Hoàng

Page 105: Maple Va Cac Bai Toan Ung Dung

Chương5

Bài toán mô phỏng

Mô phỏng là một lĩnh vực quan trọng không chỉ riêng trong nhà trường, trong các cơ quannghiên cứu mà còn cả trong mọi tầng lớp xã hội.

Làm thế nào để biết được sự thay đổi, sự biến hóa thương vụ của một doanh nghiệp trướctình trạng cạnh tranh với nhiều xí nghiệp khác, làm sao hiểu và tiên hiệu tình trạng kẹt xe trongcác thành phố lớn, làm sao chế ngự được sự lan tràn của một bệnh dịch, nên tăng thuế đánhvào thuốc lá bao nhiêu để đảm bảo nguồn thu nhập nhưng vẫn đồng thời giữ gìn sức khỏe chocộng đồng, làm sao cân bằng sự duy trì sinh thái trong một khu rừng có nhiều sinh vật khácnhau. . .Tất cả những vấn đề này đều được "mô phỏng hóa", nghĩa là được biểu diễn dưới cáccông thức toán học, mà phần lớn được đưa về phương trình vi phân và ma trận.

Mô phỏng hóa là một bài toán cụ thể và có rất nhiều ảnh hưởng trong đời sống của chúngta, những vấn đề phức tạp này trở nên hữu ích và thú vị nếu chỉ với một chút suy nghĩ cùng vớisự giúp đỡ của Maple.

5.1 Cạnh tranh tay đôi

Xem xét thương vụ của hai cửa hàngA vàB thì người ta thấy rằng cứ sau mỗi thánghoạt động có một lượng khách nhỏ từA bỏ sangB và ngược lại một lượng nhỏ kháctừ B chuyển sang A.Mô phỏng hóa lượng khách của A và B, biết rằng số khách lúc đầu của A là X vàB là Y .

Gọi (x, y) lần lượt là tỷ lệ khách ở lại A và B sau mỗi tháng. Ta có sau một tháng hoạtđộng:

- số khách ở A là: xX + Y (1 y)

- số khách ở B là: yY + X(1 x)

Dưới dạng ma trận, với Si là số khách ở thời điểm i:[x 1 y

1 x y

].[XY

]= MS0

M là ma trận chuyển từ thời điểm này sang thời điểm kế tiếp, như thế ta có:S2 = MS1 = M2S0, S3 = MS2 = M3S0, . . . , Sn = MSn1 = MnS0 (5.1.1)

Page 106: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

Đặt X = Y =1

2, x =

2

3, y =

5

9. Ta có:

> restart:with(plots):with(plottools):with(linalg):with(LinearAlgebra):

> M:=matrix(2,2,[2/3,4/9,1/3,5/9]):M:=evalm(M*9)/9;

M =19

[6 43 5

]> S:=matrix(2,1,[1/2,1/2]):S:=evalm(S*2)/2:'S[0]'=eval(S);

S0 =12

[11]

Lưu ý rằng để M có nghĩa, tổng các phần tử trong một cột phải bằng 1, vì (x, y) phải tỷ lệchứ không phải số lượng khách.

Giải bằng hàm tổ hợp

Từ phương trình (5.1), ta khai báo: g(u) = Mu

> g:=u¡evalm(M&*u):Ta được g(g(u)) = g g(u) = (g@@2)(u). Gọi g(u) 4 lần để có tình trạng khách hàng sau

4 tháng hoạt động với u = S0 ta được:> transpose((g@@4)(S)):%=evalf(%,5);[

37486561

,28136561

]= [0.57125, 0.42857]

Gải bằng ma trận

Cũng từ (5.1) bây giờ ta khai báo f(n) là hàm tíchMnS, nghĩa là tình trạng của khách hàngsau n tháng hoạt động:

> f := n¡ evalm((Mˆn)&*S):

Chúng ta tìm lại được kết quả như hàm số hợp:> f(1),f(2),transpose(evalf(f(4), 5));[

5/94/9

],

[46/6135/81

], [0.57125, 0.42875]

> g1:=plot([[0,1/2],seq([i,f(i)[1,1]], i =1..6)],linestyle=1):

> g2:=plot([[0,1/2],seq([i,f(i)[2,1]], i =1..6)],linestyle=4):

> plots[display]([g1,g2]);

Lưu ý: f(0) không xác định: evalm(Mˆ0); sẽ cho ra 1. Kết quả là một số, và như thế khinhân với vector S sẽ sai. Vì thế thay vì tính chuỗi từ 0, ta phải tính từ 1 và "ghép" vào phía đầu

chuỗi giá trị S0 =

[1

2,1

2

].

Chúng ta nhận thấy chỉ sau 3 hoặc 4 tháng hoạt động, lượng khách của A và B được coinhư ổn định. (Đồ thị gạch đứt đoạn là của B).

Phương pháp trên chúng ta đã tính trực tiếp Mn với n được xác định trước. Trong trườnghợp n là biến hình thức, chúng ta sẽ phải dùng hàm jordan để tính Mn = PJnP1 với J làma trận đường chéo và P là ma trận chuyển cơ sở:

> J:=jordan(M,P): Jn:=map(i¡iˆn,J);

Jn =[1 00 (2/9)n

]> evalm((P &* Jn * Pˆ(-1))&* S):

90 Phạm Minh Hoàng

Page 107: Maple Va Cac Bai Toan Ung Dung

5.1. Cạnh tranh tay đôi

Hình 5.1:

> f:=unapply(map(op,convert(%, listlist)), n);

f := n ÞÑ[47 1

14(29)n,

37

+114

(29)n

](5.1.2)

Ta cũng tìm lại được kết quả sau 4 tháng là:> f(4): % = evalf(%,5);[

37486561

,28136561

]= [0.57125, 0.42875]

Giải bằng hàm quy nạp rsolve

Từ M chúng ta khai báo hàm quy nạp:> s:=u(n+1)=2*u(n)/3+4*v(n)/9, v(n+1)=u(n)/3+5*v(n)/9;

s :=

$'&'%u(n + 1) =

23u(n) +

49v(n)

v(n + 1) =13u(n) +

59v(n)

> rsolve(s,u(0)=1/2, v(0)=1/2,u,v):Ta sẽ tìm lại được kết quả như trong (5.2)

Biểu diễn trong không gian 3-D

Một cách khác để thấy sự thay đổi lượng khách là vẽ đồ thị trong không gian 3 chiều. Trongtrường hợp này ta dùng tính toán hình thức. Để dễ nhìn, khối lượng ban đầu của khách bây giờlà [1, 1] và ta tính sau 3 tháng hoạt động:

> M:=matrix(2,2,[x,1-y,1-x,y]): S:=matrix(2,1,[1,1]):

> M=eval(M), 'S'=eval(S);

M =[

x 1 y1 x y

], S =

[11]

> P:=map(simplify@expand, f(3));

Phạm Minh Hoàng 91

Page 108: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

Hình 5.2: Thương vụ với đồ thị 3-D

P =[x3 + x xy2 + 1 x2 + y2 y yx2 y3

x2 + 1 y2 x3 x + xy2 + y yx2 + y3

]> alias(EC='x=0..1,y=0..1,axes=frame,grid=[15,15]'):

> plot3d(P[1,1],EC); [Hình 5.2(a)] plot3d(P[2,1],EC); [Hình 5.2(b)]Đồ thị hình [5.2(a)] (cửa hàng A) cho thấy khi y cố định, x thay đổi từ 0 đến 1, thương vụ

của A luôn luôn tăng. Khi x = 1, y = 0 (tất cả mọi khách hàng đều ở lại A, không ai sang B),lượng khách ở bên A sẽ tăng tối đa, bằng 2.

5.2 Kinh tế ASEAN

[1]Bây giờ là một trường hợp tương tự nhưng phức tạp hơn. Số cửa hàng bây giờ là 5và mang tên A,B,C,D, E. Tỷ lệ khách hàng ở lại và bỏ đi sang các cửa hàng bêncạnh được xác định bằng bảng dưới đây. Giá trị thực được nhân lên với 10. Giả sửsố khách ban đâu bằng

1

5cho 5 của hàng:

. A B C D E°

A . 3 1 3 1 8B 3 . 1 2 2 8C 2 1 . 3 1 7D 4 1 1 . 3 9E 2 2 2 3 . 9°

11 7 5 11 7

Xét hàng thứ nhất, tỉ lệ khách từ A bỏsang (B, C, D, E) lần lượt là (3, 1, 3, 1).

Xét cột thứ nhất, tỉ lệ khách từ(B,C,D,E) bỏ sang A lần lượt là(3, 2, 4, 2).

Như thế, tỉ số giữa tổng khách ở lại trên1Đây là một bài toán cụ thể do nhà toán học Wassily Leontief, giải Nobel kinh tế năm 1973 đặt ra để mô phỏng

tình trạng của 5 nền công nghiệp của Mỹ. Ta cũng có thể ứng dụng vào trong trường hợp của một tập thể như khốicác nước ASEAN

92 Phạm Minh Hoàng

Page 109: Maple Va Cac Bai Toan Ung Dung

5.3. Lãi suất ngân hàng

tổng số khách đi của (A,B, C, D, E) là 11

8,7

8,5

7,11

9,7

9.

Tỉ lệ khách ở lại A là 10 (3 + 1 + 3 + 1) = 2, và tính tiếp tục với (B,C,D,E). ta có matrận chuyển của hệ là:

> M:=matrix(5,5,[2,3,2,4,2,3,2,1,1,2,1,1,3,1,2,3,2,3,1,3,1,2,1,3,1]):

> M:=evalm(M)/10:S:=matrix(5,1,1)/5:'M'=eval(M),'S'=eval(S);

M =110

2 3 2 4 23 2 1 1 11 1 3 1 23 2 3 1 31 2 1 3 1

, S = 15

11111

Tương tự như trường hợp hai cửa hàng, sau 3 tháng hoạt động, số khách của năm cửa hàng

đều ổn định:> evalf(transpose(f(3)));

[0.2654, 0.1884, 0.1462, 0.2346, 0.1654]

Sau 3 tháng hoạt dộng, A có số khách cao nhất, điều này cũng dễ hiểu, vì tỉ số của tổng sốkhách ở trên đi của A lớn nhất (

11

8).

5.3 Lãi suất ngân hàng

Một khách hàng vay tiền với lãi xuất r%/năm. Gọi P là số tiền vay, m là số tiền trảhàng tháng. Hãy mô phỏng bài toán này.

Mục đích của bài toán trên là đi tìm số tiền còn phải trả ở năm thứ n và biện luận trên lãixuất r, trên thời gian trả . . .Trước tiên ta lí luận bài toán trên như sau:

Gọi Xn là số tiền còn phải trả vào năm n.

Sau năm thứ nhất, X1 = P rP 12m = P (1 r) 12m

Sau năm thứ hai, X2 = X1(1 r) 12m

Và cứ thế tiếp tục, ở năm n ta phải sùng kết quả của năm n 1.

Để giải bài toán này ta lần lượt dùng 3 phương pháp:

Lập trình

Với lập luận trên ta có chương trình đơn giản để tính Xn như sau:> pp:=proc(p,r,n)

> local i,P:P:=p:

> for i to n do P:=P*(1+r)-12*m: od: P; end:

Với P = 50000, r = 11%, n = 25, ta được:> pp(50000,11/100.,25);

679273.1899 1372.959687m

Và muốn trả hết sau 25 năm, số tiền phải trả hàng tháng là:

Phạm Minh Hoàng 93

Page 110: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

> solve(%,m);

494.7511

Hàm số hợp

Sự kiện kết quả của lần n được dùng để tính lần n + 1 gợi cho ta phương pháp hàm số hợp,một phương pháp nhẹ nhàng và không cần phải lập trình:

> X:=P¡P*(1-r)-12*m;-X(2) tương ứng với số tiền còn phải trả ở năm thứ 2 và bằng X(X(P)).-X(n) tương ứng với số tiền còn phải trả ở năm thứ n và bằng X(@@n)(P) .Và áp dụng các trị số như câu trên, ta có:

> subs(r=11/100.,(X@@25)(50000)): %,solve(%);

679273.5 1372.960m, 494.7511

Dãy truy hồi (quy nạp)

Cùng một lí luận trên và đặt X(n) là số tiền phải trả ở năm n, ta được:> X(n+1)=X(n)*(1+r)-12*m;

X(n + 1) = X(n)(1 + r) 12m

Dùng hàm rsolve để tìm ra công thức quy nạp, với điều kiện ban đầu (X(0) = P :)

rsolve(eq,X(0) = P,X(n));

P (1 + r)n 12m(1 + r)n

r+ 12

m

r (5.3.1)

Gán kết quả cho một hàm theo n, áp dụng các trị số như phần trên:> g:=unapply(%,n):

> subs(P = 50000.,r=11/100.,g(25)):solve(%,m):

Kiểm chứng: Maple có sẵn nhiều lệnh để xử lí các tính toán về lãi suất, được tóm gọn vàogói finance. Lệnh amortization sau khi thiết lập một bảng chi tiết khấu hao. Dùng các kếtquả đã tính ở trên ta có kết quả là một bảng 26 phần tử, phần tử sau cùng là:

> p:=finance[amortization](50000,494.7511*12,.11):p[1,26];

[25, 5936.887686, 588.3402212, 5348.547465, 0]

Vậy nếu hàng tháng trả 494.7511, 25 năm phải trả xong 50000.So sánh giữa 3 phép giải:-Về vận tốc tính rõ ràng là dãy truy hồi nhanh nhất, vì máy chỉ cần thay các trị vào công

thức 5.3, trong khi hai phương pháp trên đều phải cần dùng n vòng lặp nếu tính đến n năm.Phương pháp lập trình nhanh hơn hàm số hợp vì các lệnh nhập (move) đều là các lệnh sơ đẳng.

- Về cách đặt phương trình thì rõ ràng hàm số hợp tiện lợi hơn.Tuy nhiên, trong bài toán này, rất ít khi phải tính đến n ¡ 50, nghĩa là lãi suất trả trên 50

năm! Nến tiết kiệm thời gian CPU (Central Processing Unit) là một điều dư thừa. Và do đóhàm số hợp là phương pháp tốt nhất cho bài toán này.

94 Phạm Minh Hoàng

Page 111: Maple Va Cac Bai Toan Ung Dung

5.3. Lãi suất ngân hàng

Phương trình vi phân

Cả 3 cách làm trên đều có đặc điểm chung đó là những phương pháp rời rạc. Chúng ta tínhgiá trị từng năm một và để thấy được tiến trình của thời gian, chỉ cần vẽ đồ thị, và đồ thị đượcnối từng điểm một.

Gọi un là số tiền phải trả ở cuối năm thứ n, công thức chung cho 3 trường hợp trên là:un = P (1 r)n. Và với những dữ kiện đã cho ở trên, đồ thị tiền phải trả theo thời gian là:

> f1:=i¡50000*(1+0.11)ˆi:

> p1:=(f1(i))$i=1..10:

> f1(i)/12 $i=1..10:

> pp:=seq([i,f1(i)],i=1..10):

> g1:=plot([pp],t=1..10,symbol=box,style=point,symbolsize=18):

> g1b:=plot([pp],t=1..10):

> display(g1,g1b);

Hình 5.3:

Nhưng bây giờ chúng ta sẽ thử bằng một cách khác mà bản chất khác hẳn, người ta quengọi là cách giải các biến liên tục, bởi vì kết quả của phép giải không còn là nhiều điểm rời rạcnhưng là một phương trình giải tích. Đó là cách giải bằng phương trình vi phân Và phương trìnhvi phân của bài toán là:

> eq2:=diff(u(t),t)=r*u(t);

eq2 :=d

dtu(t) = ru(t);

> s2:=dsolve(eq2,u(0)=P);s2 := u(t) = Pert

> p2:=unapply(rhs(%), (P,r,t)):

> map(trunc,[p2(50000,.11,t)$i=1..10]);

[55813, 62303, 69548, 77635, 86662, 96739, 107988, 120544, 134561, 150208]

> g2:=plot(p2(50000,.11,t),t=1..10),linestyle=dash:

Phạm Minh Hoàng 95

Page 112: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

> plots[display](g1,g1b,g2);

Quan sát trên hình 5.4(a) ta thấy khi n càng lớn, sai biệt giữa hai phép giải rời rạc và liêntục càng lớn. Ở năm thứ 10, ta thấy có gần 9000 cách biệt:

> f1(10),f2(5000,.11,10);

[141971.0493, 150208.3012]

Hình 5.4: Sai biệt giữa phép giải rời rạc và liên tục

Lý do của sự khác biệt này chính là bản chất của hai phép giải. Khi giải rời rạc ta chỉ cógiá trị ở các điểm đặc biệt (cuối năm). Giữa hai điểm giá trị của hàm số không thay đổi. Đườngbiểu diễn thực của nó là một đường bậc thang và đạo hàm của các điểm đặc biệt không hiệnhữu. Còn ở phép giải liên tục, giá trị hàm và đạo hàm của các điểm luôn hiện hữu. Hình 5.4(b)[2], biểu diễn chung cả 3 đồ thị:

> f2:=(i)¡piecewise(x<i and x>i-1,p1[i]):

> g2c:=plot([seq(f2(i),i=2..10)],x=1..10,50000..145000,discont=true):

> plots[display](g1,g1b,g2,g2c);

Bây giờ ta mô phỏng giống như phần đầu, mỗi tháng khách trả m đồng:> eq3:=diff(u(t),t)=r*u(t)-12*m;

eq3 :=d

dtu(t) = ru(t) 12m

> s3:=dsolve(eq3,u(0)=P): f3:=unapply(solve(rhs(s3),m),(P,r,t));

f3 := (P, r, t) ÞÑ 112

ertPr

1 + ert

Và để trả hết 50000 trong vòng 25 năm thì mỗi tháng phải trả:> f3(50000,.11,25);

489.6346278

Kết quả này ít hơn với m = 494.75 đã tính ở các phương pháp rời rạc. Tuy nhiên ở đâysưh khác biệt là, ở phép rời rạc cho dù đã trả mỗi tháng m đồng, nhưng số tiền này không được

2Hình này nếu vẽ trong version 8 sẽ có những lằn dọc.

96 Phạm Minh Hoàng

Page 113: Maple Va Cac Bai Toan Ung Dung

5.4. Nuôi tằm

khấu trừ khi tính tiền lời cho các năm kế tiếp. Còn ở phương trình 5.4 thì được khấu trừ. và sựchênh lệch sau 25 năm là:

> 494.7511*12*25-%*12*25;

1534.9417

Mai này khi vay tiền nhớ đòi ngân hàng phái tính bằng phương trình vi phân, nhưng phảilà phương trình (5.4)(!).

5.4 Nuôi tằm

[3]Nghiên cứu sự sinh sản của tằm, người ta thấy một con tằm trưởng thành sẽ đẻ mộttrăm trứng mỗi tháng. Trong số này chỉ có 10% sống sót qua giai đoạn ấu trùng.20% số ấu trùng này sẽ nở thành nhộng và chỉ có 30% số nhộng này lớn thành tằm.Giả sử rằng mỗi giai đoạn sẽ kéo dài một tháng và 40% số tằm trưởng thành 1 thángtuổi sẽ sống cho đến tháng tiếp theo và có khả năng sinh sản.Kế hoạch hóa sự sinh sản của tằm, biết lúc đầu có u = 10 con.

Gọi wn, xn, yn, zn là số lượng của trứng, ấu trùng, nhộng và tằm ở tháng thứ n. Ta có:w1 = 100z0, x1 = 0.1w0, y1 = 0.2x0, z1 = 0.3y0 + 0.4w0

Hoặc dưới dạng ma trận:

A1 =

[w1x1y1z1

]=

0 0 0 1000.1 0 0 00 0.2 0 00 0 0.3 0.4

[w0x0y0z0

]= M.A0

M là ma trận chuyển từ tháng này qua tháng kế tiếp. Vậy:A2 = MA1 = M2A0, A3 = MA2 = M3A0, . . . , An = MAn1 = MnA0

(5.4.1)

Với các dữ kiện đã cho, khai báo ma trận M rồi biến đổi thành dạng hữu tỉ đồng thời đặt 110

làm thừa số chung như sau:> matrix(4,4,[0,0,0,100,0.1,0,0,0,0,0.2,0,0,0,0,0.3,0.4]);

> map(convert,eval(%),fraction):

> M:=evalm(%*10)/10;

Với z0 = 10 ( khởi đầu 10 con tằm), ta khai báo A dưới dạng hàm theo u:> A:=u¡matrix(4,1,[0,0,0,u]):

Và các dữ kiện ban đầu của bài toán là:> with(linalg):eval(M),eval(A(10));

110

0 0 0 10001 0 0 00 2 0 00 0 3 4

,

00010

Gọi g(i, u) là hàm của (M i(A(u)))T , ta được đồ thi biến thiên về sự sinh sản của tằm (với

số lượng ban đầu u = 10:)> g:=(i,u)¡transpose(evalm((Mˆi)&*A(u)));

> plot([seq([i,g(i,10)[1,4]],i=1..40)]); [hình 5.5(a)]Và với số tằm ban đầu là u = 80, ta được:

3Chủ đề được trích từ [34]

Phạm Minh Hoàng 97

Page 114: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

> plot([seq([i,g(i,80)[1,4]],i=1..40)]); [hình 5.5(b)]

Hình 5.5: (a), (b) Phát triển ổn định sau 30 tháng và (c) phát triển không ổn định

Quan sát cả hai hình 5.5(a) và 5.5(b) ta thấy chúng có cùng một dạng và qua đó có thể kếtkuận rằng số tằm ban đầu hoàn toàn không ảnh hưởng đến giai đoạn cân bằng của tằm. Bất kìvới số lượng ban đầu là bao nhiêu đến tháng thứ 35 cũng ổn định. Nếu không tuỳ thuộc vào A,kết quả chắc chắn phụ thuộc vào M và vì Mn(u) = vn.u, người ta có thể dễ dàng chứng minhđược rằng nó tùy thuộc vào vm = max(vi), với vi là những trị riêng của M :

Nếu 0 vm 1, lượng tằm sẽ giảm cho đến khi tuyệt chủng (!)

Nếu vm = 1, lượng tằm sẽ không đổi sau một khoảng thời gian

Nếu vm ¡ 1, lượng tằm sẽ liên tục gia tăng (bùng nổ dân số)

Các giá trị riêng (thực) được tính là:> evalf(select(i¡Im(i)=0,[eigenvals(M)]));

98 Phạm Minh Hoàng

Page 115: Maple Va Cac Bai Toan Ung Dung

5.4. Nuôi tằm

[1.,.7948411750]

Bây giờ ta thay đổi tỉ lệ sinh sản và tỉ lệ sống sót để có kết quả là sự bùng phát của tằm. Lúcnày cứ 100 trứng sẽ nở ra 11 ấu trùng. ta gọi tỉ lệ này là m.

> M:=matrix(4,4,[0,0,0,100,0.11,0,0,0,0,0.2,0,0,0,0,0.3,0.4]);

Hình 5.5(c) xác định một điều quan trọng: sự ổn định không tùy thuộc vào số lượng banđầu, mà phụ thuộc và giá trị riêng lớn nhất của M . Ở đây số lượng không ổn định theo chiều"bùng nổ dân số" (vì vmax ¡ 1).

> max(op(evalf(select(i¡Im(i)=0,[eigenevals(M)]))));1.020683729

Bây giờ ta giả sử rằng đang có sự bùng nổ dân số (m = 0.11). Hỏi với độ sinh nở nào củaấu trùng ra nhộng và nhộng ra tằm thì ta lại có sự ổn định?

Gọi P là tỉ lệ ấu trùng ra nhộng và để đơn giản tỉ lệ nhộng ra tằm vẫn không thay đổi là30%:

> M:=matrix(4,4,[0,0,0,100,0.11,0,0,0,0,p,0,0,0,0,0.3,0.4]); 0 0 0 1000.11 0 0 00 p 0 00 0 0.3 0.4

> s:=eigenevals(M):

Error, (in linalg /evalf) matrix entries must all evaluate to flloat

Maple không tính nổi trị riêng? Đây là một trong những bug củaMaple v.6 là: trong trườnghợp hệ số của M có số lẻ (float), M không có biến hình thức. Để khắc phục tình trạng trên, taphải cho giá trị p ngay từ đầu và kết hợp với toán tử mũi tên (¡). Ta khai báo một ma trận Mcó biến hình thức p, nhưng khi tính trị riêng của M , ta nhập trị số của p.

> M:=p¡matrix(4,4,[0,0,0,100,0.11,0,0,0,0,p,0,0,0,0,0.3,0.4]):Khai báo hàm s để tính các trị riêng củaM(p), và hàmmvđể tính giá trị riêng thực lớn nhất:

> s:=i¡eigenvals(M(i)):> mv:=p¡max(op(evalf(select(i¡Im(i)=0,[s(p)])))): mv(.2);

1.020683729

Tương ứng với một giá trị của p ta có được một trị riêng mv(p). Cách đơn giản nhất để tìmtrị riêng tương ứng bằng 1 là dùng phép nội suy từ một dãy các giá trị của p và mv(p).

Để kiến tạo hai dãy, trước tiên ta cho p thay đổi với bước 140

và trích ra vài cặp giá trị[p,mv(p)], chung quanh giá trị mv(p) 1. Thí dụ dưới đây mv(7) 1.

> lu:=seq([i/40.,mv(i/40)],i=4..9);

lu := [0.100000, 0.881605], [0.125000, 0.923588], [0.150000, 0.959814],

[0.175000, 0.991851], [0.20000, 1.02068], [0.225000, 1.04698]

Tách các giá trị của p và mv rồi dùng phép nội suy Lagrange (interp):> lx:=seq(lu[i,1],i=1..nops([lu])): ly:=seq(lu[i,2],i=1..nops([lu])):

> f:=interp([lx],[ly],x);

f := 255.999x5 254.933x4 + 108.139x3 + 26.1982x2 4.71089x + .587293

Sau cùng, ta giải phương trình f(x) = 1 và chỉ lấy nghiệm thực:> select(i¡is(Im(i)=0),[solve(f-1)]);

[.181816]

Vậy khi tỉ lệ trứng nở sang ấu trùng là 11%, phải chế ngự tỉ lệ ấu trùng thành nhộng ở tỉ lệ

Phạm Minh Hoàng 99

Page 116: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

p = 18.18% để có sự ổn định.Đến giai đoạn này điều chúng ta nghĩ ngay đến "tự động hóa" việc tính p theo m bằng cách

đặt các lệnh trên một chương trình có tên auto với tham số duy nhất là m. Tuy nhiên, ở đây cómột khó khăn là chọn các bước của p sao cho mv(p) 1 bằng cách tìm p sao cho mv(

p

50) 1

và mv(p + 1

50) ¡ 1.

Sau khi giải chỉ lấy nghiệm dương và nhỏ hơn 0.2.

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> auto:=proc(m)local M,s,mv,lu,lx,ly,f,i:M:=p¡matrix(4,4,[0,0,0,100,m,0,0,0,0,p,0,0,0,0,0.3,0.4]);s:=i¡eigenvals(M(i)):mv:=p¡max(op(evalf(select(i¡Im(i)=0,[s(p)]))));for i to 20 doif mv(i/50)<1 and mv((i+1)/50)>1 then break: fi:od:lu:=seq([j/50.,mv(j/50.)],j=i-2..i+3);lx:=seq(lu[i,1],i=1..nops([lu]));ly:=seq(lu[i,2],i=1..nops([lu]));f:=interp([lx],[ly],x);op(select(i¡is(Im(i)=0 and i<=.2 and i>0),[solve(f-1)]));end:

Bảng 5.1:

Nhập auto(0.11), chúng ta tìm lại được giá trị của p như ở (5.5) là 0.181818.Biến thiên của p theo m với p đi từ 0.11 đến 0.18 là:

> seq([i/100. ,auto(i/100)],i=11..18):

> plot([%],thickness=3,tickmarks=[3,3],labels=[m,p]); [hình 5.6(a)]Hình 5.6(a) cho thấy p rõ ràng là một hàm nghịch biến với m. Điều này hợp lí vì khi trứng

nở nhiều, cần thiết phải giảm số ấu trùng biến thành nhộng.Kiểm chứng bằng đồ thị 3dBây giời ta tìm lại những kết quả trên bằng cách dùng đồ thị 3D. Cụ thể m và p bây giời là

các biến hình thức (các dữ kiện còn lại giữ nguyên). Mục đích là biểu thị đường biểu diễn củatrạng thái ổn định theo hai biến m và p. Xin nhắc lại, trạng thái này có được khi trị riệng nhởhơn hay bằng 1. Để làm được điều này ta chỉ cần ssi tìm đa thức đặc trưng ma trận phụ thuộcm, p (tạm đặt là ω) rồi giải phương trình ω = 1. Các bước thực hiện:

Khai báo ma trận M(m, p), tính đa thức đăng trưng Ω(m, p) với biến x.

Giải phương trình Ω(m, p) = 1 và vẽ đồ thị (biến ps) đây là trạng thái ổn định theo haibiến m, p.

Nhập các giá trị m chạy từ 0.1 đến 0.3 vào nghiệm của phương trình ω(m, p) = 1 để vẽbiến thiên của m, p. Đồ thị này cho thấy sự thay đổi của p theo m trong không gian.

100 Phạm Minh Hoàng

Page 117: Maple Va Cac Bai Toan Ung Dung

5.4. Nuôi tằm

> M:=matrix(4,4,[0,0,0,100,m,0,0,0,0,p,0,0,0,0,0.3,0.4]):

> Omega:=charpoly(M,x);

Ω := x4 0.3x3 30mp

> rc:=solve(Omega=1,x);

rc := RootOf(r Z4 2 Z3 150mp 5)

Cho dù không thể giải bằng hình thức, nhưng vẫn sẽ vẽ được đồ thị của lời giải trong khônggian! Đây quả là một khả năng "siêu phàm" của Maple.

> ps:=plot3d(rc,m=0.05..0.2,p=0..0.25,grid=[15,15],axes=boxed):

Maple không thể giải bằng hình thức? Đúng ra là đã có lời giải nhưng nó đã giữ dưới dạngRootOf. Để có được dạng tường minh phải khởi đông môi trường EnvExplicit:

> EnvExplicit:=true:

> sc:=solve(Omega=1,x):

Maple tìm ra lời 4 giải (dài hai trang nên không in). Lúc đó nghiệm riêng của ma trận Mlà:[4]

> subs(m=0.11,p=0.1818,sc[1]);

1.239726281

Đến đây, ta có ứng với mỗi giá trị m ta có p = auto(m) và một nghiệm tương ứng củaphương trình ω(m, p) = 1. Như vậy, chom thay đổi ta sẽ vẽ được một đường trong không gian:

> f:=(u)¡[u,auto(u),subs(m=u,p=auto(u),sc[1])]:> pt:=pointplot3d([seq(f(0.1+0.02*i),i=0..10)],connect=true):

> display(pt,ps);

Hình 5.6:

Hình [5.6(b)] cho thấy sự thay đổi của p theo m trong không gian của những trị riêng 1và nó cho ta ước đoán giá trị của m một khi biết trước p.

4Các nghiệm khác hoặc âm hoặc phức

Phạm Minh Hoàng 101

Page 118: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

5.5 Bồn khuấy nước đều

Bài toán dưới đây thuộc loại kinh điển của phương trình vi phân. Đây là một trong các thídụ khá cụ thể như sự trao đổi nhiệt lượng, sự rơi tự do, sự gia tăng dân số. . . trong đó gia số củađại lượng tỉ lệ với hàm muốn tìm: ∆x(t) = kx(t).

1⃝ Cho một bồn nước chứa u lít nước (trong). Người ta đổ vào bồn một dung dịchchứa p gram muối trong 1 lit nước với vận tốc trung bình là alít/phút và khuấy đều.Giả sử đáy hồ có một vòi thoát nước cũng với vận tốc a. Hổi trong bao lâu nồng độmuối trong hồ đạt mức độ k gr/lít?2⃝ Cùng một câu hỏi nhưng giả sử bây giờ chúng ta có hai hồ nước A và B. Hồ Achứa 100 lít nước trong, hồ B chứa 100 lít nước hòa tan với 200 kg muối. Lượngmuối đổ vào A là 12 kg/phút. Các dữ kiện khác được trình bày như trong hình 5.7.

.

.A .B

.4lít/phút

.3lít/phút

.2lít/phút

.1lít/phút

.12kg/phút

Hình 5.7:

Trước khi giải ta cần lưu ý rằng lượng muối là một đại lượng được tính bằng gram và nồng

độ(

lượngthể tích

)có thứ nguyên là (gr/l).

1⃝ Gọi x(t) là lượng muối trong hồ ở thời gian t, nó sẽ bằng sự chênh lệch giữa lượng muốivào và lượng muối chảy ra. Phương trình vi phân của bài toán là:

> diff(x(t),t)=p*a-a*x(t)/u;d

dtx(t) = pa a

ux(t)

Lượng muối trong hồ ban đầu là 0, lời giải của phương trình là:> s:=factor(dsolve(%,x(0)=0));

s := x(t) = pu(1 + eat

u )

Khi t Ñ 8, x(t) Ñ pu (nhớ dùng assume để giả sử p, a, u ¡ 0). Điều này hợp lí vì lúc đótrong hồ chỉ toàn muối.

> Limit(rhs(s),t=infinity):%=simplify(value(%),assume=positive);

102 Phạm Minh Hoàng

Page 119: Maple Va Cac Bai Toan Ung Dung

5.6. Bài toán cân bằng môi sinh

limtÑ8pu(1 + eat

u ) = pu

Và thời gian để nồng độ muối đạt k gr/l (lưu ý răng s có thứ nguyên nên phải nhân k vớithể tích u):

> ss:=solve(rhs(s)=u*k,t);

ss := u

aln(

p k

p

)Nhập các số liệu tùy ý (kết quả tính bằng phút)

> subs(a=6,u=1000,k=1/2,p=1,s):%=evalf(%,5);5003

ln(2) = 115.53

Đường biểu diễn của x(t):> plot(subs(u=1000,a=6,p=1,rhs(s)),t=0..1000); [Hình 5.8(1)]

2⃝Với các số liệu như hình 5.7 và gọi x(t), y(t) là lượngmuối trongA vàB ta có hệ phươngtrình:

> sys:=diff(x(t),t)=12+y(t)/100-7*x(t)/100,

diff(y(t),t)=3*x(t)/100-3*y(t)/100;

sys =

$'&'%d

dtx(t) = 12 +

1100

y(t) 7100

x(t)d

dty(t) =

3100

x(t) 3100

y(t)

> s:=dsolve(sys,x(0)=0,y(0)=200):Lời giải của hệ là hai biểu thức cực kì phức tạp nhưng ta đều có:

> limit(rhs(s[1]),t=infinity):limit(rhs(s[2]),t=infinity):

limtÑ8 x(t) = limtÑ8 y(t) = 200

Điều này có nghĩa là với những dữ kiện đã cho, cả hai bồn nước đều "bão hòa" ở 200kg muối. Và đồ thị của sự thay đổi lượng muối là hình 5.8(b). Theo đó, lượng muối trongA, (x(t)đường nét liền) liên tục tăng từ 0 đến 200, trong khi lượng muối ở B(y(t), đường nétgián đoạn) giảm từ 200 xuống gần 100 rồi tăng trở lại đến mức bão hòa. Phải nói rằng nếu khôngcó Maple thì không dễ gì đoán ra sự thay đổi này.

> plot([rhs(s[1]),rhs(s[2])],t=0..300,view=[0..250,100..200],

linestyle=[1,3],tickmarks=[3,2]);

5.6 Bài toán cân bằng môi sinh

Quan sát sự tăng trưởng của rắn và chuột thì người ta thấy: Nếu chuột sinh sản quánhiều thì có hại cho canh nông. Phải có một lượng rắn vừa đử để tiêu diệt chuột.Nhưng nếu không có con chuột nào thì rắn cũng chết vì không có thức ăn. Câu hỏilà phải duy trì lượng rắn và chuột như thế nào để có được sự cân bằng môi sinh.

Bài toán được mô phỏng như sau. Gọi:

x(t), y(t) là số lượng rắn và chuột.

a là tỷ lệ suy giảm số lượng rắn nếu không có chuột.

c là tỷ lệ gia tăng số lượng chuột nếu không có rắn.

Phạm Minh Hoàng 103

Page 120: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

Hình 5.8: Đường biểu diễn của lượng muốn (a) trường hợp 1⃝ và (b) trường hợp 2⃝

b là hiệu suất sinh sản của rắn khi bắt được chuột. Nghĩa là phải bắt được b con chuột thìrắn mới sinh được một con.

d là xác suất chuột sống khi gặp rắn (!)

Phương trình của bài toán này là:> eq1:=diff(x(t),t)=(-a+b*y(t))*x(t);

> eq2:=diff(y(t),t)=(c-d*x(t))*y(t);$'&'%eq1 :=

d

dtx(t) = (a + by(t))x(t)

eq2 :=d

dty(t) = (c dx(t))y(t)

Áp dụng các dữ kiện thích ứng:> a:=1:b:=1/100:c:=2:d:=2/25:

Ta thấy khi không có rắn x = 0 ñ y1 = 2y ñ y(t) = Ae2t, số chuột sẽ tăng lên theo hàmmũ và khi đó sẽ dẫn tới việc bùng nổ dân số.

Và khi không còn chuột y = 0 ñ x1 = x ñ x(t) = Bet, số rắn sẽ giảm một cách nhanhchóng.

Trước tiên với 4 dữ kiện a, b, c, d chúng ta cũng đã có thể tìm ra một trạng thái ổn định bằng

cách giải hệ phương trình:"

(a + by(t))x(t) = 0(c dx(t))y(t) = 0

> solve(rhs(eq1), rhs(eq2),x(t), y(t));[x(t) = 0, y(t) = 0], [x(t) = 25, y(t) = 100]

Maple tìm ra hai cặp nghiệm tương ứng với hai điểm cân bằng. Cả hai nghiệm đều có nghĩalà với số lượng ban đầu có sẵn, số lượng này sẽ vĩnh viễn không đổi.

Bây giờ chúng ta thử với ba dữ kiện ban đầu và dùng mặt phẳng pha để thấy cụ thể sự tươnggiao giữa hai số lượng x(t), y(t):

> DEtools[phaseportrait]([eq1,eq2],[x(t),y(t)],o..310,

104 Phạm Minh Hoàng

Page 121: Maple Va Cac Bai Toan Ung Dung

5.7. S.A.R.S

[[x(0)=8,y(0)=100],[x(0)=12,y(0)=100],[x(0)=18,y(0)=100]],

arrows=none,linecolour=red,stepsize=.1);

Quan sát hình 5.9 ta thấy cả 3 đường biểu diễn đều xoay quanh một điểm cân bằng: x 25, y 100

Vậy cần phải duy trì số lượng chuột khoảng gấp 4 lần số lượng rắn để có sụ ổn định môisinh.

Hình 5.9:

5.7 S.A.R.S

[5]Một bệnh dịch lan truyền trong cộng đồng N người khép kín. Gọi pn là số ngườichưa bị nhiễm ở ngày n và Qn là người đã bị nhiễm. Giả sử mỗi ngày số người mớibị nhiễm tỷ lệ với số lần tiếp xúc giữa người đã nhiễm với người chưa nhiễm. Môphỏng bài toán trong hai trường hợp:

Bệnh kéo dài nhưng không dẫn tới chết người.

Bệnh không chết người và nhờ có thuốc đặc trị mỗi ngày có một số phần trămkhỏi bệnh và miễn dịch

Giải với các đại lượng rời rạc

Trong bài toán này, vấn đề nằm ở sự kiện số lần tiếp xúc giữa người đã nhiếm với ngườichưa nhiễm. Để mô phỏng sự kiện này ta có thể lí luận rằng việc này chỉ xảy ra khi cả hai nhóm

5Chủ đề trích từ [26]

Phạm Minh Hoàng 105

Page 122: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

người này đều phải "xuất hiện" cùng một lúc. Nói khác đi nó là tích của hai đại lượng Pn và Qn

cũng như tỷ lệ mà ta gọi là a.a) Ở trường hợp thứ nhất chúng ta nhận định: Số người chưa bị nhiễm ngày mai bằng số

người chưa bị nhiễm đến ngày hôm nay trừ đi số người bị nhiễm trong ngày hôm nay. Tươngtự, số người bị nhiễm ngày mai bằng số người đã bị nhiễm đến ngày hôm nay cộng với số ngườibị nhiễm đến ngày hôm nay.

Hệ phương trình sai phân trong trường hợp này là:!Pn+1 = Pn aPnQnQn+1 = Qn + aPnQn

(5.7.1)

Trước tiên, ta lưu ý rằng nếu cộng hai vế của hệ thì ta có Pn+1 + Qn+1 = Pn + Qn tức làtổng của hai nhóm luôn bằng hằng số (cộng đồng khép kín).

Hệ (5.6) là một hệ phức tạp không có lời giải giải tích, mặt khác:-đại lượng tích pnQn trong hệ trên đã vô hiệu hóa cách giải bằng ma trận.-trong Maple, hàm số hợp "bất lực" khi có hai biến trở lên.Tóm lại các tính độc nhất là lập trình:

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> prg1:=proc(P,Q,a,n)global lP, lQ,vP,vQ,P1,Q1,i:lP:=NULL:lQ:=NULL:P1:=P:Q1:=Q:for i to n dovP:=round(P1-a*P1*Q1):vQ:=round(Q1+a*P1*Q1):lP:=lP,vP:lQ:=lQ,vQ:P1:vP:Q1:=vQ:od:end

Bảng 5.2:

n là số vòng lặp (ở đây là số ngày). Chúng ta chạy chương trình với:

P0 = 999, Q0 = 1, a =1

100, và 16 ngày.

> prg1(99,1,0.01,16):

Tiếp theo chúng ta khai báo tiếp các lệnh cần thiết để vẽ đồ thị. Để nêu bật tính cách rời rạccủa các biến, chúng ta sẽ in ra các đường biểu diễn bằng các chấm và nối chúng với nhau:

> gP:=seq([i,lP[i]],i=1..16):gQ:=seq([i,lQ[i]],i=1..16):

> gP1:=plot([gP],symbol=box,style=point):gP2:=plot([gP]):

> gQ1:=plot([gQ],symbol=cross,style=point):gQ2:=plot([gQ]):

> display(gP1,gP2,gQ1,gQ2,tickmarks=[3,3]);

Quan sát đồ thị hình 5.10(a) thì rất đơn giản. Số người nhiễm ngày càng tăng với tỉ lệ 11000

,chỉ 13 ngày là tất cả cộng đồng bị nhiễm.

Mặt khác, khi cộng các phương trình của (5.6), ta luôn có Q(t) + P (t) = 1000 và có thểkiểm chứng:

> seq(map(round,[lP[i],lQ[i],lP[i]+lQ[i]]),i=5..13);

[968, 32, 1000], [937, 63, 1000], [878, 122, 1000], [771, 229, 1000],

106 Phạm Minh Hoàng

Page 123: Maple Va Cac Bai Toan Ung Dung

5.7. S.A.R.S

Hình 5.10: Lây lan của bệnh dịch khi không có và khi có thuốc chữa

[594, 406, 1000], [353, 647, 1000], [125, 8785, 1000], [16, 984, 1000], [0, 1000, 1000]

b) Trong trường hợp thứ hai, ta phải đưa thêm vào biến Rn thể hiện số người bị nhiễmnhưng đã khỏi và miễn dịch tại ngày thứ n + 1. Gọi b là tỷ lệ số người này. Hệ (5.6) trở thành:#

Pn+1 = Pn aPnQnQn+1 = Qn + aPnQn bQnRn+1 = Rn + bQn

(5.7.2)

Và dĩ nhiên chúng ta sẽ phải giải bằng lập trình. Chương trình không thay đổi gì, chỉ cầnthêm vào các biến mới.

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼> prg2:=proc(P,Q,R,a,b,n)

global lP, lQ,lR,vP,vQ,vR,P1,Q1,R1,i:lP:=NULL:lQ:=NULL:lR:=NULL:P1:=P:Q1:=Q:R1:=R:for i to n dovP:=round(P1-a*P1*Q1):vQ:=round(Q1+a*P1*Q1-b*Q1):vR:=R1+b*Q1:lP:=lP,vP:lQ:=lQ,vQ:lR:=lR,vR:P1:=vP:Q1:=vQ:R1:=vR:od:end

Bảng 5.3:

Chúng ta chọn a = .001, b = .1 và thực hiện 20 vòng lặp:> prg2(999,1,0,.001,.1,20):

> gP:=seq([i,lP[i]],i=1..20):

> gQ:=seq([i,lQ[i]],i=1..20):

Phạm Minh Hoàng 107

Page 124: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

> gR:=seq([i,lR[i]],i=1..20):

> gP1:=plot([gP],symbol=box,style=point):gP2:=plot([gP]):

> gQ1:=plot([gQ],symbol=cross,style=point):gQ2:=plot([gQ]):

> gR1:=plot([gR],symbol=circle,style=point):gR2:=plot([gR]):

> display(gP1,gP2,gQ1,gQ2,gR1,gR2);

Quan sát đồ thị hình [5.10(b)] ta cũng thấy sự giảm thiểu liên tục của số người chưa bịnhiễm và tăng liên tục của số người bị nhiễm. Đến ngày 15 mọi người đều bị nhiễm và đó làkhởi điểm của sự giảm thiểu liên tục của số người đã bị nhiễm. Nếu ta đi xa hơn, đến ngày thứ55 thì tất cả mọi người sẽ khỏi bệnh.

Giải với các đại lượng liên tục

Với mô hình liên tục, P (t) là số người chưa nhiếm và Q(t) là số người đã bị nhiễm ở thờiđiểm t. Chúng ta sẽ kết luận rằng tốc độ lan truyền tỷ lệ với số lần tiếp xúc a giữa P (t) vàQ(t). Xét thêm một nhận định bổ sung là mỗi ngày có một tỷ lệ không đổi b của nhữngngười đã nhiễm sẽ khỏi bệnh (và lại có thể bị nhiễm hoặc miễn dịch). Số người lhoir vàmiễn dịch là R(t). Bài toán này chính là hệ (5.7) với các đại lượng liên tục:$''''&''''%

d

dtP (t) = aP (t)Q(t)

d

dtQ(t) = aP (t)Q(t) bQ(t)

d

dtR(t) = bQ(t) (5.7.3)

Bài toán dĩ nhiên không có lời giải giải tích:> dsolve(eq1,eq2,eq3,P(0)=99,Q(0)=1,R(0)=0,P(t),Q(t),R(t));

Bắt buộc phải giải bằng số, ta nhập các dữ kiện ban đầu. Giả sử tỷ lệ gặp nhau trong cộngđồng là a =

1

1000và tỷ lệ khỏi bệnh là b =

1

10. Ta giải và gán lời giải vào biến sol:

> a:=0.001:b:=0.1:

> CI:=P(0)=999,Q(0)=1,R(0)=0:

> sol:=dsolve(eq1,eq2,eq3,CI,P(t),Q(t),R(t),type=numeric);Theo dự tính thì chúng ta sẽ thay đổi các giá trị của a, b cũng như sẽ khai triển bài toán này

về các dạng phức tạp hơn, và mỗi lần tính toán chứng ta sẽ xuất ra các kết quả dưới dạng đồ thịhoặc bảng số. Vì thế cách hay nhất là thiết lập các hàm để giải quyết những công việc sẽ lặp đilặp lại nhiều lần. Trước tiên chúng ta khai báo hàm gr, hàm Maple này nhận 3 biến x, u, v vớix là tên của hàm số muốn in, u là giá trị tối đa theo hoành độ và v là nét in:

> gr:=(x,u,v) ¡plot(seq([i,eval(x(t),sol(i/1))],i=0..u),linestype=v):Hàm Maple thứ hai dùng để in ra mẫu tự tượng trưng cho hàm trên đồ thị:

> tx:=(x,y,a)¡textplot([x,y,a]):> display([gr(P,18,1),gr(Q,18,3),gr(R,18,4),

tx(5,1000,P),tx(12,670,Q),tx(17,650,R)],tickmarks=[3,3]);

Xem hình 5.11(a) thì ta tìm lại được kết quả cùng 5.10(b).Ta thiết lập một hàm gt để trích ra các giá trị của P,Q, R từ hàm sol. Hàm gt nhận hai

biến: x là tên của hàm và k là giá trị của thời điểm (hoành độ) gt nhận tối đa 5 chữ số:> gt:=(x,k)¡evalf(eval(x(t),sol(k)),5):

108 Phạm Minh Hoàng

Page 125: Maple Va Cac Bai Toan Ung Dung

5.7. S.A.R.S

Hình 5.11: Lây lan của bệnh dịch với b =1

10và b =

1

2

> for u from 9.0 to 10 by .2 do

print (u,gt(P,u),gt(Q,u),gt(R,u),gt(P,u)+gt(Q,u)+gt(R,u)) od:

Bảng trên đây cho thấy giá trị của các số liệu ngày thứ 9 đến ngày thứ 10. Chúng ta có từtrái sang phải: ngày, P,Q, R và P +Q+R. Ta luôn có đại lượng sau cùng này bằng 1000 (hoặcxấp xỉ 1000 vì chỉ lấy hai số lẻ) vì đây là trường hợp cộng đồng khép kín. Mặt khác, vì đây làcác đại lượng liên tục, nên chúng ta có thể có được các giá trị nằm trong khoảng [9, 10].

Bây giờ ta giả sử b = 0.5 nghĩa là tỷ lệ khỏi bệnh nhiều gấp 5 lần:> b:=.5:

> sol:=dsolve(eq1,eq2,eq3,CI,P(t),Q(t),R(t),type=numeric);

> display([gr(P,30,1),gr(Q,30,3),gr(R,30,4),

> tx(9.5,900,P),tx(17,170,Q),tx(22,700,R)],tickmarks=[3,3]);

Hình 5.11 (b) cho thấy đến ngày thứ 30 coi như mọi người đã khỏi bệnh.

c) Bây giờ ta giả sử có tiêm chủng. Việc tiêm chủng sẽ chữa khỏi bệnh và làm miễn dịch,vì thế nên chỉ những người chưa nhiễm bệnh mới cần tiêm chủng. Gọi số đã được tiêm

chủng là S(t), ta chọn một mô hình đơn giản nhất làdS

dt= cP (t), vậy với c là một hằng

số có nghĩa là số người có khả năng nhiễm bệnh (số người chưa nhiễm) càng cao thì tốcđộ tiêm chủng càng cao.

$'''''''&'''''''%

d

dtP (t) = aP (t)Q(t) cP (t)

d

dtQ(t) = aP (t)Q(t) bQ(t)

d

dtR(t) = bQ(t)

d

dtS(t) = cP (t)

Phạm Minh Hoàng 109

Page 126: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

(5.7.4)

> c:=.1:b:=.1: CI:=P(0)=999,Q(0)=1,R(0)=0:

> sol:=dsolve(eq1,eq2,eq3,CI,P(t),Q(t),R(t),type=numeric);> display([gr(P,20,1),gr(Q,20,3),gr(R,20,4),gr(S,20,3),

> tx(3,800,P),tx(8,160,Q),tx(20,220,R),tx(20,220,S)],tickmarks=[3,3]);

Quan sát Hình 5.12 (a) thì thấy số người khỏi bệnh tự nhiên hoặc do tiêm chủng càng ngàycàng tăng, và nếu ta đi đến ngày thứ 50 thì chỉ còng 6 người bị nhiễm như bảng dưới đây (để cóthể in trên hai cột, ta bỏ bớt đi các số lẻ):

∼∼∼∼∼∼∼∼∼∼∼

> for u from 45 to 50 doprint(u,gt(P,u),gt(Q,u),gt(R,u),gt(S,u),round(gt(P,u)+gt(Q,u)+gt(R,u)+gt(S,u)))od:

Bảng 5.4:

Hình 5.12: Lây lan của bệnh dịch trường hợp c) và d)

d) Bây giờ ta lại thêm một giả thuyết khác: phải tính đến tỷ lệ sinh sản và chết tự nhiên,tuy nhiên cộng đồng vẫn còn khép kín, nghĩa là không có di cư và nhập cư. Để đơn giảnta giả sử bệnh dịch không gây chết người và cũng không có yếu tố tiêm chủng. Gọi f làtỷ lệ sinh sản và g tỷ lệ chết tự nhiên. Bài toán được mô phỏng theo hệ:$''''&''''%

d

dtP (t) = aP (t)Q(t) + f(P (t) + Q(t) + R(t)) gP (t)

d

dtQ(t) = aP (t)Q(t) bQ(t) gQ(t)

d

dtR(t) = bQ(t) gR(t) (5.7.5)

110 Phạm Minh Hoàng

Page 127: Maple Va Cac Bai Toan Ung Dung

5.7. S.A.R.S

Với a = .001, b = .1, f = .05, g = .02 ta làm lại các lệnh như trên:> display([gr(P,30,1),gr(Q,30,3),gr(R,30,4)]);

Quan sát đồ thị 5.12 (b) chúng ta thấy đơn thuần là trường hợp a) (trường hợp có tiêmchủng) nhưng trong một cộng đồng có sinh và chết tự nhiên. Số người không nhiễm liên tụcgiảm nhưng với tỷ lệ khỏi và tỷ lệ sinh sản lớn hơn so với tỷ lệ chết tự nhiên lên sau khoảng 30ngày, số người khỏi bệnh chiếm đa số. Nên lưu ý tổng số người trong cộng đồng đã tăng lêngấp đôi:

∼∼∼∼∼∼∼∼∼∼∼

> for u from 25 to 30 doprint(u,gt(P,u),gt(Q,u),gt(R,u),round(gt(P,u)+gt(Q,u)+gt(R,u)))od:

Bảng 5.5:

Chúng ta có thể tiếp tục thay đổi các trị số của a, b, c, f, g hoặc thêm và các giả thuyết đểphức tạp vấn đề.

Phạm Minh Hoàng 111

Page 128: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

5.8 Bài đọc thêm: Eratosthene

Eratosthene(Cyrene 276 - Alexandrie 194 trước Công Nguyên)

Sinh ra vào thế kỷ thứ ba trước Công Nguyên tại Cyrene, ngày nay là thành phố Shahhat (Libye).Trong lịch sử hiếm thấy một nhà khoa học và nhất là khoa học cổ đại mà lại tinh thông nhiềulãnh vực như ông.

Về sử, ông đã nghiên cứu về dòng các triều đại Ai Cập cổ. Về Địa, ông đã khảo sát về cácđại lục, đại dương, về gió, về núi và về các vùng khí hậu khác nhau. Eratosthene đã để lại chohậu thế một tấm bản đồ sau này được đánh giá là tại liệu độc nhất về cơ sở của môn địa lý: Tấmbản đồ này xác định vòng cung xích đạo nằm xấp xỉ vĩ tuyến 47o42. Hai mươi thế kỷ sau, HànLâm Viện khoa học Pháp tính được chính xác là 47o40! Tuy nhiên nhân loại biết đến ông nhiềuhơn trong hai lãnh vực là Toán và Thien văn học. Eratosthene đã thiết lập được lịch các nhậtthực và danh sách của 675 ngôi sao. Tuyệt vời hơn, ông đã tính được độ nghiêng của trái đất là23o51. Eratosthene cúng là người đầu tiên xây dựng được một đài thiên văn.

Hai mươi thế kỷ sau ngày ông mất, cộng đồng khoa học còn nhớ đến hai công trình bất hủlà "sàng Eratosthene" và cách xác định chu vi trái đất chỉ bằng tính toán.

"Sàng Eratosthene"Đây là một phương pháp di tìm các số nguyên tố. Số nguyên tố là một số chỉ chia chẵncho 1 và cho chính nó. Thí dụ: 11, 23 là số nguyên tố, 15, 27 không là nguyên tố.Thuật toán của Eratosthene để tìm các số nguyên tố nhỏ hơn n như sau: Viết tắt các số lẻ từ 3 đến n(3, 5, 7, 9...)

Bắt đầu bằng 3, tìm và gạch bỏ những số chia chẵn cho 3

Làm y như vậy với 5 rồi 7, 9... và chấm dứt khi tới?

n

Kết quả là những số chưa gạch bỏ (và thêm số 2 là số nguyên tố đầu tiên).Theo như thuật toán này ta phải có (n = 120):2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49,51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97,99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119,

Lập trình bằng MapleTrong chương trình crible sau đây, để tiện lợi, mỗi khi tìm được một bội số của mộtphần tử, ta sẽ cho nó bằng 0. Kết quả sau cùng sẽ là những số khác 0.Sau khi nhập chương trình trang sau, ata có các số nguyên tố nhỏ hơn 120 là:

> crible(120);[6][2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,

59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]

6Chương trình crible (ở trang sau) chỉ có thể áp dụng cho n 120. Lý do là vì Maple không chấp nhận làmviệc (chỉnh sửa) trên một dãy (list) có trên 200 phần tử, bắt buộc phải đổi sang array. Sàng Eratosthene cũngchỉ được áp dụng cho những só tương đối nhỏ, vì độ phức tạp thuật toán là O(

?n)

112 Phạm Minh Hoàng

Page 129: Maple Va Cac Bai Toan Ung Dung

5.8. Bài đọc thêm: Eratosthene

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> crible:=proc(n)local i,j,p,q,z,u:p:=[2,seq(3+2*i,i=0..n/2-1)];:u:=floor(evalf(sqrt(n))):for i to u do

for j from i+1 to nops(p) doif p[j]>0 and p[i]>0 then

if irem(p[j],p[i])=0 thenp[j]:=0:

fi:fi:od:od:select(i¡i>0,p);end:

Bảng 5.6:

Đo chu vi trái đấtEratosthene quan sát vào "đúng ngọ", mặt trời chiếu thẳng xuống một cái giếng ở Syenekhông tạo ra bóng trên thành giếng. Điều đó có nghĩa là lúc ấy đường thẳng đi từ tâm tráiđất, xuyên qua giếng sẽ đụng mặt trời. Vào cùng thời điểm ấy, mặt trời chiếu thẳng xuốngmọt cái tháp ở thành phố Alexandrie và tạo một cái bóng trên mặt đất. Điều đó có nghĩalà mặt trời không nằm trên đường thẳng đi qua tháp. Bằng những tính toán hình học đơngiản, Eratosthene đã tính được góc hợp bởi tia sáng mặt trời và tháp là 7o2[7]Eratosthene xấp xỉ 7o2 tương đương với 787.5 km là khoảng cách đường chim bay từSyene đến Alexandrie, vậy 360o tương đương với 360 787.5/7.2 = 39.375 km là chuvi trái đất. Một con số cực kỳ chính xác vào thời bấy giờ.Tuy nhiên đó là những tính toán và suy luận của chúng ta ở thế kỷ 21, vào thời Eratosthenechuyện không đơn giản như thế:

Cách tính của Eratosthene chỉ đúng khi trái đất tròn! Nhưng chân lý này chỉ được chấpnhận vào thế kỷ 13. Trước đó người ta vẫn nghĩ là nó phẳng như tấm gương. Đó chínhlà cái hay của Eratosthene khi đoán ra độ cong của trái đất khi quan sát cái bóng thápAlexandrie.

Khi Eratosthene nhìn thấy mặt trời đứng bóng ở giếng Syene, làm thế nào cùng lúc ấy ôngta biết được góc nghiêng 7o2 ở một nơi cách đó 800 km? (thời ấy có lẽ chưa có điện thoạihoặc "mô-bai")

Để lại cho hậu thế những khám phá siêu việt nhưng Eratosthene lại ra đi trong buồn tủivô hạn. Về cuối đời ong bị mù cả hai mắt. Đối với nhà khoa học đã từng phát minh ra đàithiên văn và sống suốt đời với vũ trụ sâu thẳm và đầy huyền bí thì mất đôi mắt là mất tấtcả. Sử sách chép rằng ông đã nhịn đói cho đến chết.

7Các tia sáng mặt trời song song với nhau vì coi như đến từ vô cực.

Phạm Minh Hoàng 113

Page 130: Maple Va Cac Bai Toan Ung Dung

Chương 5. Bài toán mô phỏng

.

.Giếng Syene

.Tháp Alexandrie

.7.2o

.7.2o

.87.5km.TráiĐất

Hình 5.13: Thuật toán "Sàng Eratosthene" và cách đo chu vi trái đất.

Để ghi nhớ công lao của Eratosthene, và cũng như để ong sống mãi với niềm đam mê,người ta dùng tên ông để đặt tên cho một thiên thạch. Thiên thạch mang mã số 3251.

114 Phạm Minh Hoàng

Page 131: Maple Va Cac Bai Toan Ung Dung

Chương6

Bài toán kích thước hình xoay

Đây là một ứng dụng trực tiếp của tích phân. Cho hàm y = f(x). Phép quay của đồ thịf(x) quanh trục Ox sẽ tạo ra một khối có hình dạng tùy thuộc vào f(x) nhưng có tiết diện tròn.Để tính thể tích hoặc diện tích khối này (gọi tắt là tính kích thước), ta "cắt" nó ra làm nhiều látthẳng góc với Ox có chiều dày dx vô cùng bé (có thể xem là những hình trụ) mà ta có thể tínhkích thước của nó dễ dàng. Và để có kích thước toàn khối, ta lấy tích phân trên miền tương ứng.

Tương tự, khi hàm xoay quanh Oy ta phải tính hàm đảo x = f1(y) rồi làm như trên.Bài toán kích thước qua tích phân này có một ứng dụng cụ thể khi hàm f(x) được tính ra

bằng các phép nội suy Lagrange, spline, nghĩa là khi vật thể có một hình dạng bất kỳ.Trong phần này chúng ta cũng sẽ dùng một ưu điểm của Maple là phần đồ họa ba chiều

tubeplot để vẽ các đường cong phức tạp.Chúng ta bắt đầu bằng các đường cong quen thuộc.

6.1 Diện tích, thể tích ellipse và ellipsoid

Diện tích một ellipse

Cho một ellipse có bán kích theo (x, y) là (a, b). Phương trình ellipse có dạng:> eq:=xˆ2/aˆ2+yˆ2/bˆ2=1;

eq :=x2

a2+

y2

b2= 1

Gọi y = f(x) là hàm số theo x rút ra từ phương trình ellipse:> s:=solve(eq,y);

s :=

?x2 + a2b

a,?x2 + a2b

a

Nếu chúng ta muốn chọn nghiệm dương, cách hay nhất là đi tìm dấu cảu nó:> s1:=op(select(i¡sign(i)>0,[s]));

s1 :=

?x2 + a2b

a (6.1.1)

Để tính diện tích ellipse, ta chia diện tích nằm giữa đồ thị f(x) và trục hoành ra nhiều phần

Page 132: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

vô cùng nhỏ mà ta có thể xem như là những hình chữ nhật [Hình 6.1 (a)] [1]. Chiều rộng củamỗi hình chữ nhật là dx và chiều cao là f(x). Diện tích của hình chữ nhật sẽ là dS = f(x)dx.Và diện tích của ellipse là:

S =»S

dS =»S

f(x)dx

. .x

.y

.

.y

.x

.x

.f(x)

.dx

Hình 6.1: ellipse và ellipsoid

> int(s1,x=0..a);

limxÑa

12a

b(x?x2 + a2 + a2 arctan(

x?x2 + a2))

> assume(a>0):value(%);14aπb

Vì ta lấy nguyên hàm từ 0 đến a nên kết quả trên là một phần tư ellipse. Vậy diện tích củacả ellipse là πab. Và khi a = b = R, ta tìm lại diện tích hình tròn πR2.

Thể tích một ellipsoid

Bây giờ ta xét một ellipsoid được tạo thành bởi phép quay quanh trục Ox của ellipse trên.Ellipsoid vì thế sẽ có tiết diện tròn (nếu ta cắt thẳng góc với trụcOx) và có hình dáng giống mộttrái dưa Thái.

Để tính thể tích, ta tưởng tượng cắt trái dưa thành nhiều lát thật nhỏ [Hình 6.1 (b)] mà tacó thể xem như là những hình trụ chiều dày dx, bán kính f(x). Thể tích của mỗi hình trụ sẽ làdV = πf(x)2dx, và thể tích của trái dưa Thái sẽ là:

V =»V

dV =»V

πf(x)2dx

> V[x]=int(Pi*s1ˆ2,x=-a..a);

Vx =43πab2

Tương tự, nếu ellipse xoay quanh Oy, ta sẽ có một trái bí dợ bán kính là a. Để tính thẻ tích,ta làm y như trên nhưng bây giờ ta sẽ cắt thành từng lát thẳng góc với Oy, mỗi lát có chiều dàydy, bán kính x = f1(y). Ta có thể dùng isolate để tách ra x2 thay vì y như trường hợp trên:

> isolate(eq,xˆ2);

1Xem cách vẽ hình này ở cuối chương.

116 Phạm Minh Hoàng

Page 133: Maple Va Cac Bai Toan Ung Dung

6.1. Diện tích, thể tích ellipse và ellipsoid

x2 =(

1 y2

b2

)a2

> Int(Pi*rhs(%),y=-b..b):%=value(%);b»

b

π

(1 y2

b2

)a2dy =

43πba2

Và khi a = b = R, ellipsoid biến thành hình khối tròn như quả dưa hấu có thể tích là:> subs(a=R,b=R,rhs(%));

43πR3

Diện tích một ellipsoid

Khi ellipse xoay quanh Ox, diện tích bao quanh được tính bằng cong thức:dS = 2πf(x)

a1 + [f 1(x)]2 (6.1.2)

> dS := 2*Pi*s1*sqrt(1+diff(s1, x)ˆ2);

dS :=2π

a

?x2 + a2b

d1 +

b2x2

(x2 + a2)a2

Và diện tích trái dưa Thái sẽ là:

πb(2b?a2 + b2 + a2 ln(

?b a

?b + a + b) a2 ln(?b a

?b + a + b)?a2 + b2

Khủng khiếp! Làm thế nào để biết công thức này đúng? Ta thử cho a = b để tìm lại diệntích khối tròn (ta không thể làm a:=b vì mẫu số sẽ bằng không). Bắt buộc phải tính giới hạn:

> limit(%,a=b):

Kết quả không in ra đây vì Maple không tìm ra giới hạn và cũng sẽ xuất lại y như kết quảtrên, lý do là Maple gặp khó khăn khi không biết dấu của b.

> assume(b>0): value(%);

4πb2

Kết quả này rõ ràng "có vấn đề" vì diện tích không thể âm!. Đây có lẽ là một bug củaMaple trong quá trình đơn giản các biểu thức cồng kềnh trên. Để khắc phục, ta cần phải xácđịnh (assume) a, b là các số dương trước khi lấy nguyên hàm. Tuy nhiên bây giờ ta sẽ làm mộtcách khác và bằng lý luận như sau:

Biểu thức của s1 (6.1) được rút ra một cách rất "trực quan" từ hai nghiệm của phép giảisolve trước đó, hơn nữa, biểu thức này có căn nên khi lấy đạo hàm sẽ rất phức tạp và hâu quảnhư ta đã thấy. Trong những trường hợp này ta phải:

- Thay vì solve trên biến y, ta thực hiện trên y2. Làm như thế ta không phải mất công chọnra một nghiệm (với những trục trặc về sau).

- Đơn giản đến mức tối đa biểu thức trên hoặc các phép tính dùng biểu thức trên trước khilấy nguyên hàm.

> u := sqrt(solve(eq, yˆ2))

u :=

cb2(a2 + x2)

a2

Ta bình phương diện tích xung quanh của một lát (theo công thức 6.2) nên để triệt tiêu cănsố trước khi đơn giản:

> (2*Pi*u*sqrt(1+diff(u, x)ˆ2))ˆ2:

Phạm Minh Hoàng 117

Page 134: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

> simplify(sqrt(%), symbolic);

2πb?

a4 a2x2 + b2x2

a2

Và nguyên hàm sẽ có dạng đơn giản hơn rất nhiều (!):> s := simplify(int(%, x = -a .. a), symbolic)

2πb?a2 b2

(b?

a2 b2 + a2 arctan(?

a2 b2

b))

Đó chính là diện tích mặt của ellipsoid, và khi a = b = R, ta sẽ có diện tích hình cầu:> simplify(subs(b=R,limit(%,a=b)),symbolic);

4πR2

6.2 Thể tích sinh ra bởi phép quay quanh trụcOx của một hàm

Cho hàm f(x) bất kỳ và gọi Hx là hình sinh ra bởi phép quay trục Ox của f(x). Để tínhthể tích V của Hx, ta cắt nó ra thành nhiều lát thẳng góc với Ox có chiều dày dx và bán kínhđáy f(x). Thể tích của mỗi lát là dV = πf(x)2dx và thể tích của Hx là:

V =»

Hx

dV =»

Hx

πf(x)2dx

Ví dụ tích thể tích hình xoay f(x) =1

2x3, miền giới hạn x P [0, 1]

> f:=y=xˆ3/2;

Ta có dV = πrhs(f)2dx, thể tích sinh ra bởi phép quay của f(x) là:> Int(Pi*rhs(f)ˆ2,y=0..1):%=value(%):%=evalf(rhs(%),4);

1»0

14πx6dx =

128

π = 0.1122 đơn vị thể tích[2]

Câu lệnh sau vẽ đồ thị f(x), và hình xoay quanh Ox (Hình 6.2):> with(plots): alias(OP='axes=normal,labels=[x,y,z]'):

> plot(rhs(f),x=0..1,tickmarks=[2,2]);

> tubeplot([x,0,0],x=0..1,radius=rhs(f),

tubepoints=80,orientation=[-79,96],tickmarks=[0,3,3],OP);

6.3 Thể tích sinh ra bởi phép quay quanh trụcOy của một hàm

Lý luận tương tự, nhưng bây giờ ta tính x = f1(y) và chọn y P [0,1

2]:

> isolate(f,x);

x = RootOf( Z3 2y)

> w:=allvalues(%);

w := x = 2( 13)y( 1

3), x = 2( 1

3)y( 1

3)(1)(1

3), x = 2( 13)y( 1

3)(1)(1

3) (6.3.1)

2Kể từ đây, để đơn giản ta không cần ghi đơn vị

118 Phạm Minh Hoàng

Page 135: Maple Va Cac Bai Toan Ung Dung

6.4. Trường hợp một hàm nội suy

Hình 6.2: Đồ thị y = f(x) =1

2x3 và hình xoay quanh Ox

> assume(y>0):select(i¡is(rhs(i)>0),[w]);x = 2( 1

3)y( 1

3)

> Int(Pi*rhs(op(%))ˆ2,y=0..1/2):%=value(%):%=evalf(rhs(%),4);( 12»

0

π2( 13)y( 1

3)dy =

125

4( 13)π2( 1

3)

)= 0.9246

Ta cũng có thể làm đơn giản hơn nhiều bằng cách isolate x3 thay vì x:> y:='y':vx:=rhs(isolate(f,xˆ3))ˆ(1/3):

> Int(Pi*vxˆ2,y=0..1/2):%=value(%):%=evalf(rhs(%),4);

Các lệnh sau vẽ đồ thị f1(y) và hình xoay quanh Oy (Hình 6.3). Tuy nhiên Maple hiểnthị mặc định nằm ngang nên muốn thấy rõ là hình xoay quanh Oy, phải tự quay để dựng đứnghình lên bằng lệnh orientation cũng như hiển thị tên trục:

> plot(vx,y=0..1/2,tickmarks=[2,2]);

> tubeplot([0,y,0],y=0..1/2,radius=vx,

tubepoints=80,orientation=[63,156],tickmarks=[3,0,3],OP);

6.4 Trường hợp một hàm nội suy

Cho hai dãy X,Y xác định hoành và tung độ của một đồ thị. Dùng phép nội suy để tínhhàm và tính diện tích khi xoay quanh Ox:

> X:=[seq(k$k=0..8)]:

> Y:=[2,2,1.7,1,1.6,1.4,.8,.6,.6]:

Dùng nội suy spline chính xác hơn Lagrange:> h:=spline(X,Y,x,cubic):

Phạm Minh Hoàng 119

Page 136: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

Hình 6.3: Đồ thị x = f1(y) và hình xoay quanh Oy

Thể tích của hình xoay quanh Ox là:> Digits:=4:Int(Pi*hˆ2,x=0..8):%=value(%);

a

> plot(h,x=0..7,0..2.2,scaling=constrained,tickmarks=[2,2]);> tubeplot([x,0,0],x=0..7,radius=h,scaling=constrained,

tubepoints=80,orientation=[63,156],tickmarks=[3,0,3],OP);

Trong trường hợp này ta không thể có được h1(y) và hình xoay quanh Oy.

6.5 Tìm thể tích sinh ra bởi phép quay của phần giao của hai hàm

Khảo sát phần giao của hàm f(x) =x3

2(như mục 6.2) và đường thẳng y = 2x.

Xoay quanh Ox

> y:='y': eq1:=y=xˆ3/2; eq2:=y=2*x;

eq1 := y =12x3

eq2 := y = 2x

Thể tích muốn tìm bằng thể tích lớn trừ thể tích nhỏ. Trước tiên ta phải tìm gao điểm củahai hàm.

> solve(eq1,eq2);tx = 0, y = 0u, tx = 4, y = 2u, tx = 4, y = 2u

> plot([rhs(eq1),rhs(eq2)],x=0..2,0..4.2); [Hình 6.5]

> g1:=tubeplot([x,0,0],x=0..2,radius=rhs(eq1),tickmarks=[3,2,2],OP):

120 Phạm Minh Hoàng

Page 137: Maple Va Cac Bai Toan Ung Dung

6.5. Tìm thể tích sinh ra bởi phép quay của phần giao của hai hàm

Hình 6.4: Đồ thị một hàm nội suy và hình xoay quanh Ox

> g2:=tubeplot([x,0,0],x=0..2,radius=rhs(eq2),tickmarks=[3,2,2],OP):

> display(g2,g1); [Hình 6.6 (a)]> Int(Pi*(rhs(eq2)ˆ2-rhs(eq1)ˆ2),x=0..2):%=value(%):%=evalf(rhs(%),5);( 2»

0

π(4x2 14x6)dx =

12821

π

)= 19.149

Lưu ý: Vẽ hình xoay quanh Ox [Hình 6.6 (a)], ta giới hạn hàm eq1 =1

2x3 trong khoảng

[1, 2] vì nếu không nó sẽ bị che khuất bởi hàm eq2 = 2x bao bên ngoài.

Xoay quanh Oy

> s2:=rhs(isolate(eq2,x));

s2 :=12y

Dùng lại biểu thức w(6.3) (biểu thức tính eq11 (y)):

> Int(Pi*rhs(w[1])ˆ2-s2ˆ2,y=0..4):%=value(%):%=evalf(rhs(%),5);( 4»0

π(2( 13)y( 1

3) 1

4y2)dy =

125

4( 13)π2( 1

3) 16

)= 13.403

> h1:=tubeplot([0,y,0],y=0..2,radius=rhs(w[1]),

tubepoints=80,orientation=[79,145],tickmarks=[3,2,2],OP);

> h2:=tubeplot([0,y,0],y=0..2,radius=s2,

tubepoints=80,orientation=[79,145],tickmarks=[3,2,2],OP);

> display(h2,h1);

Lưu ý: Vẽ hình xoay quanh Oy [Hình 6.6 (b)], ta giới hạn trong khoảng [0, 2] thay vì [0, 4]vì nếu không sẽ chỉ thấy một phương trình.

Phạm Minh Hoàng 121

Page 138: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

Hình 6.5:

6.6 Một trường hợp phức tạp

Tìm thể tích snh ra do phép quay qanh Ox, Oy của phần diện tích nằm giữa hai hàm f(x)và g(x) được khai báo như sau:

> f:=y=x*(x-2)ˆ2; g:=y=2;

f := y = x(x 2)2

g := y = 2

> plot([rhs(f),rhs(g)],x=0..3,0..2);

Xoay quanh Ox

> Int(Pi*rhs(f)ˆ2,x=0..2):%=value(%):%=evalf(rhs(%),5);( 2»0

πx2(x 2)4dx =128105

π = 3.8296)

> h1:=tubeplot([x,0,0],x=0..3,radius=rhs(f),

tubepoints=80,orientation=[79,145],tickmarks=[3,2,2],OP);[3]

Xoay quanh Oy

Tương tự ta tính x = f1(y)

> s:=rhs(isolate(f,x));

x

Biểu thức hàm số đảo của f1(y) cực kỳ phức tạp và là số phức. Và chắc chắn Maplekhông thể tính được nguyên hàm. Trong trường hợp này ta phải giúp Maple bằng cách lại

3Hình 6.8 (a)

122 Phạm Minh Hoàng

Page 139: Maple Va Cac Bai Toan Ung Dung

6.6.Một trường hợp phức tạp

Hình 6.6: Phần giao của hai hàm và hình xoay quanh Ox,Oy

cắt nhỏ hình xoay quanh Oy thành nhiều khối chữ nhật có chiều dày dx cực bé, chiều cao(g f)(x) = 2 x(x 2)2, và chiều rộng 2

?R2 x2 với R là giao điểm của f(x) và g(x)

[Hình 6.8 (b)]. Thể tích của hình xoay quanh Oy sẽ là tổng của các khối này. Chúng đi từ 0 đếnR:

> u:=rhs(g)-rhs(f): R:=evalf(fsolve(u,x),4);

R := 2.839

> 2*Int(2*u*sqrt(Rˆ2-xˆ2),x=0..R):%=evalf(%,5);

2

2.839»0

2(2 x(x 2)2)?

8.06162449 x2dx = 34.334

f1(y) không xác định nên không thể vẽ hình xoay bằng tubeplot được.Các lệnh để vẽ hình 6.8 (b). Gọi S là đồ thị của hàm f(x) = x(x 2)2.Ta vẽ S dễ dàng bằng plot. Riêng về các hình chữ nhật ta sẽ dùng lệnh rectangle trong

gói plottools để vẽ[4]. rectangle có hai tham số: tọa độ đỉnh trên phía trái và đỉnh đáyphía phải. (Đỉnh L là đỉnh R trong Hình 6.8 (c)). Các đỉnh bên trên hình chữ nhật đều nằm trênđường thẳng y = 2, ta chọn chiều rộng 0.2, vậy tạo độ các điểm này sẽ là [2i, 2]i P N .

Các đỉnh đáy có hoành độ là (i + 1)0.2 và tung độ là f(a) với a là trung điểm của chiềurộng hình chữ nhật đang tính. Vậy tọa độ của chúng là:

[(i + 1)0.2,12f((2i + 1)0.2)]

> with(plottools):

> S:=plot([rhs(g)-rhs(f)],x=0..2.84,thickness=2:

> r:=i¡rectangle([i*.2,2],[(i+1)*.2,subs(x=(2*i+1)*.1,rhs(f))],color=gray:

> display(S,seq(r(i),i=0..8));

4Xem phần Help Maple online

Phạm Minh Hoàng 123

Page 140: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

Hình 6.7:

Tương tự cách này ta có thể vẽ Hình 6.1 (a) bằng implicitplot

124 Phạm Minh Hoàng

Page 141: Maple Va Cac Bai Toan Ung Dung

6.7. Bài đọc thêm: Galilée

. .x

.y

.R

.L

Hình 6.8: Phần giao của hai hàm trong một trường hợp phức tạp và (b),(c) cách vẽ để tính thểtích

6.7 Bài đọc thêm: Galilée

Galileo Galilée(Pise 1564 - Florence 1642)

Ông là con trai của một nhà buôn vải sợi,có tên gọi theo tiếng Ý là Galilei. Ban đâu, chamuốn ông theo nghề buôn của gia đình, nhưngsau nhân thấy con mình thích khoa học nên choGalilée theo họcY khoa ở Toscane. Năm 1581,Galilée vào học Đại học Pise nhưng rồi càngngày càng bị toán học chinh phục, nên ông theohọc những lớp riêng không chính thức và đượcđền bù xứng đáng: năm 1589 ông được phongGiáo sư Toán Đại học Pise và 3 năm sau về dạyĐại học Padoue.

Thời bấy giờ, lý thuyết Copernic về QuảĐất chuyển động quanh Mặt Trời bị Giáo Hộicho là "tà đạo" và cấm đoán đẻ không cho phép

giảng dạy ở Đại học. Nhưng ông cho răngCopernic có lý nên cho công bố một tác phẩmdưới hình thức đối thoại, ngụ ý xa gần bênh vựccho học thuyết Copernic. Do nhà cầm quyềnthời ấy không dễ gì bị qua mặt, Galilée bị bắt.Ông bị buộc nói lại khác với suy nghĩ củamình.Năm 1637, ông bị mù, nhưng sức làm việckhông giảm. Năm 1642, Galilée qua đời saumột cơn sốt ác tính nhưng còn kịp trăn trối lạinhững ý nghĩ cuối cùng của mình về chuyểnđộng của các hành tinh trong Thái dương hệcho hai học trò giỏi của mình là Torricelli vàViviani

Sáng tạo của Galilée chủ yếu là về Vật lý

Phạm Minh Hoàng 125

Page 142: Maple Va Cac Bai Toan Ung Dung

Chương 6. Bài toán kích thước hình xoay

và Thiên văn, nhưng đóng góp của ông choToán học không phải là nhỏ. Lấylaij ý kiến củaNicole Oresme,Galilée cho vẽ đồ thị vận tốccủa một chuyển động tăng dần đều phụ thuộcvào thời gian và ông ước lượng rằng diện tíchgiữa đường biểu diễn của vận tốc và trục hoànhtương ứng với quãng đường đã đi. Để đi đếnnhận thức ấy,Galilée đã chia trục thời gian ratừng phần vô cùng bé, có nghĩa là chia diện tíchra từng phần rất bé. Chính ông đã dẫn đươngcho "Lý thuyết các phần không thể chia nhỏđược nữa" của học trò ông là Cavalieri, ngườiđược hậu thế xem như đã tiếp cận với Lý thuyếttính tích phân từ thế kỷ 16.

Nhưng đóng góp của Galiée cho Vật lý rấtcơ bản. Ông đã khám phá ra nhưng đăc điểmcủa chuyển động quả lắc, chuyển động tăng dầnđều của một vật rơi tự do. Ông còn sáng chế rakinh thiên văn, nhờ đó phát hiện các vệ tinh củaJupiter (Mộc tinh) (1609-1610) và cũng chính

vì thế mà Galilée càng khẳng định lý thuyếtCopernic về Vũ trụ (hệ nhật tâm) là đúng; ôngcòn đóng góp phát triển kính hiển vi, sáng chếra compa tỷ lệ, đồng hồ quả lắc.

Vì thành tích của Galilée về Vật lý vàThiên văn quá rực rỡ nên người ta có cảmgiác đóng góp của ông cho Toán học bị lu mờ,nhưng thực ra chính nhờ sự nghiên cứu củaGelilée qua các công cụ toán học, ông đã đưatoán học vào vị trí then chốt vì ông đã từng nóirằng: "Thiên nhiên đã tuân theo các quy luậtToán học bất di bất dịch!". Ý nghĩa triết họctoát ra từ nghiên cứu khoa học của ông có giátrị hùng hồn.

Nhờ những phát minh kỳ diệ đó mà khoahọc đã thoát y hẳn những lý luận thần học bíhiểm của thời đại ông đang sống. Người ta nóiGalilée đã đem cơ sở Toán học làm nên tảngcho mọi hoạt động khoa học nhân loại thời bấygiờ. Theo [28].

126 Phạm Minh Hoàng

Page 143: Maple Va Cac Bai Toan Ung Dung

Chương7

Bài toán sức bền vật liệu

Trong chương này, chúng ta sẽ khảo sát một ứng dụng của phương trình vi phân cấp caotrong lãnh vực cơ học: Bài toán dầm. Bảy trường hợp thường gặp là:

Tải trọng phân bố đều

Hai gối đơn

Ngàm một đầu, đầu kia tự do

Ngàm hai đầu

Ngàm một đầu, một đầu gối đơn

Ngàm một đầu, gối đơn không ở đầu

Tải trọng tập trung

Ngàm một đầu, lực ở đầu kia

Ngàm một đầu, lực bất kỳ

Hai gối đơn

7.1 Tải trọng đều

. .q.l

.x

.y

.ω ¡ 0

Hình 7.1:

Quy ước chung về dấu Gọi l là chiều dài dầm, tải trọng q suốt chiều dài dầm,E, I làmoduleđàn hồi và moment quán tính của dầm.

Trong hệ trực chuẩn Oxy, gọi y là chuyển vị (y ¡ 0) khi hướng lên trên ), ω là góc quayω ¡ 0 ngược chiều lượng giác ),M là moment (M ¡ 0) khi sợi đặt trên dầm nén ), V là lựccắt và q là tải trọng phân bố đều. Ta được các hệ thức:

Page 144: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

ω(x) = d

dxy(x)

M(x) = EId

dxω(x) = d

dxy(x)EI

V (x) = d

dxM(x) =

d3

dx3y(x)EI

q(x) = d

dxV (x) = d4

dx4y(x)EI

Và phương trình vi phân trong trường hợp tải trọng đều là (q(x) = q = hs):d4

dx4y(x) +

q

EI= 0 (7.1.1)

Tất cả trường hợp dưới đây, chúng ta sẽ làm một cách rất trình tự:

Xác định điều kiện biên và giải phương trình vi phân

Xác định ba hàm: chuyển vị, góc quay, moment uốn

Vẽ đồ thị

Chính vì phải lặp đi lặp lại quá trình tính toán này, chúng ta sẽ khai báo ba hàm kể trên bằnglệnh macro. Thao tác này có lợi là người ta chỉ việc giải phương trình vi phân là tức khắc bahàm sẽ tự động thay đổi.

Gọi fl(x), rt(x),mt(x) lần lượt là hàm chuyển vị, góc quay và moment uốn. Gọi eq, ci làphương trình vi phân và điều kiện biên. s là lời giải. Ta có:

fl(x) = s, rt(x) = fl1(x) và mt(x) = EI.l2(x)

> macro(fl = unapply(s, x)):

> macro(rt = unapply(diff(s, x), x)):

> macro(mt = unapply(expand((diff(s, x, x))*EI), x)):

> eq := diff(y(x), x$4)+q/EI:

Hai đầu gối đơn

. .q.l

.x

.y

Hình 7.2:

Điều kiện biên: moment hai đầu và chuyển vị hai đầu đều bằng không:M(0) = M(l) = y(0) = y(l) = 0

> ci1:=((D@@2)(y)(0)=0,(D@@2)(y)(l)=0,y(l)=0,y(0)=0):

> s := rhs(dsolve(ci1, eq, y(x))):

s là một mệnh đề Maple và nghiệm của (7.1). Một khi s được xác định,các hàm fl(x), rt(x),mt(x) tự động xác định theo:

128 Phạm Minh Hoàng

Page 145: Maple Va Cac Bai Toan Ung Dung

7.1. Tải trọng đều

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) = 124

qx4

EI+

112

qlx3

EI 1

24ql3x

EI

rt(x) = 16

qx3

EI+

14

qlx2

EI 1

24ql3

EI

mt(x) = 12qx2 +

12qlx

Giá trị ở các điểm đặc biệt là:> [fl(l/2)], [rt(0)], [mt(l/2)];[

5384

ql4

EI,

[ 1

24ql3

EI

],

[18ql2]

Vẽ đồ thị của ba hàm: chuyển vị fl(x), góc quay ft(x) và moment uốn mt(x). Để đơngiản, ta đặt q = 1, EI = 1, l = 10. Ta tìm lại được những kết quả quen thuộc trong cơ học.Riêng đối với đồ thị của góc quay ω(x), nên nhớ rằng giá trị của nó sẽ đổi dấu ở điểm chuyển

vị cực đại (x =l

2). Ta cũng có thể lấy trị tuyệt đối để có một đường biểu diễn phản ánh đúng

thực tế hơn.[1]> q:=1: l:=10: EI:=1:

> plot(fl,0..10); plot(rt(x),x=0..10); plot(mt,0..10);

Ngàm một đầu, đầu kia tự do

Điều kiện biên: Góc quay và chuyển vị tại ngàm bằng không, moment và lực cắt tại đầutự do bằng không:

ω(0) = y(0) = V (l) = M(l) = 0

> ci2:=((D@@3)(y)(l)=0,(D)(y)(0)=0),(D@@2)(y)(l)=0,y(0)=0):

> s := rhs(dsolve(ci2, eq, y(x))):

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) = 124

qx4

EI+

16

qlx3

EI 1

4ql2x2

EI

rt(x) = 16

qx3

EI+

12

qlx2

EI 1

2ql2x

EI

mt(x) = 12qx2 + qlx 1

2ql2

> [fl(l)], [rt(l)], [mt(0)];[ 1

8ql4

EI,

[ 1

6ql3

EI

],

[ 1

2ql2]

Ta vẽ đồ thị của ba hàm tương tự như trường hợp hai nối đơn. Và vì lặp đi lặp lại, nên kểtừ bây giờ các lệnh này không được in ra.

> plot(fl,0..10); plot(rt(x),x=0..10); plot(mt,0..10);

Ngàm hai đầu

Điều kiện biên:

1Lưu ý rằng tất cả các đồ thị đều được dùng với option tickmarks dùng để giới hạn các giá trị trên hai trục tọađộ.

Phạm Minh Hoàng 129

Page 146: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

Hình 7.3: Chuyển vị, góc quay và moment trường hợp hai gối đơn

ω(0) = y(0) = ω(l) = y(l) = 0

> ci3:=(((D)(y)(0)=0),D)(y)(l)=0,y(0)=0),y(l)=0:

> s := rhs(dsolve(ci3, eq, y(x))):

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) = 124

qx4

EI+

112

qlx3

EI 1

24ql2x2

EI

rt(x) = 16

qx3

EI+

14

qlx2

EI 1

12ql2x

EI

mt(x) = 12qx2 +

12qlx 1

12ql2

Giá trị cực đại tại các điểm đặc biệt: chuyển vị ở giữa dầm, góc quay ở1

4dầm, moment ở

hai đầu ngàm:> [fl(l/2)], [rt(l/4)], [mt(l)];

130 Phạm Minh Hoàng

Page 147: Maple Va Cac Bai Toan Ung Dung

7.1. Tải trọng đều

. .q.l

.x

.y

Hình 7.4:

[ 1

384ql4

EI,

[ 1

128ql3

EI

],

[ 1

12ql2]

> plot(fl,0..10); plot(rt(x),x=0..10); plot(mt,0..10);

Ngàm một đầu, đầu kia gối đơn (hệ siêu tĩnh)

Điều kiện biên:ω(0) = y(0) = M(l) = y(l) = 0

> ci4:=((D)(y)(0)=0),(D@@2)(y)(l)=0,y(l)=0,y(0)=0):

> s := rhs(dsolve(ci4, eq, y(x))):

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) =124

qx4

EI+

548

qlx3

EI 1

16ql2x2

EI

rt(x) = 16

qx3

EI+

516

qlx2

EI 1

8ql2x

EI

mt(x) = 12qx2 +

58qlx 1

8ql2

(Lưu ý: Đồ thị hàm góc quay trong Hình 7.9 được lấy trị tuyệt đối là |rt(x)|)> plot(fl,0..10); plot(-|rt(x)|,x=0..10); plot(mt,0..10);

Ngàm một đầu, đầu kia gối đơn ở một điểm bất kỳ u

Đây là trường hợp phức tạp. Ta sẽ giải theo hai cách:

Cách giải thứ nhất: Ta phân ra hai trường hợp.

a) x u

Điều kiện biên:

y(0) = ω(0) = y(u) = 0,M(u) = q(l u)2

2EI (7.1.2)

> ci41:=((D)(y)(0)=0,y(u)=0,y(0)=0,EI*(D@@2)(y)(u)=-q*(l-u)ˆ2/2):

> s := rhs(dsolve(ci41, eq, y(x))):

> fl1:=unapply(fl(x),u):rt1:=unapply(rt(x),u):mt1:=unapply(mt(x),u):

> 'fl1(x)'=fl(x); 'rt1(x)'=rt(x); 'mt1(x)'=mt(x);

fl1(x) = 124

qx4

EI 1

48q(6l2 12lu + u2)x3

uEI+

116

q(u2 + 2l2 4lu)x2

EI

rt1(x) = 16

qx3

EI 1

16q(6l2 12lu + u2)x2

uEI+

18

q(u2 + 2l2 4lu)xEI

Phạm Minh Hoàng 131

Page 148: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

Hình 7.5: Chuyển vị, góc quay và moment trường hợp ngàm một đầu

mt1(x) = 12qx2 4

3qlx2

u+

32qxl 1

8qux +

18qu2 +

14ql2 1

2qlu

b) u x l

Trước tiên, ta thử điều kiện biên:

M(l) = y(u) = V (l) = 0,M(u) =q(l u)2

2EI(7.1.3)

Và kết quả của dsolve là:

124

qx4

EI+

16

qlx3

EI 1

4ql2x2

EI+ C3x 1

24u(qu3 + 24 C3EI + 4uql 6uql2)

EI

Rõ ràng là điều kiện trên "có vấn đề" vì kết quả còn dư ra một hằng số tích phân, mặc dùtrong lãnh vực cơ học các điều kiện trên đều đúng. Để tìm câu trả lời ta thử tự giải phương trình(7.1):

y(3) = V (x) q

EIx + A

y(2) = M(x) q

EI

x2

2+ Ax + B

132 Phạm Minh Hoàng

Page 149: Maple Va Cac Bai Toan Ung Dung

7.1. Tải trọng đều

. .q.l

.x

.y

Hình 7.6:

y(1) = ω(x) q

EI

x3

6+ A

x2

2+ Bx + C

y(0) = y(x) q

EI

x4

24+ A

x3

6+ B

x2

2+ Cx + D

Khi y(u) = 0 ta tính được D

Khi M(l) = 0 ta có phương trình theo A,B.

Khi M(u) 0 ta có một phương trình khác theo A,B. Vậy ta có thể tính được A,B

Khi V (l) = 0 trên nguyên tắc ta tính được A, nhưng A đã có. Vậy ta còn dư C hay biếnC3

Tóm lại ta phải dùng một điều kiện khác với V (l) = 0, và điều kiẹn này phải tièm ra C.Ta chỉ có hai lựa chọn: hoặc chuyển vị y hoặc quay ω; và vì ta không thể có giá trị nào củay(x), (u x l), ta thử dùng kết quả của (7.2) để tínhomega(l). Và điều kiện biên là:

M(l) = y(u) = 0,M(u) =q(l u)2

2EI, ω(l) =

q(l u)3

6EI (7.1.4)

> ci42:=(y(u)=0,EI*(D@@2)(y)(u)=q*(l-u)ˆ2/2,

> (D@@2)(y)(l)=0,EI*(D)(y)(l)=-q*(l-u)ˆ3/6):

> s := rhs(dsolve(ci42, eq, y(x))):

> fl2:=unapply(fl(x),u):rt2:=unapply(rt(x),u):mt2:=unapply(mt(x),u):

> 'fl2(x)'=fl(x); 'rt2(x)'=rt(x); 'mt2(x)'=mt(x);

fl2(x) = 124

qx4

EI 1

6qlx3

EI 1

4ql2x2

EI+

16

qu(3lu + u2 + 3l2)xEI

124

qu2(3u2 + 6l2 8lu)EI

rt2(x) = 16

qx3

EI+

116

qlx2

EI 1

2qxl2

EI+

16

qu(3lu + u2 + 3l2)EI

mt2(x) = 12qx2 + qlx 1

2ql2

Để vẽ đồ thị, ta dùng piecewise để xác định hàm và khoảng tương ứng:> q:=1:l:=10:EI:=1:u:=7:

> mte:=a¡piecewise(x>a,mt1(a),mt2(a)):> rte:=a¡piecewise(x>a,rt1(a),rt2(a)):> fle:=a¡piecewise(x>a,fl1(a),fl2(a)):> plot([mte(7),fle(7)],x=0..10,-6..2,linestyle=[1,4]);

Quan sát Hình 7.11 (a) ta thấy đồ thị của chuyển động liên tục nhưng bị gẫy khúc. Để kiểmchứng, ta tìm giá trị của góc quay ở hai bên điểm s = 8:

Phạm Minh Hoàng 133

Page 150: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

Hình 7.7: Chuyển vị, góc quay và moment trường hợp ngàm hai đầu

> subs(x=8,[rt1(8),rt2(8)]);[203

, 0]

Kết quả này rõ ràng có vấn đề. Và "vấn đề" đi từ việc ta đã "ép buộc" các điều kiện biênbằng các giá trị cho sẵn tại gối đơn (x = u) như ở các biểu thức (7.3, 7.4, 7.5). Tuy nhiên nếukhông có các giá trị này thì thiếu điều kiện cho phương trình vi phân.

Tóm lại phải đi tìm một cách giải không theo các hướng "truyền thống".

Cách giải thứ hai:

x u

Điều kiện biên ω(0) = y(0) = 0

> ci41:=((D)(y)(0)=0,y(0)=0);

> g1:=rhs(dsolve(eq,ci41,y(x)));

134 Phạm Minh Hoàng

Page 151: Maple Va Cac Bai Toan Ung Dung

7.1. Tải trọng đều

. .q.l

.x

.y

Hình 7.8:

g2 = 124

qx4

EI+

16

qlx3

EI 1

4ql2x2

EI+ C3x + C4

Chúng ta có bốn hằng số tích phân, và vì thế cần phải có bốn phương trình.$'&'%g1(u) = 0 : tại gối đơng1(u) = g2(u) : liên tục của chuyển vịg11(u) = g12(u) : liên tục của góc quayg21(u) = g22(u) : liên tục của moment

> p1:=subs(x=u,g1=0):

> p2:=subs(x=u,g1)=subs(x=u,g2);

> p3:=subs(x=u,diff(g1,x))=subs(x=u,diff(g2,x)):

> p4:=subs(x=u,diff(g1,x,x))=subs(x=u,diff(g2,x,x)):

Giải hệ phương trình trên để tìm ra bốn hằng số tích phân:> s:=solve(p1,p2,p3,p4, C1, C2, C3, C4);

s :=

$'&'%C4 = 1

48u2(4lu + 4l2 + u2)

EI, C3 =

116

u(4lu + 4l2 + u2)EI

,

C2 =18

u2 4lu + 2l2

EI, C1 = 1

8(12lu + 6l2 + u2)

uEI

,/./-Thay thế các trị số tìm được vào biểu thức của g1 và g2. Và sau đó ta gán kết quả vào biến

f để tự động thay đổi các hàm fl(x), rt(x),mt(x):> f:=subs(s,g1);

f := 124

x4

EI 1

48(12lu + 6l2 + u2)x3

uEI+

116

(u2 4lu + 2l2)x2

EI> fl1:=unapply(fl(x),u):rt1:=unapply(rt(x),u):mt1:=unapply(mt(x),u):

> f:=subs(s,g2);

f := 124

qx4

EI+

16

lx3

EI 1

4l2x2

EI+

116

u(4lu + 6l2 + u2)xEI

148

u2(4lu + 6l2 + u2)EI

> fl2:=unapply(fl(x),u):rt2:=unapply(rt(x),u):mt2:=unapply(mt(x),u):

Để vẽ đồ thị, ta dùng piecewise để xác định hàm và khoảng tương ứng:> mte:=a¡piecewise(x>a,mt1(a),mt2(a)):> rte:=a¡piecewise(x>a,rt1(a),rt2(a)):> fle:=a¡piecewise(x>a,fl1(a),fl2(a)):> q:=1:l:=10:EI:=1:

> plot([mte(8),fle(8)],x=0..10,-6..2,linestyle=[1,4];

Hình 7.13 (a) cho thấy khi u = 8, đoạn dầm bên phải nối đơn bị nhấc lên. Để tìm xem ởgiá trị nào của u đoạn này sẽ bắt đầu nằm ngang, ta giải phương trình fl(l) = 0( với l = 10):

> eu:=op(select(i¡is(i<10),[fsolve(fl(10))]));eu := 7.400789501

> plot([mte(eu),fle(eu)],x=0..10,-6..2,linestyle=[1,4]);

Phạm Minh Hoàng 135

Page 152: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

Hình 7.9: Chuyển vị, góc quay và moment trường hợp ngàm một đầu, đầu kia gối đơn

Quan sát các Hình 7.13 ta nhận thấy:

Khác với cách thứ nhất, lần này đồ thị góc quay liên tục ở điểm áp dụng lực:

> subs(x=8,[rt1(8),rt2(8)]);[203

,203

] Hình 7.13 (b) cho thấy khi u = 7.4 thì chuyển vị ở đầu bên phải bằng 0. Vị trí của u saocho góc xoay rt(u) = 0 (tiếp tuyến ngang):

> eu:=op(select(i¡is(i>0 and i<10),[fsolve(rt(u))]));

eu := 7.1010 7.4

Lệnh sau đây tạo hình động của chuyển vị và góc xoay khi u thay đổi trong khoảng [6, 10].Dĩ nhiên ta chỉ có thể thấy được trên màn hình.

> gi:=seq(plot([mte((i)/10),fle((i)/10)],

136 Phạm Minh Hoàng

Page 153: Maple Va Cac Bai Toan Ung Dung

7.2. Tải trọng tập trung

. .q.l

.x

.y

.u

Hình 7.10:

Hình 7.11: Chuyển vị, moment ngàm một đầu và gối đơn ở: (a) x = 8 và (b) x = 7 (cách giảithứ nhất)

x=0..10,-20..10,linestyle=[1,4]),i=60..80):

> plots[display]([gi],insequence=true);

7.2 Tải trọng tập trung

Gọi P là tải trọng tập trung. Ta lặp lại các công thức quen thuộc:

ω(x) = d

dxy(x)

M(x) = EId

dxω(x) = d2

dx2y(x)EI

V (x) = d

dxM(x) =

d3

dx3y(x)EI

,////.////- ùñ d3

dx3y(x) P

EI= 0

(7.2.1)

> eq:=diff(y(x),x$3)-P/EI:

Ngàm một đầu, lực tập trung ở đầu kia. [Hình 7.14 (a)]

Điều kiện biên:

Phạm Minh Hoàng 137

Page 154: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

. .q.l

.x

.y

.u

Hình 7.12:

Hình 7.13: Chuyển vị, moment trường hợp ngàm một đầu và gối đơn ở: (a) x = 8 và (b) x = 7(cách giải thứ hai)

ω(0) = y(0) = M(l) = 0

> ci51:=(y(0)=0,D(y)(0)=0,(D@@2)(y)(l)=0:)

> s := rhs(dsolve(ci51, eq, y(x))):

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) =16

Px3

EI 1

2Plx2

EI

rt(x) =12

Px2

EI Plx

EImt(x) = Pl Px

Ngàm một đầu, lực tập trung ở x = u l [Hình 7.14 (b)]

Điều kiện biên:ω(0) = y(0) = M(u) = 0

> ci52:=(y(0)=0,D(y)(0)=0,(D@@2)(y)(u)=0:)

> s := rhs(dsolve(ci52, eq, y(x))):

> 'fl(x)'=fl(x); 'rt(x)'=rt(x); 'mt(x)'=mt(x);

fl(x) =16

Px3

EI 1

2Pux2

EI

138 Phạm Minh Hoàng

Page 155: Maple Va Cac Bai Toan Ung Dung

7.2. Tải trọng tập trung

. .l

.P

.x

.y

.(a)

. .l

.P

.x

.y

.u

.(b)

Hình 7.14: Các trường hợp tải trọng tập trung với ngàm

rt(x) =12

Px2

EI Pux

EImt(x) = Pl Pu

Với u = 4 và u = 6 (nhân các đại lượng với 5 cho dễ nhìn) ta được:> q:=1:l:=10:EI:=1:u:=4:P:=1:

> plot([fl(x),rt(x),5*mt(x)],x=0..10,-45..20,linestyle=[1,3,4]);

> q:=1:l:=10:EI:=1:u:=6:P:=1:

> plot([fl(x)/5,rt(x),5*mt(x)],x=0..10,-35..20,linestyle=[1,3,4]);

Hình 7.15: Chuyển vị, góc quay và moment trường hợp ngàm một đầu, lưu tập trung khi: (a)u = 4 và (b) u = 6 (các tỷ lệ được sửa đổi để dễ nhìn)

Phạm Minh Hoàng 139

Page 156: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

Hai gối đơn

. .l

.P

.x

.y

.u

Hình 7.16:

Trường hợp này khác với 6 trường hợp trên. Ở đây phương trình (7.6) thay đổi tùy theo bêntrái hay bên phải của lực, giả sử tại x = u:

> eq1:=diff(y(x),x$3)-P/EI:eq2:=diff(y(x),x$3)+p/EI:

> ci41:=(y(0)=0,(D@@2)(y)(0)=0):

> g1:=rhs(dsolve(eq1,ci41,y(x))):> ci42:=(y(l)=0,(D@@2)(y)(l)=0):

> g2:=rhs(dsolve(eq1,ci42,y(x))):> p1:=subs(x=u,g1)=subs(x=u,g2):

> p2:=subs(x=u,diff(g1,x))=subs(x=u,diff(g2,x)):

> s:=solve(p1,p2,A,B):> f:=subs(s,g1);

fl(x) =16

Px3

EI+

16

Px(9lu2 + 6l2u + 4u3 2l3)lEI

> fl1:=unapply(fl(x),u):rt1:=unapply(rt(x),u):mt1:=unapply(mt(x),u):

> f:=map(simplify,subs(s,g2));

f := 16

Px3

EI+

12

Plx2

EI+

16

Px(4u2 3lu2 2l3)lEI

16

Pu2(4u 3l)EI

> fl2:=unapply(fl(x),u):rt2:=unapply(rt(x),u):mt2:=unapply(mt(x),u):

Và với những giá trị như trên, với u = 6 ta có đồ thị [Hình 7.17 (a)]. Quan sát đồ thị tanhận thấy có sự đứt đoạn của moment ở điểm lực tác động. Nguyên nhân là vì chúng ta có haihằng số tích phân, nhưng chúng ta phải cần có ba điều kiện liên tục về chuyển vị, góc quay vàmoment. Dư ra một phương trình moment nên có sự gián đoạn này.

Bây giờ chúng ta bắt buộc phải lý luận trên cơ sở của cơ học chư không đơn thuần đi từphương trình (7.6) được. Lý thuyết sức bền vật liệu cho phép ta viết:

> ode1:=EI*diff(y(x),x$2)-P*(l-u)*x/l;

ode1 := EId2

dx2y(x) P (l u)x

l> dsolve(ode1,y(x)):eq1:=rhs(subs( C1=A, C2=B,%));

eq1 := 16

P (l + u)x3

lEI+ Ax

> dsolve(ode2,y(x)):eq2:=rhs(subs( C1=E, C2=F,%));[2]

eq2 := 1lEI

Pu

( 1

2lx2 +

16x3

)+ Ex 1

3Pul2

EI El

Điều kiện biên: y(0) = 0, y(l) = 0, y1(u) = y2(u), y11(u) = y12(u):2Xin đừng lẫn hằng số tích phân E với module đàn hồi trong EI

140 Phạm Minh Hoàng

Page 157: Maple Va Cac Bai Toan Ung Dung

7.2. Tải trọng tập trung

Hình 7.17: Lực tập trung, hai nối đơn qua hai cách giải

> subs(x=0,eq1=0):assign(%):

> isolate(subs(x=l,eq2=0),F):assign(%):

> p3:=subs(x=u,eq1)=subs(x=u,eq2):

> p4:=subs(x=u,(diff(eq1,x)))=subs(x=u,(diff(eq2,x))):

B và F đã được xác định ở hai điều kiện đầu, chỉ còn A và E:> s:=solve(p3,p4,A,E);assign(%):"

A = 16

Pu(u2 + 2l2 3lu)lEI

,E = 16

Pu(u2 + l2)lEI

*Và hai lời giải, tức hai phương trình chuyển vị là:

> y[1]=eq1; y[2]=eq2;

y1 = 16

P (l + u)x3

lEI 1

6Pu(3lu + u2 + 2l2)x

lEI

y2 := 1lEI

Pu

( 1

2lx2 +

16x3

) 1

6Pu(u2 + l2)x

lEI 1

3Pul2

EI+

16

Pu(u2 + l2)EI

Dùng lại cách khai báo góc quay và moment với u = 7 ta có Hình 7.17 (b).

Phạm Minh Hoàng 141

Page 158: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

7.3 Bài đọc thêm: Képler - Thái Dương hệ

Johannes Képler(Wurtenberg 1571 - Ratisbonne 1630)

Ông xuất thân từ một gia đinh người Đức rất nghèo khó. Hồi nhỏ, képler là một cậu bé ốm yếu,lên 4 tuổi bi bệnh đậu mùa suýt nguy đến tính mạng, nhưng may mắn qua khỏi, di chứng để lạilà thị lực bi giảm.

Dù sức khỏe kém, nhưng Képler đã sớm chứng tỏ cho mọi người thấy rằng mình học được,vì vậy cậu được theo học có hệ thống, từ trường Dòng địa phương cho đến Trường Đại họcTubingen, và may mắn là Képler được theo học bài giảng của nhà thiên văn nổi tiếng thuộctrường phái Copernic. Năm 1595, Képler công bố sách viết về các hành tinh.

Năm 1600, vì lý do tôn giáo ông đành rời bỏ công việc đang làm là dạy toán và sang làmtrợ lý cho nhà thiên văn nổi tiếng Đan Mạch Tycho Brahe. Năm 1601, Brahe mất, Képler đượccử tiếp tục công việc của thầy. Năm 1613, sau khi vợ và con trai qua đời, ông đau buồn trở vềLinz, một thành phố thuộc Áo nằm trên bờ Danube, để dạy học. Trong 4 năm cuối đời, Képlerlang thang qua nhiêu thành phố, kiếm sống bằng cách xem tử vi!

Tuy là một nhà khoa học tên tuổi,nhưng cuộc đời của ông thật là bất hạnh. Người vợ đầutiên bị điên và mất sớm. Để tránh điều xấu số xảy ra một lần nữa trong đời, Képler đã nghiêncứu tỉ mỉ các ưu khuyết điểm của 11 người đàn bà khác và quyết định đi bước nữa với ngườiđàn bà khá nhất trong số ấy. Nhưng bước đi này còn tệ hại hơn.

Képler nổi tiếng vì đã tìm ra 3 định luật về quĩ đạo của các hành tinh. Nhưng điều mà giớitoán học nhớ đến ông là các nghiên cứu về coniques. Chính ông là người đầu tiên đã dùng từ"tiêu điểm" và "một điểm ở vô tận". Mặt khác ông cũng có sáng kiến chia nhỏ một mặt ra thànhnhững phần vô cùng nhỏ mà diện tích ấy tính được, rồi lấy tổng của chúng. Tuy phương phápcủa ông chưa thật có hệ thống lắm, nhưng đó chính là nhưng ý tưởng báo hiệu cho Lý thuyếtcác vô cùng nhỏ, không thể chia nhỏ hơn của Cavalieri. Chính nhờ đó mà ông đã suy ra diệntích quỹ đạo của các hành tinh( trong chứng minh của ông có hai cái sai, nhưng may mắn thaychúng triệt tiêu lẫn nhau !).

Ba định luật Képler.

Định luật thứ nhất: Các hình tinh trong thái dương hệ đều có quỹ đạo ellipse, mà mặt trờilà tiêu điểm.

Định luật thứ hai: Trong những khoảng thời gian t bằng nhau, vật quay sẽ quyét nhữngdiện tích hình quạt bằng nhau.

Định luật thứ ba: Gọi T là chu kỳ của một thiên thể, a là nửa bán kính lớn của ellipse quỹ

đạo. Tất cả các thiên thể trong vũ trụ đều có chung một tỷ lệT 2

a3.

Cột A: khoảng cách với mặt trời (đơn vị: triệu km).

Vì các hành tinh đều có quỹ đạo ellipse, nên ở đây là khoảng cách trung bình.

142 Phạm Minh Hoàng

Page 159: Maple Va Cac Bai Toan Ung Dung

7.3. Bài đọc thêm: Képler - Thái Dương hệ

Hình 7.18: Thái Dương Hệ

Bảng 7.1: Thái Dương hệ.[3]

Hành tinh tiếng Anh A B C D E F1 Thủy tinh Mercury 58 2.400 0.056 0.40 88d 58d

2 Kim tinh Venus 108 6.000 0.817 0.93 224d 242d

3 Trái đất Earth 150 6.400 1 1.00 365d 24h

4 Hỏa tinh Mars 227 3.400 0.11 0.35 680d 24h

5 Mộc tinh Jupiter 778 67.000 318 2.91 12y 10h

6 Thổ tinh Saturn 1.427 60.000 95 1.08 29y 10h

7 Thiên Vương tinh Uranus 2.869 25.000 16 1.05 84y 17h

8 Hải Vương tinh Neptune 4.500 25.000 17 1.12 164y 16h

Cột B: bán kính (đơn vị: km).

Mộc tinh, hành tinh lớn nhất có bán kính gấp 10 lần bán kính trái đất, thể tích của nó gấp1000 lần thể tích trái đất, nhưng khối lượng của nó chỉ gấp 318 lần (xem cột C), vì nó cónhiều chất khí. Xem ra trái đất là hành tinh có tỷ trọng lớn nhất

Cột C: khối lượng tương đối so với trái đất (=1).

Cột D: trọng lượng của một vật có trọng lượng bằng 1kg trên trái đất.

Theo Newton, nếu một người trên trái đất (bán kính 6400 km) nặng M kg, thì trên hành

tinh i sẽ nặngR2mi

r2i M

kg (với mi và ri là khối lượng và bán kính hành tinh i).

Theo cột D thì người này hầu như sẽ có cùng trọng lượng trên Kim, Thổ, Thiên vương vàHải vương tinh; trên Thủy tinh chỉ còn 0.4M nhưng trên Mộc tinh là 3M .

Cột E: Chu kỳ quay quanh mặt trời (88d : 88 ngày, 10y : 10 năm).

Càng gần mặt trời, sức hút mặt trời lên hành tinh càng lớn, nếu không quay nhanh để tạora một lực ly tâm lớn thì hành tinh sẽ lao vào mặt trời. Điều này cắt nghĩa tại sao càng gầnmặt trời, hành tinh quay càng nhanh. Và như thế nếu có một ai đó sống được trên Thủy

Phạm Minh Hoàng 143

Page 160: Maple Va Cac Bai Toan Ung Dung

Chương 7. Bài toán sức bền vật liệu

tinh, một năm của họ sẽ kéo dài 88 ngày. Ngược lại, nếu sống trên Thổ tinh, phải 30 nămmới được... ăn Tết mộ lần.

Cột F: Chu kỳ quay quanh trục của nó ()58d : 58 ngày, 17h : 17 giờ).Càng gần mặt trời, sức hút mặt trời lên hành tinh càng lớn, và lực hút này có tác dụng"trì" hành tinh lại, làm giảm vận tốc quay quanh trục (trừ Kim tinh là một trường hợp đặcbiệt). Và dĩ nhiên càng xa mặt trời, hành tinh quay nhanh hơn. Một ngày trên Mộc trinhchỉ kéo dài 10 tiếng.

144 Phạm Minh Hoàng

Page 161: Maple Va Cac Bai Toan Ung Dung

Chương8

Bài toán đạn đạo

Một khẩu đại bác nghiêng một góc α so với mặt đất, bắn một viên đạn khối lượngm với vận tốc đầu v0. Khảo sát hiện tượng.

8.1 Môi trường không có ma sát không khí

Trước tiên, ta tải vào bộ nhớ các gói hàm cần thiết cũng như định nghĩa một vài chữ viết tắttrong bài:

.

.y

.v0

.α.mg

.x

Hình 8.1:

> restart:with(plots):with(plottools):

> Digits:=4:alias(alpha=a):

Chọn hệ tọa độ trực chuẩn với y ¡ 0 hướng lên trên, gọi g là gia tốc trọng trường. Áp dụngnguyên lý cơ bản về động lực học lên m, ta có hệ:"

y2(t) = gx2(t) = 0 (8.1.1)

Chiếu v0 xuống hai trục, ta có vx = v0 cos(α) và vy = v0 sin(α).> y2:=diff(y(t),t$2):x2:=diff(x(t),t$2):

> s:=dsolve(y2=-g,x2=0,D(y)(0)=v0*sin(a),D(x)(0)=v0*cos(a),x(0)=0,y(0)=0);

Page 162: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

s :="

y(t) = 12gt2 + v0 sin(α), x(t) = v0 cos(α)t

*(8.1.2)

Vì Maple xuất trình lời giải x(t), y(t) theo một thứ tự bất kỳ nên nếu muốn lấy được x(t)và y(t) ta cần thực hiện[1]:

> ex:=subs(s,x(t));ey:=subs(s,y(t));

s :=

#ex := v0 cos(α)t

ey := 12gt2 + v0 sin(α)t (8.1.3)

Loại t trong biểu thức ex, ta có phương trình chuyển động y = f(x):> y:=subs(isolate(x=ex,t),ey);

y := 12

gx2

v0 cos2(α)+sin(α)xcos(α) (8.1.4)

Độ cao tối đa của viên đạn: tại điểm khi đạo hàm y1

(x) đổi dấu (ta gán kết quả vào mộthàm số h(α)):

> solve(diff(y,x),x):

> h:=unapply(subs(x=%,y),a);

h = α ÞÑ v20 sin(α)2

g

Và độ cao này tương đương với góc bắn:> solve(D(h)(a),a);

0,π

2Điểm viên đạn rơi: khi y(x) = 0 (Phương trình 8.4). Gán kết quả vào một hàm số q(α)):

> p:=solve(y,x):

> q:=unapply(combine(p[2],trig),a);

q := α ÞÑ v20 sin(2α)

g

Và tầm bắn xa nhất tương đương với góc bắn (giải phương trìnhd

dαq(α) = 0):

> solve(D(q)(a),a);14π

Thời gian viên đạn bay: thời gian sao cho y(t) = 0. Dùng biểu thức của ey (8.3). Gán kếtquả vào một hàm số t(α):

> solve(ey,t);

0, 2v0 sin(α)

g> t:=unapply(%[2],a):

Áp dụng bằng số: đặt g = 10m/s2 , v0 = 300m/s, và khai báo một chuỗi các góc bắn (α =

16, k = 2..6):

> g:=10:v0:=300:s:=seq(k*Pi/16,k=2..6);

s :=π

8,3π

16,π

4,5π

16,3π

8

1Kết quả được sắp xếp khác với trong worksheet cho dễ nhìn

146 Phạm Minh Hoàng

Page 163: Maple Va Cac Bai Toan Ung Dung

8.1.Môi trường không có ma sát không khí

Độ cao tối đa, điểm rơi (mét) và thời gian bay (giây) của viên đạn tương ứng với 5 góc bắntrên đây là :

> 'h'=seq(evalf[4](h(i)),i=s);

'q'=seq(evalf[4](q(i)),i=s); 't'=seq(evalf[4](t(i)),i=s);

h=(659.2, 1389., 2250., 3112., 3840.)

q=(6363., 8314., 9000., 8314., 6363.)

t=(22.97, 33.34, 42.42, 49.90, 55.43)

> g1:=plot( seq(y,a=[s]),x=0..9000,0..4000):> g2:=plot([[0,2000],[2000,2000],[0,0],[2000,2000],[2000,0]]):

> v0:=900:

> g1a:=plot(seq(y,a=[s]),x=0..85000,0..38000):> g2a:=plot([[0,10000],

[10000,10000],[0,0],[10000,10000],[10000,0]]):

> plots[display](g1,g2); [hình 8.2 (a)]> plots[display](g1a,g2a); [hình 8.2 (b)]

Hình 8.2: Quỹ đạo trong trường hợp không ma sát với: (a) v0 = 300 và (b) v0 = 900m/s

Hai hình 8.2 (a) và (b) gần như giống nhau hoàn toàn : q(π

8) = q(

8) là tầm bắn ngắn nhất,

q(π

4) xa nhất, h(

8) cao nhất. Và nếu có tăng hoặc giảm v, hình dáng hai đồ thị vẫn không thay

đổi. ∼∼∼∼∼∼∼

Bây giờ chúng ta giả sử có một chiếc xe khởi hành từ điểm x0 ¡ 0 và dichuyển trên trục Ox về hướng x ¡ 0 với vận tốc vh không đổi. Tìm góc αđể bắn trúng xe.

Phương trình chuyển động thẳng của xe là : x(t) = vht + x0 ñ t =x(t) x0

vh

Để bắn trúng xe, thời gian bay của đạn phải bằng thời gian chạy của xe (trước khi chúngđạn). Với q(α) và t(α) là điểm rơi và thời gian bay của viên đạn, ta có phương trình (lấy lại

Phạm Minh Hoàng 147

Page 164: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

v0 = 300m/s):> v0:=300: eq:=(q(a)-x0)/vh=t(a);

eq :=90000 sin(2α) x0

vh= 60 sin(α)

Giải phương trình theo α ta được một kết quả vô cùng phức tạp :> r1:=solve(eq,a);

r1 := arctan(%1,

118000

x0 + 60%vh

%

)%1 = RootOf(324000000 Z4 + (324000000 + 3600v2

h) Z2 + 120x0 Zvh + x20)

Trong trường hợp này chúng ta gán cho lời giải vào một hàm với hai biến là(x0, v0), rồi thử với một vài giá trị của hai biến này (x0 = 6000m, vh = 5m/s):

> f:=unapply(r1,x0,vh):

> evalf(f(6000.,5));

.3731

Quan sát biểu thức của r1, chúng ta thấy đây là một phương trình bậc 4,vậy còn 3 nghiệmkhác. Để hiển thị mọi nghiệm, phải dùng hàm allvalues trong lệnh solve:

> r2:=evalf(subs(x0=6000,vh=5,[allvalues(r1)]));

r2 := [1.184+0.1308e4I, .3745+0.2140e3I,2.783+0.2137e3I,1.915+0.1437e4I]

Kết quả 4 nghiệm đều là nghiệm phức. Rõ ràng là có chuyện gì không ổn ! Thực ra đây làmột trường hợp tế nhị thường gặp khi tính toán bằng số. Quan sát ta thấy các phần phức đều rấtnhỏ, và tất cả 4 nghiệm đều là số thực. Dĩ nhiên ta chỉ chọn các nghiệm có phần thực dương [2]:

> r3:=op(select(¡is(i>0),[Re(r2[j])$j=1..nops(r2)]));r3 := 1.184, 0.3745

Để kiểm chứng kết quả của hai lời giải trên, ta chỉ cần so sánh thời gian bay t(α) của viênđạn và thời gian xe chạy. Thời gian xe chạy là :

> tc:=(x0,vh,a)¡(q(a)-x0)/vh;tc := (x0, vh, α) ÞÑ q(α) x0

vh

Thay số và so sánh với thời gian viên đạn bay. Ta tính luôn khoảng cách (từ gốc tọa độ):> tc(6000,5,r3[1]),t(r3[1]),q(r3[1]);

57.60, 55.56, 6288.

> tc(6000,5,r3[2]),t(r3[2]),q(r3[2]);

25.60, 21.94, 6128.

Kết luận : hai góc bắn trúng xe là 1.185 rad 67o88 (xe đi được 287m) và 0.3728 rad 21o30 (xe đi được 109m).

8.2 Môi trường có ma sát không khí

2Vì bắn lên trời chứ không bắn xuống đất ! Mặt khác ta phải có α P [0,π

2]

148 Phạm Minh Hoàng

Page 165: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

Thí dụ 1: nghiệm giải tích

Kết quả trên đây chỉ có giá trị lý thuyết, thực ra hiện tượng ma sát hiện diện ở khắp mọi nơitrên trái đất. Trước tiên, chúng ta giả sử môi trường có một lực ma sát fr tỷ lệ với vận tốc v. Hệ(8.1) trở thành:"

mx2(t) = kvxmy2(t) = kvy mg (8.2.1)

> eqx:=diff(x(t),t$ 2)=-x1*k/m;

> eqy:=diff(y(t),t$ 2)=-y1*k/m-g;$'&'%d2

dt2x(t) = k

m

d

dtx(t)

d2

dt2y(t) = k

m

d

dty(t) g (8.2.2)

> cond:=x(0)=0,y(0)=0,(D)(x)(0)=v0*cos(a),(D)(y)(0)=v0*sin(a):

> s := dsolve(eqx, eqy, cond, x(t), y(t)):Làm lại những lệnh (8.3), (8.4), để sau cùng có được phương trình chuyển động:

> ex:=eval(x(t),s):

> ey:=subs(s,y(t)):

> subs(isolate(x=ex,t),ey):

> y:=subs(isolate(%,t),rhs(ey));

> collect(%,x): y=map(factor,%);

y =gm + v0 sin(a)k

kv0 cos(a)x +

gm2

k2ln(

v0 cos(a)m xk

v0 cos(a)m

)Một khi thu được nghiệm giải tích, mọi việc trở nên đơn giản (cho dù nghiệm cực kỳ phức

tạp và không thể tách biến x). Chúng ta chỉ cần làm lại các lệnh ở trang 140 để có được độ cao,điểm rơi, tầm bắn cũng như thời gian đạn bay. . .Chúng ta cũng có thể tính được góc bắn mộtchiếc xe trên trục Ox. Tất cả dĩ nhiên đều là những biểu thức giải tích.

Thí dụ 2 : nghiệm bằng phương pháp số

Hệ (8.6) có thể giải bằng giải tích vì đây là một hệ tuyến tính theo vận tốc v (và cả theo v2

cũng thế). Bây giờ ta giả sử chuyển động của m chịu ảnh hưởng của một lực ma sát fr = kv|v|,với |v| là suất của vận tốc.

|v| =d(

d

dtx(t)

)2

+(

d

dty(t)

)2

Hệ (8.5) trở nên:"mx2(t) = kvx|v|my2(t) = kvy|v| mg

> y1:=diff(y(t),t):y2:=diff(y1,t):x1:=diff(x(t),t):x2:=diff(x1,t):

> v:=sqrt(x1ˆ2 + y1ˆ2);

v :=

d(d

dtx(t)

)2

+(

d

dty(t)

)2

> eqx:=diff(x(t),t$2)=-x1*k/m*'v';[3]3v được đặt trong dấu (') để có thể hiển thị chữ v thay vì biểu thức phức tạp của nó.

Phạm Minh Hoàng 149

Page 166: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

> eqy:=diff(y(t),t$2)=-y1*k/m*'v'-g;$'&'%eqx :=

d2

dt2x(t) =

k

m

d

dtx(t)v

eqy :=d2

dt2y(t) = k

m

d

dty(t)v g

> cond:=D(y)(0)=v*sin(a),D(x)(0)=v*cos(a),x(0)=0,y(0)=0:

> s:=dsolve(eqx,eqy,cond,x(t),y(t));Phép giải hình thức không đưa ra lời giải cho bài toán phức tạp này, phải đưa đến phép giải

bằng số gần đúng. Để giải bằng số, cần phải cho các giá trị số. Chúng ta dùng lại các số liệutrong mục (8.1) cộng thêm m = 50kg (hệMKS) vì khi đó với trường hợp không ma sát, lần nàyphương trình chuyển động phụ thuộc vào m. Sau cùng cho k = 1, nghĩa là hệ số ma sát tối đa:

> k:=1:g:=10:v:=900:m:=50:a:=Pi/4:Digits:=4:

> s:=dsolve(eqx,eqy,cond, x(t),y(t),numeric);s := proc(rkf45x) . . . endproc

Có nhiều phương pháp để giải phương trình bằng số, mặc định Maple Gunge-Kutta 4 hoặc5 nút. Kết quả là một chuỗi số khá phức tạp. [4]

> s(.03);

[t = 0.03, x(t) = 15.2660497092393293,d

dtx(t) = 414.341519104685861,

y(t) = 15.2621296241892282,d

dt= 413.016962647166963]

Trên đây là giá trị của hàm kết quả s vào thời điểm t = 0.03. Hàm cho giá trị củax(t), y(t)vx(t), vy(t). Để vẽ đồ thị y = f(x), vấn đề đặt ra là phải thay đổi từ đầu đến đâu?Riêng trong trường hợp này chúng ta chỉ cần y(t) vậy là không còn cách nào khác là phải "lầnmò" từng giá trị của t đến khi y(t) 0. Dưới đây chúng ta chỉ tìm x(t) và y(t) : [5]

> [subs(s(9),x(t)),subs(s(9),y(t))];

[180.705204957416953, 18.5527249728920652]

> [subs(s(10),x(t)),subs(s(10),y(t))];

[181.832601218771543, -3.62096932828829132]

Vậy y = 0 khi t P [9,10] (giây). Cụ thể là lúc ấy viên đạn rơi xuống đất.> plot([seq([subs(s(i),x(t)),subs(s(i),y(t))],i=0..10)]);

[hình 8.3 (a)]Trong hình [8.3 (a)] ta thấy với cùng góc bắn và một vận tốc đầu, viên đạn chỉ đi được một

khoảng cách rất ngắn ( w 180m so với tầm bắn 80km trong trường hợp không có ma sát). Sứccản của không khí đã có một tác động vô cùng to lớn. Trong trường hợp trên, ta lấy k = 1, nótương đương với một lực ma sát tối đa. Trên thực tế lực ma sát tùy thuộc vào các yếu tố : hìnhdáng, chất liệu viên đạn và mật độ không khí. Bây giờ, để gần với thực tế, chúng ta giảm lựcma sát này bằng cách áp dụng một tỷ lệ nhỏ (k ! 1):

> k:=1/10:

> s:=dsolve(eqx,eqy,cond,x(t),y(t),numeric):Và thay vì dò tìm "thủ công", ta có thể tìm ra ngay t sao cho y(t) 0:

> for i from 1 to 1000 while subs(s(i),y(t)) > 0 do od: i;

4 Mặc dù Digits = 4 nhưng các kết quả của hàm s vẫn gồm 15 số lẻ5 s (Kết quả của(dsolve,numeric) là một hàm có nhiều sai số giữa hai lần thực hiện. Vậy bạn đọc cũng

đừng ngạc nhiên nếu thu được một kết quả không hoàn toàn giống như ở đây

150 Phạm Minh Hoàng

Page 167: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

Hình 8.3: Đạn đạo với hệ số ma sát bằng : (a) k = 1 (tối đa) và (b) k =1

10

25

> plot([seq([subs(s(n),x(t)),subs(s(n),y(t))],n=0..i)]);

[hình 8.3 (b)]Nhận xét:

Với lực ma sát bằngfr

10, viên đạn bay cao và xa hơn gần 9 lần - [hình 8.3 (b)]. Về đạn

đạo, đạn vẫn rơi gần như thẳng đứng.

Ta có thể vẽ đồ thị bằng hàm odeplot trong gói plots, nhưng cũng vẫn phải dò dẫm đểtìm t khi y(t) 0. Ta có thể không xác định các giá trị của t, trong trường hợp đó Maplelấy mặc định t=-10..10 :

> plots[odeplot](s,[x(t),y(t)],0..i,color=black):

Trong hình 8.3 (a), đồ thị có vẻ gẫy khúc. Lý do là chỉ dùng 10 điểm để vẽ. Để có đượchình mịn hơn ta dùng nhiều điểm hơn:

> plot([seq([subs(s(i*2),x(t)),subs(s(i*2),y(t))],i=0..10*2)]);

Tìm góc bắn xa nhất

∼∼∼∼∼∼

Đến đây chúng ta có thể đặt câu hỏi: Trong trường hợp có ma sát khôngkhí phức tạp, góc bắn xa nhất có phải là

π

4nữa không?

Căn cứ vào đạn đạo (rơi thẳng đứng), câu trả lời có lẽ sẽ là không. Cách duy nhất để tìmcâu trả lời là lập trình.

Ý tưởng: chúng ta sẽ laạp trình để tính tầm bắn tương ứng với nhiều góc bắn khác nhau vàsau đó dùng nội suy để tìm ra phương trình của hàm só tầm bắn theo biến và góc bắn. Sau đóchúng ta đi tìm cực trị của hàm này.

Phạm Minh Hoàng 151

Page 168: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Chương trình có tên là canon. canon sẽ có hai hàm số nhập vào (input) là vận tốc đầuv0 và tỷ lệ k của lực ma sát. Nơi xuất ra (output), sẽ có đồ thị của 5 góc bắn thay đổi từ

π

10đến

30và một chuỗi 5 phần tử có 3 thông tin: góc bắn thời gian và độ xa.

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

1. restart:2. canon:=proc(v0,k)3. global y1,y2,i,j,m,s,v,x1,x2,eq,cond,g,a,r,ig,param, gr:5. ig:=1:g:=10:m:=50:param:=NULL:6. y1:=diff(y(t),t):y2:=diff(y1,t):x1:=diff(x(t),t):x2:=diff(x1,t):7. v:=sqrt(x1ˆ2+y1ˆ2);8. eq:=y2=-g-y1*v*k/m,x2=-x1*v*k/m;9. cond:=D(y)(0)=v0*sin(a),D(x)(0)=v0*cos(a),x(0)=0,y(0)=0;10. r:=i*Pi/30$i=3..7;11. for a in r do12. s:=dsolve(eq union cond,x(t),y(t),numeric);13. for i from 1 to 500 while subs(s(i),y(t))>0 do od:14. subs(s(i),x(t)):param:=param,[a,i,evalf(%,6)]:15. gr[ig]:=plots[odeplot](s,[x(t),y(t)],0..i);16. ig:=ig+1:17. od:18. print(param);19. i:='i':plots[display]([gr[i]$i=1..nops([r])]);20. end:

Bảng 8.1: Chương trình của 5 góc bắn với độ gia tăngπ

30

Sau ki nhập chương trình ở Bảng 8.1, ta thử với vận tốc đầu v0 = 900(m/s) và sức cản

không khí fr =1

40:

> canon(900,1/40);

Vì đồ thị 8.8 (a) quá nhỏ nên phải phóng đại ra bằng cách dùng view để xác định tầm nhìn.Nhưng để làm được điều này, chỉ có một cách duy nhất là dùng biến toàn cục (global) thay vìbiến cục bộ local. Ta đặt tên cho biến là gr và hiển thị bằng Hình 8.8 (b):

> plots[display]([gr[i]$i=1..4],view=[4000..4900,0..800]);

Căn cứ vào đô thị ta thấy khởi đầu từπ

10, tầm bắn và cao độ từ từ gia tăng, nhưng đến

π

5thì

tầm bắn giảm, và vì cao độ vẫn tiếp tục tăng, ta có thể suy luận ra rằng tầm bắn liên tục giảm đến

0 khi α =π

2!. Điều này có nghĩa là góc bắn xa nhất phụ thuộc khoảng

10,7π

30

]hay [18o, 42o].

Để tìm góc bắn xa nhất ta dùng nội suy Lagrange. Trước tiên phải kiến tạo dãy các góc và tầmbắn bằng biến toàn cục param, sau đó tìm cực trị:

> va:=[seq(param[i,1],i=1..nops([param]))];[π

10,2π

15,π

6,π

5,7π

30

]152 Phạm Minh Hoàng

Page 169: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

Hình 8.4: Đạn đạo 5 góc bắn α P[

π

10,7π

30

]với ma sát

> vd:=[seq(param[i,3],i=1..nops([param]))];

vd := [4722.32, 4824.12, 4864.68, 4758.84, 4561.90]

> f:=interp(va,vd,alpha);

f := .473985107 α4

π4 .322704107 α3

π3+ 7007.45 + 752405.

α2

π2 70561.0

α

π> R:=[solve(diff(f,alpha),alpha);]

R := [.27896, .50333, .82190]

> evalf[5](map(convert,R,degrees));

[15.983.degrees, 28.893.degrees, 47.091.degrees]

Chỉ R2 P[

π

10,7π

30

]vậy góc bắn xa nhất 28.8o và tầm xa tương ứng là:

> evalf(subs(alpha=R[2],f),7);

4867.59

Hình 8.5 biểu diễn hàm nội suy và tọa độ của điểm cực đại. Ta dùng các kết quả vừa tínhđược để vẽ:

> g1:=plot([[R[2],0],[R[2],%],[0,%]],linestyle=4):

> g2:=plot(f,alpha=0..1,4400..5000,color=black):

> plots[display](g1,g2,labels=[rad,mét]);[6]Ta cũng có thể dùng nội suy spline. Phép nội suy n cho ta bốn hàm số. Cẩn thận khi trích

ra hàm thích ứng để lấy cực trị (tương ứng với R ở đây ta phải lấy hàm thứ hai tức op(4,sp))> convert(va,float):[7]> sp:=spline(%,vd,alpha,cubic):

> subs(u=solve(diff(op(4,sp),u))[2],op(4,sp));

6Ta có thể đánh chữ mét để có kết quả như trong hình!7Ở phiên bản 8, phải hoán chuyển dãy va thành dạng float

Phạm Minh Hoàng 153

Page 170: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

4867.02722

Hình 8.5:

Nối dài tầm bắn

Các tính toán sau đây cho thấy khi: α 28o(1

2rad) và lực ma sát =

1

40thì tầm bắn xa nhất

khoảng 4867m. Bây giờ người ta nối dài tầm bắn bằng cách dùng một loại đạn đặc biệt. Loạiđạn này có trang bị thêm một ít thuốc nổ, và thuốc nổ này sẽ phát hỏa trên không để tạo ra thêmmột sức đẩy cho đạn đi xa hơn.

Logic nhất là chúng sẽ phát hỏa khi đạn đạt đến độ cao cực đại, có nghĩa là khi vận tốc dọcvy = 0. Chúng ta dùng lại các biến và các giá trị như câu trên:

> restart:with(plots):

> y1:=diff(y(t),t):y2:=diff(y1,t):x1:=diff(x(t),t):x2:=diff(x1,t):

> v:=sqrt(x1ˆ2+y1ˆ2):

> eq:=y2=-g-y1*v*k/m,x2=-x1*v*k/m:> cond:=D(y)(0)=v0*sin(a),D(x)(0)=v0*cos(a),x(0)=0,y(0)=0:> g:=10:m:=50:v0:=900:a:=1/2:k:=1/40:

> s1:=dsolve(eq union cond,x(t),y(t),numeric);Lệnh sau đây thực hiện việc tìm thời điểm khi đạn lên độ cao nhất và khi rơi xuống đất:

> j:=0:for i to 300 while subs(s1(i),y(t))>0 do

if subs(s1(i),y1)<0 and j=0 then j:=i:fi:od:

> j-1,i;

12, 32

Nghĩa là khi t Ñ 12, vy Ñ 0 đạn với độ cao cực đại, và ở t 32 đạn sẽ rơi xuống đất [Hình8.6 (a)]

Ở thời điểm t = 12, nghĩa là khi đạn tới độ cao cực đại, giá trị tính được là:> s1(12);

154 Phạm Minh Hoàng

Page 171: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

[t = 12, y(t) = 1351.97,

d

dty(t) = 0.10, x(t) = 3306.84,

d

dtx(t) = 130.45

][8]

Để lấy được vx = x1(t), x(t), y(t) ta phải làm:> vx:=subs(s1(12),diff(x(t),t));

> px:=subs(s1(12),x(t));

> py:=subs(s1(12),y(t));

vx := 130.45, px := 3306.84, py := 1351.97

> odeplot(s1,[x(t),y(t)],0..i-1,scaling=constrained);gr1:=%:

> plots[display](gr1); [Hình 8.6 (a)]Giả sử thuốc nổ trên tọa độ [px, py] sẽ tạo ra một vận tốc vx = 300m/s. Điều kiện đầu tien

là:> cond:=D(y)(0)=0,D(x)(0)=vx+300,x(0)=px,y(0)=py:

cond := tD(y)(0) = 0, D(x)(0) = 430.45, x(0) = 3306.84, y(0) = 1351.97u> s2:=dsolve(eq union cond,x(t),y(t),numeric);> for i to 300 while subs(s2(i),y(t))>0 do od: i-1;

Khi t = 21 (kể từ độ cao cực đại), đạn sẽ rơi xuống đất. Các giá trị lúc này là:> s2(21);[

t = 21, x(t) = 6633.14,d

dtx(t) = 64.73, y(t) = 9.13,

d

dty(t) = 110.22

]> odeplot(s2,[x(t),y(t)],0..21,scaling=constrained);gr2:=%:

Và sau cùng khi vẽ trên cùng một đồ thị: [Hình 8.6 (b)]:> plots[display](gr1,gr2);

Hình 8.6: Nối dài tầm bắn

Tầm bắn bây giờ là 6633 mét với thời gian khoảng 12 + 21 = 33 giây.

8trên nguyên tắc sẽ có 12 số lẻ

Phạm Minh Hoàng 155

Page 172: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Sức cản trong trường hợp phức tạp

Trong tất cả những phần trên, nếu sức cản có hiện hữu thì nó luôn là một hằng số, nhưngthực ra, nó tùy thuộc vào nhiều yếu tố. Bây giờ để biểu diễn một cách sát với thực tế nhưngkhông quá phức tạp, ta cho lực cản là một hàm theo cao độ. Gọi p(y(y)) là hàm hệ số sức cản(với độ cản tối đa ở mặt đất là p(0) = 1). Hệ phương trình vi phân (8.7) trở thành:$''''&''''%

d2

dt2x(t) = d

dtx(t)

k

mp(y(t))

d(d

dtx(t)

)2

+(

d

dty(t)

)2

d2

dt2y(t) = d

dty(t)

k

mp(y(t))

d(d

dtx(t)

)2

+(

d

dty(t)

)2

g

Để khai thác hết sức mạnh của Maple, ta sẽ khai báo hệ trên dưới dạng hàm mũi tên vớitham số là p(y(t)). Như thế ta chỉ phải khai báo một lần duy nhất:

> restart:with(plots):

> x1:=diff(x(t),t):x2:=diff(x1,t):

> y1:=diff(y(t),t):y2:=diff(y1,t):

> v:=sqrt(x1ˆ2+y1ˆ2):

> eq:=p¡x2=-x1*(k*p(y(t)))/m*v,y2=-g-y1*(k*p(y(t)))/m*v:> cond:=D(y)(0)=v0*sin(a),D(x)(0)=v0*cos(a),x(0)=0,y(0)=0:> g:=10:m:=50:k:=1/40:v0:=900:a:=Pi/4:

Khi p(y) = 1 (hằng số):> s:=dsolve(eq(1) union cond,x(t),y(t),numeric):

> for i to 300 while subs(s(i),y(t))>0 do od: i: (Kết quả i = 42)> g1:=odeplot(s,[x(t),y(t)],0..%):

(Hình 8.7 (c), đường có tầm bắn khoảng 4400m)

Khi p(y) = 1 là một đường thẳng:

Giả sử sức cản ở mặt đất là 1 và ở cao độ 4000 là1

5. Hàm tuyến tính có dạng:

> p:=x¡-x/5000+1: plot(p,0..4000); [Hình 8.7 (a)]hspace5mm> s:=dsolve(eq(p) union cond,x(t),y(t),numeric):

> for i to 300 while subs(s(i),y(t))>0 do od: i: (Kết quả i = 47)> g2:=odeplot(s,[x(t),y(t)],0..%):

(Hình 8.7 (c), đường có tầm bắn khoảng 6000m)

Khi p(y) = 1 phi tuyến:

Giả sử sức cản ở mặt đất là 1 và ở cao độ 4000 là1

5nhưng thay đổi theo hàm mũ: x ÞÑ

ex/2500:> p:=x¡exp(-x/2500: plot(p,0..4000); [Hình 8.7 (b)]

hspace5mm> s:=dsolve(eq(p) union cond,x(t),y(t),numeric):

> for i to 300 while subs(s(i),y(t))>0 do od: i: (Kết quả i = 50)> g3:=odeplot(s,[x(t),y(t)],0..%):

156 Phạm Minh Hoàng

Page 173: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

(Hình 8.7 (c), đường có tầm bắn khoảng 6000m)> display(g1,g2,g3);

Hình 8.7: (a), (b): Các hàm sức cản p(h) và (c) tầm bắn tương ứng với α =π

4

Dưỡng Do Cơ thế kỷ XXI!

[9]∼∼∼∼∼∼∼

Giống như mục 8.1 - Giả sử có một chiếc xe khởi hành từ điểm x0 ¡ 0 vàdi chuyển trên trục Ox về hướng x ¡ 0 với vận tốc không đổi. Tính gócriêng của khẩu súng để bắn trúng xe.

Điều khác biệt căn bản so với 8.1 là không có phương trình giải tích để lấy cực trị mà chỉcó 3 dãy của những góc bắn va, thời gian vt và tầm bắn vd rút ra từ biến param và các hàmnội suy. Vì thế phương pháp không khác so với mục 8.2.3.

9Cung thủ của thời Đông Chu (200 năm trước Công Nguyên) với khả năng "bách bộ xuyên dương"

Phạm Minh Hoàng 157

Page 174: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Sửa chương trình ở bảng 8.1 và thay một dòng duy nhất (dòng thứ 9)r:=i*Pi/50$i=3..8

Khởi động lại chương trình và có kết qủa như sau:> canon(900,1/40);

> display([seq(gr[i],i=1..6)],view=[4000..4900,0..600]);[3π

50, 17, 4249.74

],

[2π

25, 20, 4481.61

],

10, 24, 4722.32

],[

25, 27, 4830.24

],

[7π

50, 29, 4842.14

],

[4π

25, 32, 4866.27

]

Hình 8.8: Đạn đọa của 6 góc bắn với độ gia tăngπ

50

Từ param ta trích ra 3 dãy:> va:=[seq(param[i,1],i=1..nops([param]))];

> vt:=[seq(param[i,2],i=1..nops([param]))];

> vd:=[seq(param[i,3],i=1..nops([param]))];[3π

50,2π

25,

π

10,3π

25,7π

50,4π

25

][17, 20, 24, 27, 29, 32]

[4249.74, 4481.61, 4722.32, 4830.24, 4842.14, 4866.27]

Nội suy Lagrange

Từ ba dãy trên, khai báo các hàm nội suy Lagrange:> fta:=unapply(interp(vt,va,t),t): (Nội suy t theo góc α)> ftd:=unapply(interp(vt,vd,t),t): (Nội suy t theo tầm bắn d)> fdt:=unapply(interp(vd,vt,u),u): (Nội suy tầm bắn d theo t)> fad:=unapply(interp(va,vd,a),a): (Nội suy tầm bắn d theo góc α)

Trước khi vào vấn đề chúng ta cần phân biệt hai trường hợp:

158 Phạm Minh Hoàng

Page 175: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

a⃝ bắn tại một điểm cho sẵn C: Nếu cho sẵn C ta có thể tính được thời gian xe chạy trướckhi đến C và đặt là t1 và tính được thời gian viên đạn bay nhờ hàm nội suy fdt(xc) và đặt là t2.Để có nghĩa, cả hai thời gian này bắt buộc phải nằm trong khoảng thời gian định bởi dãy va.

Nếu t2 t1 có nghĩa là viên đạn tới C trước. Để bắn trúng phải đợi t1 t2 giây trướckhi bắn.

Nếu t1 t2 có nghĩa là chiếc xe tới C trước, như thế sẽ chẳng bao giờ bắn trúng xe. Bàitoán không có lời giải. Vì không thể với một tọa độ có hai thời gian hoặc hai góc bắn trúng.Đừng quên ột điều quan trọng là tất cả các dãy va, vd, vt đều phải là các dãy đồng biến nghiêmcách và các hàm nội suy đều là các song ánh.

b⃝ bắn vào một điểm sớm nhất: Vì tính chất các hàm nội suy đã trình bày ở trên, người tacó thể nói rằng thời điểm sớm nhất để bắn trúng là lúc se khởi hành, nghĩa là viên đạn và chiếcxe phải khởi hành cùng lúc. Mặt khác trường hợp a⃝ cũng là trường hợp b⃝ nhưng chỉ lùi thờigian lại một tý.

Tóm lại, điều chúng ta quan tâm là tính góc bắn vào mọt thời điểm sớm nhất, và cách nàycó nhiều ứng dụng có thể khai triển về sau.

Bây giờ chúng ta vẽ đồ thị của các hàm nội suy:> plot(ftd,vt[1]..vt[6]); [Hình 8.9 (a)]> plot(fdt,vd[1]..vd[6]); [Hình 8.9 (b)]> plot(fad,va[1]..va[6]); [Hình 8.9 (c)]

Xem đồ thị hàm nội suy fdt(u) [Hình 8.9 (b)] thì thấy khi d P [4260, 4460], t có giá trị âmvà đồ thị cũng chẳng là một song ánh. Mặt khác, dù là hai hàm đảo nhưng fdt(u) cũng khôngcó vẻ đối xứng qua đường phân giác thứ nhất so với ftd(u). Tóm lại cách n suy này sai hoàntoàn và phải đổi phương pháp khác.

Nội suy Spline

Nếu xét về phương pháp thì không có gì sai vì chỉ áp dụng lại những gì ở mục 8.2.3 là nộisuy và giải phương trình đạo hàm để tìm cực trị. Cách tính cực trị này thì chắc chắn đúng vì đãlàm nhiều lần (và có cả chương 1 để khảo sát), vậy thì trục trặc chỉ còn "đâu đó" quanh các hàmội suy. Thay vì Lagrange, bây giờ ta thử với spline cubic.

Từ param ta khai báo hàm nội suy:> ftd:=unapply(spline(vt,vd,t,cubic),t):

> fdt:=unapply(spline(vd,vt,x,cubic),x):

> fda:=unapply(spline(vd,convert(va,float),x,cubic),x):

> fad:=unapply(spline(convert(va,float),vd,a,cubic),a):

> plot(ftd,vt[1]..vt[6]);plot(fad,va[1]..va[6]);plot(fda,vd[1]..vd[6]);

> plot(fda,vd[1]..vd[6]);

Quan sát đồ thị thì lần này đến lượt hàm fda(t) [Hình 8.10 (c)] có vấn đề, và cũng như nộisuy Lagrange, kết quả này cũng không chấp nhận được.

Phạm Minh Hoàng 159

Page 176: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Hình 8.9: Các hàm nội suy ftd(d), fdt(d) và fad(t)

Nội suy Spline với độ chia góc bắn nhỏ

Qua hai kết quả sai ở trên ta có nhận xét như sau: Bản chất của các nội suy khong thể sai[10],mà các phép tính này đều dựa trên sự chia nhỏ của các biến (ở đây là góc bắn), chia càng nhỏhàm càng chính xác. Vậy thì rất có thể với độ chia

π

50cũng chưa đạt. Để kiểm chứng giả thiết

này, ta chia góc bắn ra nhỏ hơn,π

60. Hàng thứ 9 của Bảng 8.1 sẽ là:

r:=i*Pi/60$i=3..8:Khởi động lại chương trình vẫn với các số liệu trên, ta được:

> canon(900,1/40);[π

20, 15, 4052.81

],

15, 18, 4334.20

],

12, 21, 4554.35

],

10Ngoại trừ ở các giá trị biên (hiện tượng Runge)

160 Phạm Minh Hoàng

Page 177: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

Hình 8.10: Các hàm nội suy ftd(t), fad(a) và fda(x)

10, 24, 4722.32

],

[7π

60, 26, 4786.33

],

[2π

15, 28, 4824.12

]> va:=[seq(param[i,1],i=1..nops([param]))];

> vt:=[seq(param[i,2],i=1..nops([param]))];

> vd:=[seq(param[i,3],i=1..nops([param]))];[π

20,

π

15,

π

12,

π

10,7π

60,2π

25

][15, 18, 21, 24, 26, 28]

[4052.81, 4334.20, 4554.35, 4722.32, 4786.33, 4824.12]

> ftd:=unapply(spline(vt,vd,t,cubic),t):

> fdt:=unapply(spline(vd,vt,x,cubic),x):

> fda:=unapply(spline(vd,convert(va,float),x,cubic),x):

> fad:=unapply(spline(convert(va,float),vd,a,cubic),a):

> plot(ftd,vt[1]..vt[6]);plot(fad,va[1]..va[6]);plot(fda,vd[1]..vd[6]);

Phạm Minh Hoàng 161

Page 178: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Hình 8.11: Đạn đạo của 6 góc bắn với độ gia tăngπ

60

> plot(fda,vd[1]..vd[6]);

Quan sát các đồ thị 8.12 thì có một điều lạc quan là không còn các dạng ngoắt ngoéo hoặccác giá trị bất thường. Một điều đáng mừng nữa là fad(a) và fda(x) là hai hàm đảo nhau hầunhư đối xứng qua đường phân giác thứ nhất. Bây giờ ta sẽ kiểm chứng những giá trị tính được:

Giả sử xe khởi hành ở x0 với lần lượt các vận tốc vi, để tìm thời gian bắn trúng xe sớm nhất,phải giải phương trình:

fdt(t) = vit + x0 (Hàm nội suy thời gian theo tầm bắn)Nhưng trước tiên để có một cái nhìn cụ thể, ta vẽ đồ thị hàm ftd(t) cùng với các đường

thẳng di(t) = vi(t) + x0.> dr:=plot([vt[1],t,t=3000..max(op(vd))]): (vẽ đường thẳng x = 15)> gr:=plot([ftd(t),seq((3900+t*i),i=[2,17,23,32])],

t=1..32,3400..4950):

> display(dr,gr);

Hình 8.13 cho thấy 4 đường thẳng tượng trưng cho chuyển động của xe với vi = 2, 17, 23,32m/s, với x0 = 3900m đường thẳng t = 15 = vt[1] biểu tương cho giới hạn thời gian. Nênnhớ hàm nội suy thời gian chỉ nằm trong khoảng [15, 32] giây. Giao điểm của các đường thẳngdi chính là thời gian sớm nhất để bắn trúng xe.

Với v0 = 2:

Lệnh dưới đây tính thời gian băn trúng xe và thời gian đó phải lớn hơn vt[1] (15 giây):

> op(select(i¡i>vt[1],[solve(ftd(t)=3900+t*2)]));Vô nghiệm! Trên Hình 8.14 cũng cho thấy giao điểm A ở vào khoảng 13.5 giây. Ta cóthể tính dễ dàng vận tốc tối thiểu:

> ftd(15);

4052.81

162 Phạm Minh Hoàng

Page 179: Maple Va Cac Bai Toan Ung Dung

8.2.Môi trường có ma sát không khí

Hình 8.12: Các hàm nội suy spline của fdt(t), fad(a), fda(x)

> solve((%-3900)/vm=fdt(%));

10.1873

Với v0 = 17:> T:=op(select(i¡i>vt[1],[solve(ftd(t)=3900+t*17)]));

T := 16.2671

> ftd(T); fdt(%);

4176.5415, 16.2462927

> fta(%); evalf(fad(%));

0.0568π, 4173.5621

Cụ thể là xe vị bắn ở d = 4176m, sau 16.24 giây, góc bắn 0.0568πrad(10.23 độ ), và từgóc bắn này ta nội suy ngược ra tọa độ (4173.56) với một sai số là:

> %-ftd(T);

Phạm Minh Hoàng 163

Page 180: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Hình 8.13:

2.979

Với v0 = 23:> T:=op(select(i¡i>vt[1],[solve(ftd(t)=3900+t*23)]));

T := 17.6787

> ftd(T); fdt(%);fta(%);evalf(fad(%));

4306.6111, 17.6713, 0.0648π, 4305.4958

Với v0 = 32:> T:=select(i¡i>vt[1],[solve(ftd(t)=3900+t*32)]);

[21.5460467, 30.24909411, 31.69626222]

Đường thẳng tương ứng với v0 = 32 cắt ftd(t) ở bốn điểm trong đó có ba điểm lớn hơn15 giây, dĩ nhiên phải lấy nghiệm nhỏ nhất.

> ftd(T[1]); fdt(%);fta(%);evalf(fad(%));

4589.4886, 21.5337, 0.860π, 4586.0135

Các sai số đều vào khoảng 3 đến 4 mét trên một khoảng cách 5000 mét. Đây là những saisố đén từ bản chất của phép nội suy. Không thể tránh được và cũng không thể cải thiệnđược. Ở đây chúng ta đã tính trên 6 số lẻ, cho dù có nâng lên 10 thì cũng không chính xáchơn là bao, trái lại thời gian tính hầu như dài gấp đôi.

Hướng khai triển tương lai cho chủ đề "chiến tranh" này

- Nội suy Lagrange với độ chia các góc bắnπ

60hoặc nhỏ hơn.

- Thiết lập một hàm nội suy hai chiều opti(x0, v) với (x0 và v là tọa độ và vận tốc đầu). Vẽđồ thị trong không gian ba chiều.

- Trong trường hợp thay vì một chiếu xe thì sẽ là một máy bay?- Tạo hình động.

164 Phạm Minh Hoàng

Page 181: Maple Va Cac Bai Toan Ung Dung

8.3. Bài đọc thêm: Shwerer Gustav

Hình 8.14:

8.3 Bài đọc thêm: Shwerer Gustav

Schwerer GustavKhẩu đại bác khủng khiếp nhất mọi thời đại

Lịch sử hình thành.Vào những năm 30, nước Pháp xây dựng

chiến lũyMaginot để ngăn chặn cuộc xâm lăngcủa phát xít Đức. Chiến lũy được bao bọcchắc chắn để có thể chịu đựng được pháo binhđối phương, đặc biệt là pháo nặng kiểu "DickeBertha" với đại bác nòng 420 ly.[11]

Hitler đã ra lệnh cho cơ xưởng Krupp chếtạo ra đại bác có thể đánh sập Maginot. Vàkhẩu đại bác lớn nhất thế giới có tên SchwererGustav (Gustav hạng nặng, và có tên là Dora)đã ra đời vào năm 1941. Nhìn vào các chi tiếtkỹ thuật của Dora, ai ai cũng chết khiếp:

Trọng lượng: 1350 tấnĐường kính nòng: 800 lyChiều dài nòng: 32 mTầm bắn: 48 kmTrọng lượng viên đạn: 48 tấn

Mỗi một viên đạn (nặng bằng một chiếc xetải hạng nhẹ) mang theo 200 kg thuốc nổ có khảnăng đi xuyên qua 1mét thép hay 7mét bê tôngcốt thép hoặc 30 mét đất. Điều đó có nghĩa làkhông một chiến lũy nào có thể chịu nổi trướcsự công phá của Dora. Khủng khiếp hơn, ngoàiloại đạn trên Dora còn được trang bị thêm đạnxuyên phá nặng 7 tấn với 700 kg thuốc nổ cókhả năng đi xuyên qua 80 m bê-tông cốt théptrước khi phát nổ.

Với sức nặng và một kích thước khổng lồ(43 7 12), Dora chỉ có thể di chuyển trênhai đường ray đặc biệt. "Hộ giá" theo Dora là1400 người trên 5 chuyến xe lửa. Đó là chưakể lực lượng bảo vệ và một đạo quân khác đãđi trước để chuẩn bị bãi đáp cho Dora. Khi tớinơi phải mất 6 tuần để ráp, để bắn thử trước khibắn thật. Nói tóm lại đây là một công việc cựckỳ phức tạp.

11Khẩu đại bác lớn nhất hồi Đệ nhất thế chiến 1914 - 1918

Phạm Minh Hoàng 165

Page 182: Maple Va Cac Bai Toan Ung Dung

Chương 8. Bài toán đạn đạo

Hình 8.15: Hình 8.14: Đại bác Schwerer Gustav (hình mẫu trưng bày)

Nhập trận.Khi khẩu Dora đầu tiên xuất xưởng vào

tháng 11/1941 thì mục tiêu đầu tiên đã khôngcòn. Chiến lũy Maginot đã rơi vào tay quânĐức một cách quá dễ dàng trước đó. Bộ ThamMưu Dức dự tính đem Dora xuống tuêu diệtcăn cứ Anh đang chiếm giữ eo biển Gibral-tar. Muốn thế phải đi xuyên qua Tây Ban Nha,nhưng trong đệ nhị thế chiến, Tây Ban Nha,trung lập và Tướng Franco không cho phépHitler đi vào lãnh thổ mình. Người Đức phảitìm một chiến trường khác, và điều đó đã xảyra trên mặt trận phía Đông.

Vào năm 1941, quân đội Đức xâm chiếmLiên Xô với chiến dịch Barbarossa dưới sứcchống trả yếu ớt của Hồng quân Liên Xô. Mỗingày Đức tiến sâu hàng trăm cây số và tiến sáttới cảng Sebastopol nổi danh "bất khả chiếnbại" gồm địa thế thiên nhiên cũng như nhữngpháo đài vô cùng kiên cố. Hồng quân đã chuẩnbị chiến tranh bằng cách cho xây nhưng hầmchứa đạn sâu dưới đáy biển vịnh Sever-naya.Trong suốt một tháng, nửa triệu viên đạn đạibác đã rơi xuống đây nhưng căn cứ này vẫnđứng vững.

Dora được điều tới "xử" Debastopol.Nhày 5/6/1942, sau nhiều tuần lễ chuẩn bị,Dora nã những viên đạn đầu tiên nhắm vào cáchầm chứa đạn. Nhưng viên đạn 7 tấn đi qua 30mét nước, xuyên thủng bê-tông như đạu hủ vàphái nổ bên trong hầm đạn. Chỉ sau 8 phát, mục

tiêu nát bấy. Thậm chí tầu vè trên mặt nướccũng bị đánh chìm. Sau đó pháo đài Stalinecũng sụp đỏ sau khi lanh trọn 6 quả. Bắn xong14 phát Dora nghỉ vì chuẩn bị cho một viên đạncực kỳ phức tạp.

Hôm sau, chỉ cần 7 phát, pháo đài Molo-tov đã thành đóng gạch vụn, và ngày qua ngàycác pháo đài Siberie, Maxime Gorky lần lượtbị đánh sập. Ngày 1/7/42, toàn vẹn Sebastopolrơi vào tay quân Đức. Tổng cộng Dora "mới"chỉmã 48 phái, và đó cũng là 48 phát cuối cùng.Vì sau khi Sebastopol thất thủ Dora được tháora và đưa vào xưởn bảo trì ở Essen. Sau khixuất xưởng, Dora không tìm ra mục tiêu "xứngđáng" nên đành bỏ phế. Nhều ý tưởng chỉnhsửa Dora cho gọn nhẹ hơn nhưng đã khôngđược thực hiện.

Người ta tự hỏi tại sao vào năm 1944Hitlerkhông điều Dora đến bờ Normandie để ngănchặn cuộc đổ bộ ? vì mỗi phái đạn có thể đánhđắm dễ dàng một thiết giáp hạm. Nhưng nóicho cùng, cho dù có sức công phá khủng khiếpnhưng chỉ hiệu quả với nhưungx mục tiêu cốđinh kiểu Sebastopol, đó là chưa kể thời giannạp đạn quá lâu đủ cho đối phương phản công.Tuy nhiên điều quan trọng hơn cả là vào năm1944, quân Đức không biết được ở đâu và lúcnào cuộc đỏ bộ sẽ xảy ra.

Biết được những yếu điểm của Dora,Hitler đã ra lệnh chế tạo ra khẩu Dora đời mớicó tầm bắn lên đến 160 km, nghĩa là có thể

166 Phạm Minh Hoàng

Page 183: Maple Va Cac Bai Toan Ung Dung

8.3. Bài đọc thêm: Shwerer Gustav

đứng trên bờ biển Pháp nã đạn vào thủ đô Lon-don, nhưung lúc ấy quân đội Đức đang gấp rútkhai triển hỏa tiễn V-1 và V-2 gọn nhẹ và cótầm bắn cực xa.

Cũng may cho nhân loại là chiến tranh đã

sớm kết thúc sớm. Vào những phút sau cùngcủa cuộc chiến, người Đức đã ra lện phá hủyDora bằng chất nổ và khi hòa bình tái lập,những phần của Dora được nấu chảy đẻ phụcvụ cho việc xây dựng đất nước.

Phạm Minh Hoàng 167

Page 184: Maple Va Cac Bai Toan Ung Dung

Chương9

Bài toán dao động 1: Lò xo

Dao động là một bài toán chiếm một vị trí quan trọng trong cơ học, nó thường đòi hỏi mộtkhốilượng tính toán khá lớn, đặc biệt là phép giải phương trình và hệ phương trình vi phân; vàđó chính là điểm mạnh của Maple. Mặt khác trong chương này, chúng ta cũng khai thác một ưuđiểm khác của Maple là tạo hình động. Nhờ đó chúng ta có thể quan sát và khảo sát những hiệntượng mà không thể hoặc không dễ thấy được trong các phòng thí nghiệm cổ điển.

Vì tính phức tạp và đa dạng của bài toán, chúng ta sẽ lần lượt khảo sát các hiện tượng sau:

Lò xo đơn: dao động tự do và có lực giảm xóc. Tính toán hình thức.

Hệ ba lò xo kết nối với một đầu tự do. Tính toán số.

Hệ hai lò xo kết nối. Tính toán hình thức và tính toán số.

9.1 Lò xo nằm ngang

Một lò xo nằm ngang, một đầu gắn cố định, nơi đầu tự do gắn một khốim. Vào thờiđiểm t = 0, người ta kéo giãn ra (hoặc co vào) một đoạn x0 rồi buông ra. Khảo sáthiện tượng của hệ thống.

Trước tiên, ta tải vào bộ nhớ các gói hàm cần thiết cũng như định nghĩa một vài chữ viếttắt.

> restart:with(plots):with(plottools):

> alias(SC='scaling=constrained' ,IT='insequence=true'):

Trước khi bước vào phần tính toán, chúng ta dùng các lệnh graphics của Maple để vẽ đặcbiệt là để tạo hình động cho hệ thống lò xo và khối m. Về khối m (giả sử tròn), ta dùng lệnhdisk([x,y],r) trong đó x, y, r lần lượt là tọa độ và bán kính của m. Ở đây ta khai báo mộtkhối tọa độ [5, 5; 0], bán kính 0.3.

> m:=disk([5.5,0],.3):

Riêng về lò xo thì phức tạp hơn. Để vẽ một lò xo có thể biến dạng theo chiều dài, không gìhay hơn là dùng một hàm tuần hoàn dạng f(x) = sin(ux + v). Vì hai đầu lò xo (giả sử có tọađộ là x = a và x = b) phải nằm trên trục Ox nên ta phải có:

f(x) = sin(ux + v) = 0 ñ"

ua + v = 0ub + v = 2π

Page 185: Maple Va Cac Bai Toan Ung Dung

9.1. Lò xo nằm ngang

Giải hệ phương trình này theo (u, v). Ta được:> solve( u*a+v=0, u*b+v=2*Pi , u,v );

u =2π

b a, v = 2πa

b a

Phương trình của lò xo có hai đầu x = a và x = b là:

f(x) = sin(

b ax 2πa

b a

)Tuy nhiên đây chỉ là một hình dạng sin có chu kỳ là (b a)π, tần số và biên độ bằng 1. Để

cho lò xo "thực" hơn, chúng ta giảm biên độ xuống một nửa và tăng chu kỳ lên 5 (lò xo có 5vòng xoắn), nghĩa là chia hàm số cho 2 và biến hàm sin(x) thành sin(5x). Và sau cùng phươngtrình lò xo có dạng:

> RS:=(a,b) ¡plot(sin(5*(2*Pi*x/(b-a)-2*Pi*a/(b-a)))/2,x=a..b,SC);RS := (a, b) ÞÑ plot

(12sin(5(

2πx

b a 2πa

b a)), x = a..b, SC

)(9.1.1)

Và để hiển thị một lò xo có hai đầu nằm trên trục hoành có tọa độ hai đầu x = 0, x = 5, cógắn một khối tròn ở x = 5.5, bán kính 0.3:

> display(disk([5.5,0],.0),RS(0,5));

Kết quả không thấy khối tròn [hình 9.1 (a)]. Đây có lẽ làmột bug củaMaple: Lệnh displaygồm disk và plot, khi hiển thị Maple lấy mặc định tọa độ định nghĩa trong lênh plot (ở đâybằng [0, 5]) và không biết đến hoành độ của khối m là 5.5. Để "chữa cháy" tạm thời, chúng tadùng một lệnh plot hiển thị một đoạn thẳng kéo dài trong khoảng [0, 6] [1]

> w:=u¡plot(0,x=0..u):> display(disk([5.5,0],.3),RS(0,5)),w(6);

Hình 9.1: Lò xo và khối m trên trục hoành

Bước vào phần tính toán, trước tiên chúng ta khai báo các ký hiệu đểMaple hiển thị ra giống

như trong cách viết thông thường (x1

(t) thay vì viếtd

dtx(t))

1Tuy nhiên nếu ta treo lò xo thẳng đứng thì đồ thị lại hoàn hảo, không có gì xảy ra

Phạm Minh Hoàng 169

Page 186: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

> alias('x' '(t)'=(D@@2)(x)(t),'x' '(t)'=diff(x(t),t)):

Chọn hệ tọa độ với x ¡ 0 như Hình [9.1]. Gọi m, B, K lần lượt là khối lượng hòn bi, lựcgiảm xóc, độ cứng của lò xo. Áp dụng nguyên lý căn bản động lực học vào hệ thống, ta cóphương trình chuyển động trong trường hợp tổng quát là:°

(F ) = mγ = KxBx1

ñ mB2

Bt2 x(t) + Kx(t) = 0

Để tiện lợi cho việc trình bày, chúng ta đặt m = 1, B = 2λ,K = ω2, và được:> eq:=(D@@2)(x)(t)+2lambda*diff(x(t),t)+omegaˆ2*x(t);

eq := x2(t) + 2λx1(t) + ω2x(t) = 0 (9.1.2)

Trường hợp 1 : Không có lực giảm xóc, λ = 0

Điều kiện đầu : x(0) = x0, x1(0) = v(0) = 0:

> subs(lambda=0,eq);

x2(t) + ω2x(t) = 0

> DK:=x(0)=x0,D(x)(0)=0:

> dsolve(subs(lambda=0,eq),DK);x(t) = x0 cos(ωt)

> f1:=unapply(rhs(%),(x0,omega,t)):

f1 là hàm xác định vị trí của x theo (x0, ω, t), ta thử với một vài vị trí thích ứng:> plot(f1(1(sqrt(2)/2,t),t=0..3*Pi);

Hình 9.2:

Một trong những ưu điểm của Maple là hình động animation. Để làm điều này ta theoquy trình sau (dĩ nhiên ta chỉ thấy được kết quả trên màn hình)[2]

- Định nghĩa một hàm theo t để xác định vị trí của lò xo và khối tròn (ta đã có f1). Rồi cộnggiá trị của f1 và hoành độ của lò xo và khối tròn.

- Cho thay đổi t để biến thành một hình động bằng cách dùng hàm display trong góiplots, đừng quên insequence=true cần thiết cho hình động và scaling=constrainedđể có một tỷ lệ cân xứng.

> g1:=t¡display(disk([5.5+f1(1,sqrt(2)/2,t),0],.3),RS(5+f1(1,sqrt(2)/2,t),0),w(7));

2Xin xem phần xử lý hình động - Chương 12

170 Phạm Minh Hoàng

Page 187: Maple Va Cac Bai Toan Ung Dung

9.1. Lò xo nằm ngang

g1 := t Ñ display(disk([5.5 + f1(1,

?2

2, t), 0], .3), RS(5 + f1(1,

?2

2, t), 0), w(7));

> tu:=time():movie:=NULL:for i to 45 do movie:=movie,g1(i);

od:time()-tu;

0.874[3]> display([movie],IT,SC);

Cần 7 giây để vẽ một hình động đơn giản với 45 lần lặp. Đúng ra chúng ta có thẻ chạy ítlần hơn, vì trong trường hợp này, chuyển đọng tuần hoàn và điều hòa, nhưng làm như thế "đoạnphim" sẽ vị giật. Trong những câu kế tiếp chúng ta sẽ thấy bắt buộc phải dùng nhiều vòng lặpvới những hàm số phức tạ hơn nhiều. Nên nhớ khi dùng hình động, cần phải có một máy tínhthích hợp.

Trường hợp 2 : Lực giảm xóc, λ ¡ 0

Đặt ∆ = λ2 ω2, và giải phương trình (9.2) với cùng điều kiện ban đầu.> alias(Delta=lambdaˆ2-omegaˆ2):

> expand(dsolve(eq,DK));

x(t) =12

x0et?

∆λ?∆etλ

+12

x0et?

etλ 1

2x0λ?

∆etλet?

∆+

12

x0

etλet?

∆ 0 ñ λ ω

Phương trình (9.2) sẽ có nghiệm phức. Dưới đây ta lấy

x0 = 1, λ =1

20, ω =

1?2 (9.1.3)

> f2:=unapply(rhs(%),(x0,lambda,omega,t)):

> simplify(f2(1,1/20,1/sqrt(2)): collect(%,exp);(12 1

398i?

199)

e1/20t(1+i?

199) +(

12 1

398i?

199)

e1/20t(1+i?

199)

Đồ thị Hình 9.3 (nét đậm) cho thấy trong trường hợp giảm xóc với cường độ nhẹ (λ ω),biên độ có giảm nhưng tần số góc gần như không thay đổi nhiều so với khi không có giảm xóc.

> plot([f1(1,1/sqrt(2),t),f2(1,1/20,1/sqrt(2),t)],

t=0..15*Pi,linestyle=[4,1],thickness=[1,3]);[Hình 9.3 (a)]> plot([f1(1,1/sqrt(2),t),f2(1,1/11,1/sqrt(2),t)],

t=0..15*Pi,linestyle=[1,4],thickness=[1,3]);[Hình 9.3 (b)]Lưu ý quan trọng: Hàm f2 phải là hàm của t, nếu không sẽ gặp vấn đề khi vẽ hình độngĐể tạo hình động ta làm như (9.3)

> g2:=t¡display(disk([5.5+Re(f2(1,1/20,1/sqrt(2),t)),0],.3),RS(5+Re(f2(1,1/20,1/sqrt(2),t)),0),w(7));

> movie:=NULL:for i to 45 do movie:=movie,g2(i);od:

Error, (in evalr/shake) not a real nember

Maple xuất ra một thông báo sai. Có thể các bạn cũng có một thông báo khác:3Thời gian để thực hiện "đoạn phim". Tuy nhiên con số này rất tương đối, nó tùy thuộc vào xức mạnh của máy

tính, thậm chí trên cùng máy tính cũng khác nhau tùy vào tình trạng máy

Phạm Minh Hoàng 171

Page 188: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

Hình 9.3: Chuyển động với giảm xóc λ = dfrac120 và1

11

Error, (in plot) range values must be real constants

Đây là vấn đề thường gặp khi phải tính toán với những biểu thức có dạng phức. Để khắcphục, ta có thể dùng Re,evalc,evalf. Re dùng để tách ra phần thực[4], evalc dùng biểuthức có chứa biến hình thức (ở đây là biến t) evalf lấy giá trị số lẻ. Để "chắc ăn", ta áp dụngluôn cả ba lệnh trên, đây cũng là dịp để thử với toán tử @. Toán tử này có công dụng liên kếthiều lệnh:

> super:=evalf@evalc@Re:

> g2:=t ¡display(disk([5.5+super(f2(1,1/20,1/sqrt(2),t)),0],.3),RS(5+super(f2(1,1/20,1/sqrt(2),t)),0),w(7));

> movie:=NULL:for i to 45 do movie:=movie,g2(i);od:

> display(movie,insequence=true,scaling=constrained);

Quan sát (trên màn hình) ta thấy chuyển động của hệ thống chậm dần cho đến lúc tắt hẳn.Để có thể quan sát, cần phải chọn các giá trị của m,w và λ một cách thích hợp. Ở đây ta chọnm = 1 nghĩa là cần số góc băng

ω

2π. Khi ω = 3 (lò xo cứng) ta sẽ có

3

2π 0.5, chuyển động

trong một giây là rất khó quan sát vì quá nhanh. Nhưng trái lại cũng không nên trọn ω quá nhỏ( 1

20) nghĩa là lò xo quá mềm, chu kỳ sẽ rất dài và chuyển động quá chậm, không tiện quan

sát. Còn riêng về λ là lực giảm xóc (λ ω), nên chọ đủ để thấy chuyển động tắt dần nhưngcũng đừng quá nhỏ so với w.

∆ ¡ 0 ñ λ ¡ ω

Phương trình (9.2) bây giờ có nghiệm thực.

Dùng lại f2 đã được khai báo ở (9.4) và lấy x0 = 1, λ =4?2, ω =

1?2

4Tránh trường hợp đồ thị bị đứt đoạn

172 Phạm Minh Hoàng

Page 189: Maple Va Cac Bai Toan Ung Dung

9.1. Lò xo nằm ngang

> combine(simplify(f2(1,4/sqrt(2),1/sqrt(2),t)),radical);130

(4?

15et?

30 + 15et?

30 4?

15 + 15)

e1/2?

2t(4+?

15)

> plot([f2(1,4/sqrt(2),1/sqrt(2),t),f2(1,8/sqrt(2),1/sqrt(2),t)],

t=0..20*Pi,linestyle=[1,4,3],thickness=[3,2,1]);

Quan sát Hình 9.4 (a), ta thấy khi lực giảm xác lớn, thì dao động không còn tuần hoàn nữa.Lò xo đang giãn thì từ từ co lại để trở về vị trí ban đầu. Một điểm đáng lưu ý khác, là với cùngmột trị của m và ω lực giảm xóc càng nhỏ (λ nhỏ) thì vận tốc trở về vị trí cân bằng càng nhanh(đường biểu diễn liên tục là đường tương ứng với λ =

4?2).

Hình 9.4: Chuyển động với độ giảm xóc lớn ∆ ¡ 0 và (b) giảm xóc tớn hạn (∆ = 0)

Có thể thấy sự kiện này nơi ống giảm xóc ở xe, đặc biệt là các xe thể thao. Ống giảm xóccàng cứng (λ nhỏ), thời gian trở về vị trí ban đầu càng nhanh nghĩa là xe càng bán đường, đổilại, tiện nghi càng kém và người lái mệt hơn (đau lưng). Ngược lại, sau một thời gian sử dụng,ống giảm xóc mềm đi (vì nhớt đã bớt độ nhờn), λ lớn, thời gian trở về vị trí ban đầu lâu hơn,nghĩa là xe ít bán đường hơn.

Tạo hình động (không cần dùng hàm super vì đây là nghiệm thực):> g3:=t¡display(disk([5.5+f2(1,4/sqrt(2),1/sqrt(2),t),0],.3),

RS(5+f2(1,4/sqrt(2),1/sqrt(2),t),0),w(7)):

> movie:=NULL:for i to 40 do movie:=movie,g3(i);od:

> display([movie],IT,SC);

∆ = 0 ñ λ = ω

> f2(1,Pi,Pi,t);

Error, (in f2) division by zero

Dĩ nhiên là hàm f2 không xác định khi ∆ = 0. Ta phải tìm lời giải bằng cách thay các trị(hình thức) vào (9.2) và giải trực tiếp:

Phạm Minh Hoàng 173

Page 190: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

> subs(lambda=c,omega=c,eq); dsolve(%,DK);x2(t) + 2cx1(t) + c2x(t) = 0

ñ x(t) = x0ect + x0ce

ctt

Phương trình (9.2) nhận nghiệm kép x = c.> fc:=unapply(rhs(%),(x0,c,t)):

> plot([f2(1,2/sqrt(2),1/sqrt(2),t),fc(1,1/2)],

t=0..7*Pi,linestyle=[4,1],thickness=[2,3]);

Trong trường hợp ∆ ¥ 0, chuyển động không còn tuần hoàn nữa nhưng chậm dần. Đặcbiệt trong trường hợp ∆ = 0, [Hình 9.4 (b)] giá trị của λ được gọi là giá trị tới hạn (critical).Khi đó thời gian trở về vị trí cân bằng ngắn nhất (đường nét đậm liên tục). Và đóng cũng làtrị số có nhiều ứng dụng trong công - kỹ nghệ khi người ta chế tạo các ống giảm xóc, cân,galvannometre...

Khảo sát hiện tượng cộng hưởng

Lò xo dưới ảnh hưởng ngoại lực

Giả sử bây giờ người ta tác dụng vào lò xo một lực f = cos(ut)

Giải và gán kết quả vào hàm f3 rồi vẽ đồ thị với x0 =1

2, λ =

1

5, ω = π, u =

3

2:

> f:=cos(u*t):eq=f;

> r:=dsolve(eq=f,x(0)=x0,D(x)(0)=0):> f3=unapply(rsh(%),x0,lambda,omega,u,t):

> plot(f3(1/2,1/5,Pi,3/2,t),t=0..20*Pi);

Hình 9.5 cho thấy trong 10 giây đầu tiên chuyển động của lò xo bất kỳ, người ta gọi đây làgiai đoạn chuyển tiếp, sau giai đoạn này chuyển động trở nên điều hòa. Khoảng thời gian nàydĩ nhiên tùy thuộc vào các giá trị của λ, ω, u. Dĩ nhiên, ngoại lực phải là nội lực hoàn toàn.

Hình 9.5: Chuyển động với ảnh hưởng ngoại lực

Tạo hình động:> g3:=t¡display(disk([5.5+super(f3(1,1/5,Pi,2/5,t)),0],.3),

RS(5+(f3(1,1/5,Pi,2/5,t)),0),w(7)):

> movie:=NULL:for i to 100 do movie:=movie,g3(i);od:

> display([movie],IT,SC);

174 Phạm Minh Hoàng

Page 191: Maple Va Cac Bai Toan Ung Dung

9.1. Lò xo nằm ngang

Hiện tượng cổng hưởng

Đến đây người ta sẽ đặt câu hỏi: phải chăng chuyển động điều hòa này sẽ tiếp tục đến vôtận? Câu trả lời tất nhiên là phụ thuộc vào lực cưỡng bức. Nhưng theo các kết quả thực nghiệm,thì người ta thấy rằng biên độ này sẽ càng lúc càng tăng khi tần số dao động cưỡng bức trùngvới tần só dao động riêng của hệ thống. Đó là hiện tượng cộng hưởng.

Dưới đây chúng ta hãy kiểm chứng lại tính chất đặc biệt này.

Gọi M,B, K lần lượt là khối lượng viên bi, lực giảm xóc, và độ cứng lò xo.

Gọi f(t) = F0eiut là lực cưỡng bức có vận tốc góc là u.

Dao động của hệ thống cũng có cùng mọt vận tốc góc u và có phương trình là x(t) =Aei(ut+ϕ)

Nếu dùng lại phương trình (9.2), ta có:Mx2(t) + Bx1(t) + Kx(t) = x2(t) + 2λx1(t) + ωx(t) = f(t)

ñ 2λ =B

M,ω2 =

K

M> f:=F0*exp(i*u*t):x(t):=A*exp(i*(u*t+phi));eq=f;

F := F0eiut

Au2ei(ut+ϕ + 2iλAuei(ut+ϕ + ω2Aei(ut+ϕ =F0e

iut

M

Vì phương trình trên đúng với mọi thời điểm t, vậy thi t = 0 ta có:> collect(subs(t=0,eq=f),exp);

(Au2 + 2iλAu + ω2A)eiϕ =F0e

0

M

Phương trình trên gắn liền biên độ với tần số cưỡng bức. Nếu nhân hai vế với dạng liênhợp, chúng ta sẽ có bình phương của biên độ dao động:

> lhs(%)*conjugate(lhs(%))=rhs(%)*rhs(%);

(Au2 + 2iλAu + ω2A)eiϕ(Au2 + 2iλAu + ω2A)eiϕ =F 2

0

M2

> assume(phi>0):evalc(%);

(Au2 + ω2A)eiϕ + 4λ2A2u2 =F 2

0

M2

> op(select(i¡sign(i)>0,[solve(%,A)]));F0

M?

u4 2u2ω2 + 4λ2u2 + ω4

Tìm biên độ dao động cực đại bằng cách lấy đạo hàm biểu thức trên theo u và giải phươngtrình theo u:

> solve(diff(%),u),u);

0,?

ω2 2λ2,?ω2 2λ2

> select(i¡i<>0,select(i¡sign(i)>0,[%]));?ω2 2λ2

Chứng minh trên cho thấy hiện tượng cộng hưởng xảy ra khi:

u2 =?

ω2 2λ2 =

cK

M B2

2M2

Phạm Minh Hoàng 175

Page 192: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

Ứng dụng số

Dùng các trị số tương ứng (M = 20, K = 10, B = 1) hay (λ =1

40, ω =

1?2). Dĩ nhiên

không thể chọn λ ¡ ω, vì lúc ấy không có dao động tuần hoàn. Hơn nữa, vì:

2λ2 =B2

2M2=

1800

! ω2 =K

M=

12

Nên để đơn giản hóa vấn đề, ta có thể loạiB2

2M2.

Riêng về lực cưỡng bức ta chọn biên độ bằng 3 và vân tốc góc u = ω =

?2

2. Tóm lại

phương trình chuyển động có độ giảm xóc và cưỡng bức sẽ là:> lambda:=1/40:omega:=sqrt(1/2):u:=1/sqrt(2):

> F0:=3/20:x0:=1:f:=F0*cos(u*t):eq=f;

x2(t) +120

λx1(t) +12x(t) =

320

cos(t?2)

> dsolve(eq=f,x(0)=1,D(x)(0)=0):

x(t) = 3?

2 sin(?

22

t) + e140

t cos(140?

799t) 747?

799e140

t sin(140?

799t)

> p:=unapply(evalf(rhs(%)),t):

> plot(p(t),t=0..120);

Hình 9.6: Chuyển động khi ngoại lực (a) cùng vận tốc góc và (b) không cùng vận tốc góc

Tạo hình động (p(t) P R ), không cần dùng hàm super (9.5)):> g5:=t¡display(disk([5.5+p(t),0],.3),RS(5+p(t),0),w(10)):> tu:=time():

> movie:=NULL:for i to 100 do movie:=movie,g5(i);od:time()-tu;

15.911[5]5Nếu p(t) khong được khai báo với evalf, thời gian tính sẽ nhiều hơn gấp đôi. Vì khi t lớn, các phân số sẽ

176 Phạm Minh Hoàng

Page 193: Maple Va Cac Bai Toan Ung Dung

9.2. Hệ ba lò xo nằm ngang

> display([movie],IT,SC);

Qua đồ thị 9.6 (a) và nhất là qua hình động trên, chúng ta thấy rõ ràng tính chất, hiện tượngcộng hưởng và nhất là những kết quả nghiêm trọng của nó. Lực cưỡng bức ở đây mang một vậntốc góc với hệ thống và với một biên độ băng 3. Mặc dù ta chỉ kéo khối m ra 1 đơn vị chiều dàinhưng biên độ dao đọng gia tăng từ từ cho đến khi có dài gấp 4!. Chúng ta dễ dàng tưởng tượngra rằng nếu lò xo không được làm bằng một loại thép tốt thì nó có thể đứt chỉ sau một thời gianngắn. Hình ảnh khôi hài, sinh động mà chúng ta thấy được trên màn hình đã là nguyên nhân củanhiều tai nạn thảm khốc trên thế giới, và ký ức của con người còn ghi lại những hình ảnh sụp đổđầy ấn tượng của chiếu tàu Tacoma (Hoa Kỳ) và năm 1940 (Xem bài đọc thêm cuối chương).

Điều quan trọng ở đây không phải là biên độ mà là tần só dao động. Vì nếu chúng ta tăng

tần số lên gấp đôi (từ?

2

2lên

?2) thì dao động sẽ giảm đáng kể cho dù tăng biên đọ lên gấp 3

(từ?

3

20lên

1

2)!

> u:=sqrt(2):F0:=1/2:eq=f;

x2(t) +120

λx1(t) +12x(t) =

120

cos(?

2t)

> dsolve(eq=f,x(0)=1,D(x)(0)=0):

x(t) =201

360349?

799e140

t sin(140?

799t)+

601451

e140

t sin(140?

799t) +5

451sin(

?2t)?

2 150451

cos(?

2t)

> plot(rhs(%),t=0..200); [Hình 9.6 (b)]

9.2 Hệ ba lò xo nằm ngang

Ba lò xo nằm ngang có cùng độ dài l và độ cứng k được nối liên kết với nhau. Lòxo bên trái được móc vào tường. Ở mỗi đầu lò xo có gắn một khối m. Kéo khối mthứ ba một khoảng rồi buông ra. Khảo sát chuyển động của hệ

Hình 9.9 dưới đây cho thấy các lò xo co hoặc giãn bất kỳ. Những chuyển động của hệ kếtnối này vô cùng phức tạp nhưng khi được giải và tạo động (animate) bằng Maple thì đây lànhững bài học rất sinh động.

Hình 9.7: Hệ ba lò xo trước và sau khi chuyển động

Ta dùng lại các định nghĩa của lò xo và khối m giống như chương trước (phương trình(9.1)).

> restart:with(plots):with(plottools):

trở nên khổng lồ.

Phạm Minh Hoàng 177

Page 194: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

> alias(SC='scaling=constrained' ,IT='insequence=true'):

> RS:=(a,b) ¡plot(sin(5*(2*Pi*x/(b-a)-2*Pi*a/(b-a)))/2,x=a..b,SC);RS := (a, b) ÞÑ plot

(12sin(5(

2πx

b a 2πa

b a)), x = a..b, SC

)Gọi x(t), y(t), z(t) là độ giãn của ba lò xo (chứ không phải tọa độ). Ta có phương trình

chuyển đọng: (dùng alias để hiển thị y2 thay vìd2y

dt2)

> alias('x''(t)'=(D@@2)(x)(t),'y''(t)'=(D@@2)(y)(t),'z''(t)'=(D@@2)(z)(t),

'x'(0)'=(D)(x)(t)(0),'y'(0)'=(D)(y)(0),'z'(0)'=(D)(z)(0)):

> p1:=m*(D@@2)(x)(t)=-k*x(t)+k*(y(t)-x(t)):

> p2:=m*(D@@2)(y)(t)=-k*(y(t)-x(t))+k*(z(t)-y(t)):

> p3:=m*(D@@2)(z)(t)=-k*(z(t)-y(t)):p1;p2;p3;#mx2(t) = kx(t) + k(y(t) x(t))my2(t) = k(y(t) x(t)) + k(z(t) y(t))mz2(t) = k(z(t) y(t))

Điều kiện ban đầu: vị trí và vận tốc đầu của hai khối bên trái bằng 0, khối thứ 3 vì trí bằng1, vận tốc đầu bằng 0 (kéo giãn ra 1 đơn vị chiều dài và buông ra không vận tốc đầu):

> ci:=x(0)=0,y(0)=0,z(0)=1,D(x)(0)=0,D(y)(0)=0,D(z)(0)=0;

ci := x(0) = 0, y(0) = 0, z(0) = 1, x1(0) = 0, y1(0) = 0, z1(0) = 0

Ởnhững hệ phương trình phức tạp như trên, Maple chắc chắn sẽ khong thể giải bằng phươngpháp hình thức. Ta giải ngay bằng phương pháp số (mặc định Runge-Kutta 4 nút), và chọn cáckết quả của 3 khối x, y, z để gán vào ba chuỗi tương ứng X,Y, Z trước khi vẽ đồ thị chuyểnđộng. Để đơn giản, ta lấy 200 điểm để vẽ và mỗi bước là

1

10để đổ thị có một độ mịn chấp nhận

được:> s:=dsolve(p1,p2,p3unionci,x(t),y(t),z(t),numeric):> s(1);

[t = 1, x(t) = .00957,d

dtx(t) = .03668, y(t) = .22026,

d

dty(t) = .38403,

z(t) = .76998d

dtz(t) = .42170

> X:=seq([i,subs(s(i/10),x(t))],i=1..200):plot(([X]),title='X(t)');

> Y:=seq([i,subs(s(i/10),y(t))],i=1..200):plot(([Y]),title='Y(t)');

> Z:=seq([i,subs(s(i/10),z(t))],i=1..200):plot(([Z]),title='Z(t)');

Quan sát 3 đồ thị hình 9.8 chúng ta thấy chuyển động của 3 khối m không tuần hoàn, nếukhông muốn nói là bất kỳ. Để thấy được chuyển động chung, không gì hay hơn là làm hìnhđộng. Nguyên tắc khá đơn giản: ta cộng vào tọa độ của ba khối m và ba lò xo các giá trị củaX, Y, Z. Các chuỗi này có cấu trúc hai phần tử: số thứ tự và giá trị chuyển vị. Dĩ nhiên ta chỉquan tâm đến giá trị chuyển vị.

X = [1, .00957], [2, .00118], [3, .00374], [4, .00550] . . .

- Đối với 3 khối m ta cộng vào hoành độ của chúng các giá trị của X, Y, Z (vì chúng chỉtrượt trên Ox)

- Đối với các lò xo:

Lò xo thứ nhất đầu trái cố định, đầu phải có giá trị là X[i, 2]

Lò xo thứ hai đầu trái có giá trị là X[i, 2], đầu phải là Y [i, 2]

178 Phạm Minh Hoàng

Page 195: Maple Va Cac Bai Toan Ung Dung

9.2. Hệ ba lò xo nằm ngang

Hình 9.8: Chuyển động của hệ thống

Lò xo thứ ba đầu trái có giá trị là Y [i, 2], đầu phải là Z[i, 2]

Và ta làm như thế i lần, với i là tham số của mọt hàm (thí dụ f ). Điều này có nghĩa là f(i)là trạng thái (vị trí) của m (hay một lò xo) ở điểm i. Sau cùng để tạo hình đọng ta chỉ cần cho ithay đổi và dùng insequence=true.

Riêng ở đây, vì một lý do không giải thích được (có thể vì sơ sót hoặc có thể giống trườnghợp 9.1), khối m bên phải không hiện ra trên màn hình. Và để giải quyết, ta phải tiếp tục "lừa"Maple bằng cách tạo ra một hàm:

> bidon:=plot(1,x=23..23.1):

Và sau cùng, chúng ta có những dòng lệnh sau (bạn cần có mọt máy tính khá mạnh để cóthể xem "đoạn phim" này):

Phạm Minh Hoàng 179

Page 196: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> bidon:=plot(1,x=23..23.1):> fx:=i)¡disk([6+X[i,2],0],.5):> fy:=i)¡disk([13+Y[i,2],0],.5):> fz:=i)¡disk([20+Z[i,2],0],.5):> systems:=proc(i)

plots[display](fx(i),fy(i),fz(i),RS(0,5+X[i,2]),RS(7+X[i,2],12+Y[i,2]),RS(14+Y[i,2],19+Z[i,2]),bidon);

end:> movie:=NULL:for i to 100 do movie:=movie,systems(i);od:> plots[display]([movie],IT,SC,view=[0..25,-1..1]);

Bảng 9.1: Các lệnh tạo hình động cho hệ ba lò xo có một đầu tự do

9.3 Bài đọc thêm: Cầu Tacoma

Trước tiên chúng ta cần có một chút kháiniệm cơ bản giữa loại loại cầu : cầu bê-tông vàcầu treo:

Cầu bê-tông : thoạt đầu người ta xây dựngcác trụ cầu với khoảng cách thay đổi từ 20 đếndưới 100m (khoảng cách này còn gọi là nhịpcầu). Tiếp đó người ta mới gác lên giữa hai trụnhững cây đà (còn gọi là dầm) bằng bê-tông cốtthép. Tùy theo bề mặt cầu lớn hay nhỏ, ngườita sẽ bố trí số dầm cho phù hợp. Lấy thí dụcầu Sàigòn nằm trên xa lộ Hà Nội có 21 dầmtiết diện 1.5 x 1 cho mỗi nhịp 24 mét. Trên 21thanh dầm này người ta sẽ đổ những tấm đanlàm mặt cầu. Tất cả những cấu trúc này đềuđược gắn chặt với nhau tạo thành một khối cótrọng lượng xấp xỉ 2000 tấn. Sau khi xong mộtnhịp, người ta lại bắt đầu nhịp kế tiếp.

Cầu treo : có hai loại cầu treo, cầu treocáp thẳng và cầu dây văng (hay cáp xéo). ỞViệt Nam, đến năm 2007 thì mới chỉ có cầuMỹ Thuận, cầu Bãi Cháy, trong tương lai cócầu cần thơ, cầu Rạch Miễu. Tất cả đều là cầudây văng. Nhưng cho dù là dây văng hay cáptreo thì nguyên tắc chung cũng chỉ là treo sàncầu lên hai trụ chính. Khoảng cách giữa haitrụ (còn gọi là nhịp chính) thay đổi từ 400 đến800m cho dây văng và 500 đến 2000m cho cáp

thẳng. Nhịp chính ở cầu treo dài hơn rất nhiềuso với cầu bê-tông, và đó chính là nguyên nhâncủa những tai hại.

Thử tưởng tượng khi chúng ta treo mộtviên bi vào đầu một sợi dây, viên bi sẽ lắc lưnếu có gió. Sợi dây càng dài, lắc càng dữ.Nếuchiều dài này lên đến hàng trăm mét và với cơngió 50km/h, viên bi này sẽ dao động mạnh, vànhư ta đã biết trong chương này, khi dao độngđến mức cộng hưởng, biên độ sẽ tăng dẫn đếnsự phá hủy. Điều này không thể xảy ra đượcvới cầu bê-tông, vì để thổi văng 2000 tấn thìgió cũng đã thổi văng tất cả các công trình kháctrên mặt đất.

Cầu Tacoma trong bang Washington(Mỹ)do Pacific Bridge Company xây dựng với kinhphí 6,4 triệu đô la, được khánh thành vào ngày1/4/1940. Đây là dạng cầu treo cáp thẳng cónhịp chính 853 mét, bề rộng mặt cầu 11.7m.Để tạo cho mặt cầu độ cứng cần thiết, ngườita gia cố hai bên thành cầu những tấm sắt cóchiều cao 2.4m. Ngay sau ngày khánh thành,người ta đã thấy có những dao động bất thường,nhưng thời ấy mọi người không quan tâm màcòn cảm thấy thích thú ! Có người đã đi hàngtrăm cây số đến để hưởng thụ cảm giác "phiêubồng" y như Tề Thiên đằng vân gia vũ ấy.

180 Phạm Minh Hoàng

Page 197: Maple Va Cac Bai Toan Ung Dung

9.3. Bài đọc thêm: Cầu Tacoma

Để có một cái nhìn cụ thể, chúng ta thửchia tất cả các kích thước cho 100. Như thế sẽcó một tấm thép tiết diện hình chữ U lật ngượcrộng 11.7 cm, cao 2 cm, dầy 3 ly và dài 8.5mét. Đem treo trước gió thì tấm thép này sẽđong đưa, uốn éo đủ mọi chiều. Nếu là tấmthép và những sợi dây treo bằng kim loại thì cóthể không sao nhưng nếu đó là một vật liệu dònnhư bê-tông thì chắc chắn cácmấu nối giữa dâyvà sàn sẽ bung ra, và đó chính là hình ảnh sụpđổ của cầu Tacoma.

Ngày định mệnh.Vào sáng sớm ngày 7/11/1940, vận tốc gió

là 55km/h. Đến 10g, cảnh sát ra lệnh cấm lưuthông vì ngoài dao động lên xuống lại có thêmdao động xoắn, và biên độ xoắn mạnh đến lỗisàn cầu nghiêng một góc 450 so với phươngngang và kéo dài suốt ba tiếng đồng hồ, sứcgió lúc đó lên đến 70km/h với biên độ 8 mét vàtần số 0.2 Hz. Một mối nối sàn ở giữa nhịp vớidây treo bị bung ra.

Một dao động xoắn mạnh đến nỗi nó "bẻ"cây cầu ra làm 2 phần theo chiều dài và xoắnngược chiều nhau. Đến 11 giờ bất chợt mộtđoạn sàn dài gần 200 mét đổ ụp xuống sông :các mối nối đã không chịu nổi sự "tra tấn" củathiên nhiên và sự mất cân bằng về trọng lượngđã làm phần còn lại của nhịp giữa nhanh chóngrơi xuống nước. Không có nhịp chính, hai bêncầu dẫn bị nhấc bổng lên cao 10 mét.

Các cuộc điều tra đã tức khắc nhìn ra điểmyếu của cây cầu là nó quá "mềm", nói theongôn từ xây dựng là tỷ só chiều dây sàn cầutrên chiều dài là

2.4

850 1

350là quá nhỏ và

cây cầu xem ra chỉ "cứng" hơn một cọng bún! Cũng nên nói, thoạt đầu kĩ sư thiết kế là ôngClark Eldridge đã tính toán là

1

112, nhưng sau

đó chủ đầu tư đã thuê một công ty khác duyệtlại bản thiêt kế để giảm xuống

1

350. Cõ lẽ thời

ấy người ta chưa biết đến khí động học, hoặccũng đơn thuần là vì "chảnh" ! Chiều dài củaTacoma đưa nó trở thành cây cầu dài thứ bathế giới vào lúc ấy !

Những chi tiết lý thú:

Đúng là thiết kế sai lầm nhưng chúng tacũng cần lưu ý tốc độ xây dựng nhanh: chỉ mất 17 tháng để hoàn tất một câycầu treo dài 1800m, khẩu độ 853m, tĩnhkhông (khoảng cách từ sàn cầu đến mắtnước) 20m, hai trụ tháp 130m. Một kỷlục đáng nể vào năm 1940.

Rất may, khi cầu sụp, giao thông đãgián đoạn nên không có thiệt hại nhânmạng. "Nạn nhân" độc nhất là một... conchó. Ông chủ của nó muốn biết cảm giácmạnh và đã maymắn bám kịp vào chỗ antoàn khi nhịp giữa rơi xuống nước.

Vào ngày khánh thành, một ngân hàngở Tocoma đã trưng bảng quảng cáo chothương hiệu của mình là vững chắc nhưcầu Tacoma. Không cần phải nói cũngbiết là sau đó ông giám đốc đã hạ cái biểnquảng cáo chết tiệt này xuống ngay tứckhắc.

Phạm Minh Hoàng 181

Page 198: Maple Va Cac Bai Toan Ung Dung

Chương 9. Bài toán dao động 1: Lò xo

Hình 9.9: Cầu Tacoma lúc sụp đổ

182 Phạm Minh Hoàng

Page 199: Maple Va Cac Bai Toan Ung Dung

Chương10

Bài toán dao động 2: Con lắctoán học

10.1 Con lắc đơn

Xét con lắc đơn được nối như hình 10.1. Gọi l, m là chiều dài và khối lượng con lắc, θ làgóc quay.

.

.H

.A.mg

.m

.l

Hình 10.1:

Gọi G, T là động năng và thế năng, ta được:$&% T =1

2mv2 =

1

2m

(ld

dtθ(t)

)2

V = mgAH = mgl(1 cos(θ(t)));

Page 200: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Áp dụng định lý bảo toàn cơ năng:

d

dt(T + V ) = 0 ùñ ml2

d2

dt2θ(t) + mgl sin(θ(t)) = 0

ùñ θ2(t) +g

lsin(θ(t)) = 0 (10.1.1)

Trước tiên ta nhập các thư mục và định nghĩa chữ viết tắt: a = θ.> restart:with(plots):with(plottools):alias(theta=a):

> setoptions(color=black,thckness=2):

Trường hợp 1: góc quay nhỏ

Trong trường hợp này sin θ(t) θ(t), và phương trình (10.1) trở thành:> eq1:=diff(a(t),t,t)+g/l*a(t)=0;

eq1 :=d2

dt2θ(t) +

d

lθ(t) = 0

Chonj a(0) =π

6, giải phương trình vi phân, thu gon kết quả và sau đó gán giá trị một hàm

s(g, t):> dsolve(eq1, a(0) = (1/6)*Pi, (D(a))(0) = 0):> combine(subs(1/l = 1/sqrt(lˆ2), %), radical, symbolic);

θ(t) =π

6cos(

cg

lt)

> s := unapply(rhs(%), g, t):

> l:=1:plot([s(9.8, t), s(1, t)],t=0..10,linestyle=[1,4]);> plot([diff(s(9.8,t),t),diff(s(1, t),t)],

t=0..10,linestyle=[1,4]);

Dao động của con lắc trong trường hợp này không những tuần hoàn mà còn là một dao độngđiều hòa. Hình [12.2(a)] cho thấy khối m có biên độ tối đa là

π

6 0.524. Còn Hình [10.2(b)]

cũng cho thấy tính điều hòa của tốc độ.Dao động này được thấy rõ hơn khi ta hiển thị các chuyển động theo thời gian (Hình [12.2

(c)]). Để làm điều này trước tiên ta phải dùng hàm disk để vẽ khối m. Tọa độ của đầu dây cộtm được xác định bởi:

x = cos(s(t)), y = sin(s(t)).Tuy nhiên đây là hệ tọa độ trực chuẩn bình thường mà Maple dùng để tính:Ox dương về phía phải và Oy dương hướng lên trên. Để biểu diễn trong hệ tọa độ Ox

dương về phía phải và Oy dương hướng xuống dưới, chúng ta cần quay góc π

2. Trong đoạn

chương trình dưới đây fd tượng trưng cho khối m và ld tượng trưng cho sợi dây (nhớ tránhdùng biến l vì l đã ký hiệu cho độ dài).

> fd := i¡disk(([cos(-(1/2)*Pi+s(9.8, (1/10)*i)),

sin(-(1/2)*Pi+s(9.8, (1/10)*i))], .03), color = wheat):

> ld:=i¡plot([r, -(1/2)*Pi+s(9.8, (1/10)*i),

r = 0 .. 1], coords = polar):

> sd := seq(display([ld(i), fd(i)]), i = 0 .. 8):

> display(sd, scaling = constrained);

184 Phạm Minh Hoàng

Page 201: Maple Va Cac Bai Toan Ung Dung

10.1. Con lắc đơn

Hình 10.2: Con lắc đơn với góc quay nhỏ

Để tạo hình động (dĩ nhiên chỉ nhìn thấy được trên màn hình):> sd := seq(display([ld(i), fd(i)]), i = 0 .. 20):[1]> display(sd, insequence = true, scaling = constrained);

Trường hợp 2: góc quay lớn không ma sát

Lấy lại phương trình (10.1). Vì Maple không thể tìm ra lời giải giải tích nên ta đi thẳng vàotính toán số. Để đơn giản ta cho l = g = 1:

> g := 1: eq2 := diff(a(t), t, t)+g*sin(a(t))/l = 0;

eq2 :=d2

dt2θ(t) + sin(θ(t)) = 0

Trường hợp này thay vì cho điều kiện đầu là biên độ ta thử cho là tốc độ. Ta khai báo 6 vậntốc đầu với giá trị thay đổi từ 1 đến 2 (điều kiện sau cùng bằng 1.98). Đoạn chương trình sau sẽtính và vẽ đường biểu diễn biệ độ và tốc độ:

1Chỉ số trong hàm fd được chia cho 10 vì giảm vận tốc 10 lần.

Phạm Minh Hoàng 185

Page 202: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

> tk:=1:p:=NULL:q:=NULL:

> v:=1,1.4,1.8,1.95,2,1.98;

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

> for i to 6 docond ini:=a(0)=0,D(a)(0)=v[i]:u:=dsolve(eq2,cond ini,a(t),numeric):if i=6 then tk:=2:fi:p:=p,odeplot(u,[t,a(t)],0..15,numpoints=200,thickness=tk);q:=q,odeplot(u,[t,diff(a(t),t)],0..15,numpoints=200,thickness=tk);od:display([p]);display([q]);

Bảng 10.1: Các lệnh để tạo hình tĩnh chuyển động con lắc đơn.

Hình 10.3(a) biểu diến biện độ dao động của 6 điều kiện đầu. Ta nhận thấy khi θ1(0) cànglớn, chu kỳ càng lớn, chuyển động chậm dần. Khi θ1(0) = 2, con lắc dao động đến t = 4 vàđứng yên ở biên độ bằng 3. Đường nét đậm tương đương với θ1(0) = 1.98 biểu diễn cho daođộng có biên độ lớn nhất trước khi đứng yên.

Hình 10.3(b) biểu diến tốc độ dao động của 6 điều kiện đầu. Ta nhận thấy khi θ1(0) cànglớn, chu kỳ càng lớn. (đường nét đậm tương đương với θ1(0) = 1.98).

Để vẽ hình tĩnh các chuyển động, cần phải xác định thời gian để con lắc thực hiện hết mộtchu kỳ. Khối lượng m khởi động ở điểm cân bằng (θ(0) = 0) với vận tốc bằng 1.98 đi đến biênđộ cực đại và rơi xuống. Điểm này được xác định khi θ1(t) đổi dấu từ dương sang âm:

> for i to 1000 while eval(diff(a(t),t),u(i/100))>0 do od: i;

336

Và điểm chấm dứt một dao động chính là lúc con lắc đạt đến biên độ lớn nhất lần thứ haivà rơi xuống. Để tìm điểm này ta chỉ cần đi tìm t sao cho θ1(t) đổi dấu từ âm sang dương:

> for i from 336 to 2000 while eval(diff(a(t),t),u(i/100))<0 dood: i;

1007

Quan sát hình 10.4 biểu diễn tốc độ dao động của 6 điều kiện đầu, ta thấy đường nét đậmcắt trục hoành lần thứ nhất ở tọa độ xấp xỉ 3.4 và lần thứ hai ở tọa độ xấp xỉ 10. Điều này đúngvới kết quả vừa tính được là 336 và 1007 (phải chia cho 100) như đã làm trong vòng lặp for.

Và sau cùng, để vẽ hình tĩnh - Hình 10.3(c) ta làm:> npas:=10:

> fd:=i¡disk([cos(-Pi/2+eval(a(t),u(i/npas))),sin(-Pi/2+eval(a(t),u(i/npas)))],.05):

> ld:=i¡plot([r,-Pi/2+eval(a(t),u(i/npas)),r=0..1],coords=polar):

> sd:=seq(display([ld(i),fd(i)]),i=34..101):

> display(sd,insequence=false,scaling=constrained);

Còn riêng về hình động thì ta cần phải xác định giá trị t khi con lắc đi qua khởi điểm

186 Phạm Minh Hoàng

Page 203: Maple Va Cac Bai Toan Ung Dung

10.1. Con lắc đơn

Hình 10.3: Con lắc đơn với góc quay lớn

(θ(t) = 0) lần thứ hai nghĩa là khi vận tốc cực đại lần thứ hai. Trên hình (10.4) giá trị này xấpxỉ 13.5. Để kiểm chứng:

> for i from 1346 do print(i,eval(diff(a(t),t),u(i/100))) od;

1341, 1.97973316191072302

1342, 1.97996068705870898

1343, 1.97999024276781444

1344, 1.97982181399630108

1345, 1.97945548237287984

1346, 1.97889142619671188

Chính xác là ở t = 1343, a1(t) cực đại.Và để có hình động:

> sd := seq(display([ld(i), fd(i)]), i = 0 .. 134):

> display(sd, insequence = true, scaling = constrained);

Phạm Minh Hoàng 187

Page 204: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Trương hợp 3: góc quay lớn với ma sát

Dao động bây giờ chịu thêm một lực ma sát fr tỷ lệ với vận tốc, phương trình vi phân códạng g = l = 1):

> eq3:=diff(a(t),t,t)+f[r]*(diff(a(t),t))+g*sin(a(t))/l=0;

eq3 :=d2

dt2θ(t) + fr

d

dtθ(t) + sin(θ(t)) = 0

Chọn fr = 1.5 và bốn vận tốc đầu giống như trường hợp không ma sát:> f[r] := 1/5: tk := 1: p := NULL: q := NULL:

> v := 1, 1.4, 1.8, 2:

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼> for i to 4 do

cond ini:=a(0)=0,D(a)(0)=v[i]:u:=dsolve(eq3,cond ini,a(t),numeric):if i=4 then tk:=2:fi:p:=p,odeplot(u,[t,a(t)],0..15,numpoints=200,thickness=tk);q:=q,odeplot(u,[t,diff(a(t),t)],0..15,numpoints=200,thickness=tk);od:display([p]);display([q]);

Bảng 10.2: Các lệnh để tạo hình tĩnh chuyển động con lắc đơn với ma sát.

> sd := seq(display([ld(4*i), fd(4*i)]), i = 0 .. 18):[2]> display(sd, scaling = constrained); [Hình 10.5 (c)]

Hình 10.5 (a), (b) cho thấy chuyển động chậm dần đến khi tắt hẳn. Hình 10.5 (c) chothấy chuyển động không đểu (không tuyến tính). Để tạo hình động ta lại phải đi tìm t sao cho

2Ở đây ta hiển thị một hình trên bốn để thấy rõ chuyển động phi tuyến.

188 Phạm Minh Hoàng

Page 205: Maple Va Cac Bai Toan Ung Dung

10.2. Con lắc kép

Hình 10.4: Con lắc đơn với góc quay lớn và lực ma sát

θ(t) = 0. Ta tìm được t 307.> sd := seq(display([ld(i), fd(i)]), i = 0 .. 307);

> display(sd, scaling = constrained);

10.2 Con lắc kép

[3] Xét con lắc kép bao gồm hai con lắc đơn được nối với nhau như Hình 10.6. Gọil1,m1, l2, m2 là chiều dài và khối lượng của hai con lắc đơn, u1, u2 là hai góc quay tương ứng.

Trong suốt pàn dưới đây, để dễ đọc, các đại lượng u1, l1, m1 sẽ được viết là u1, l1,m1.Gọi T, V là động năng và thế năng, ta được:

> x1 := l1*cos(u1(t)); y1 := l1*sin(u1(t));

3Theo [4].

Phạm Minh Hoàng 189

Page 206: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

.

.u1

.x

.y

.u2

.m2

.l2

.m1

.l1

Hình 10.5: Con lắc kép

"x1 := l1 cos(u1(t))y1 := l1 sin(u1(t)) (10.2.1)

> x2 := l1*cos(u1(t))+l2*cos(u2(t));

> y2 := l1*sin(u1(t))+l2*sin(u2(t));"x2 := l1 cos(u1(t)) + l2 cos(u2(t))y2 := l1 sin(u1(t)) + l2 sin(u2(t)) (10.2.2)

> T[1] := simplify((1/2)*m1*((diff(x1, t))ˆ2+(diff(y1, t))ˆ2));

> T[2] := (1/2)*m2*((diff(x2, t))ˆ2+(diff(y2, t))ˆ2);$''''''''&''''''''%

T1 :=12m1l

21

(d

dtu1(t)

)2

T2 :=12m2

(( l1 sin(u1(t))

d

dtu1(t) l2 sin(u2(t))

d

dtu2(t)

)2

+(l1 cos(u1(t))

d

dtu1(t) + l2 cos(u2(t))

d

dtu2(t)

)2)

(10.2.3)

> V[1] := m1*g*(l1-l1cos(u1(t)));

> V[2] := m2*g*(l1+l2-(l1*cos(u1(t))+l2*cos(u2(t)));"V1 := m1g(l1 l1 cos(u1(t)))V2 := m2g(l1 + l2 l1 cos(u1(t)) l2 cos(u2(t))) (10.2.4)

Lagrange là một biểu thức xác định bởi công thức L = T V :> L := T[1]+T[2]-V[1]-V[2]:

Và phương trình Lagrange của hệ là:$''&''%d

dt

( BLBu11(t)

) BLBu11(t)

= 0

d

dt

( BLBu12(t)

) BLBu12(t)

= 0 (10.2.5)

190 Phạm Minh Hoàng

Page 207: Maple Va Cac Bai Toan Ung Dung

10.2. Con lắc kép

Với một hệ phức tạp như trên, ta lấy đạo hàm theo u1i(t), ui(t) của từng phần rồi cọng chung

vào. Trước tiên vớid

dt

( BLBu11(t)

), trên nguyên tắc ta làm:

> diff(L,diff(u1(t),t));

Error, wrong number (or type) of parameters in function diff

Maple xuất ra một thông báo sai, vì diff(u1(t),t) không được hiểu là một biến để lấyđạo hàm. Để giải quyết, ta sẽ đặt tên cho các biến ui(t) và u1i(t) thành những ký tự đơn giản, rồisau khi lấy đạo hàm theo các ký tự nà, ta sẽ đổi lại:

> L := subs(u1(t)=t 1,u2(t)=t 2,diff(u1(t), t)=t1p, diff(u2(t),t)=t2p, L):[4]

Đặt:d

dt

( BLBu11(t)

)= dL dt1p,

BLBu11(t)

= dL dt1,d

dt

( BLBu12(t)

)= dL dt2p,

BLBu12(t)

= dL dt2

Và như thế, các đại lượng trong hệ (10.6) lần lượt là:> dL dt1p:=diff(L, t1p): dL dt1:=diff(L, t 1);

> dL dt2p:=diff(L, t2p): dL dt2:=diff(L, t 2):

Sau khi lấy đạo hàm, đổi trở lại các biến ban đầu:> rp:=t 1=u1(t),t 2=u2(t),

t1p=diff(u1(t), t),t2p=diff(u2(t),t):> dL dt1p:=subs(rp, dL dt1p): dL dt1:=subs(rp, dL dt1):

> dL dt2p:=subs(rp, dL dt2p): dL dt2:=subs(rp, dL dt2):

Để đơn giản, chọn m1 m2 = m và l1 = l2 = l. Hệ Lagrange (10.6) trở nên:> m1:=m2: m2:=m: l1:=l2: l2:=l:

> ode[1] := combine(diff(dL dt1p, t)-dL dt1, trig);

> ode[2] := combine(diff(dL dt2p, t)-dL dt2, trig);$''''''''''&''''''''''%

ode1 := 2ml2d2

dt2u1(t) + ml2

(d

dtu2(t)

)2

sin(u1(t)) u2(t))+

ml2d2

dt2u2(t) cos(u2(t)) u2(t)) + 2mgl sin(u1(t))

ode2 := ml2(

d

dtu1(t)

)2

sin(u1(t) u2(t))+

ml2d2

dt2u1(t) cos(u1(t) u2(t)) + ml2

d2

dt2u2(t) + mgl sin(u2))

(10.2.6)

Trường hợp 1: góc quay nhỏ, tính toán hình thức

Giả thuyết u1, u2 nhỏ ta có thể viết:sin(u1) = u1, sin(u2) = u2, sin(u1 u2) = 0, cos(u1 u2) = 1[5]

> eq1:=subs(sin(u1(t)-u2(t))=0,

cos(u1(t)-u2(t))=1,sin(u1(t))=u1(t),ode1);> eq2:=subs(sin(u1(t)-u2(t))=0,

4Các dấu ngoặc nọn () trong trang này rất quan trọng.5Tùy version và tùy lúc chạy, đôi khi phải thêm điều kiện cos(u2 u1) = 1.

Phạm Minh Hoàng 191

Page 208: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

cos(u1(t)-u2(t))=1,sin(u2(t))=u2(t),ode2);$'&'%eq1 := 2ml2

d2

dt2u1(t) + ml2

d2

dt2u2(t) + 2mglu1(t)

eq2 := ml2d2

dt2u1(t) + ml2

d2

dt2u2(t) + mglu2(t) (10.2.7)

Để tìm nghiệm của hệ (10.2.7), đặt u1 = H cos(wt), u2 = K cos(wt) :

> u1(t):=H*cos(w*t):u2(t):=K*cos(w*t):

> eq1 := subs(cos(w*t) = 1, map(x¡x/(m*l),eq1));> eq2 := subs(cos(w*t) = 1, map(x¡x/(m*l),eq2));"

2lHw2 lKw2 + 2gHlHw2 lKw2 + gK (10.2.8)

Vì H, K bắt buộc khác không nên:> with(linalg):genmatrix(eq1,eq2,H,K;[

2lw2 + 2g lw2

lw2 lw2 + g

]Giải theo w và chỉ chọn nghiệm dương. Các nghiệm được biến đổi chút cho gọn (đưa l vào

trong căn)[6]> select(i¡sign(i)>0, [solve(det(%), w)]):

> gu := combine(map(x¡x*l/sqrt(lˆ2),%), radical, symbolic);

gu :=[c

1l(2 +

?2)g,

c1l(2?2)g

]Thay các giá trị của w vào (10.2.6). Trước tiên với w = gu[2]:

> K = expand(rationalize(solve(subs(w=gu[2], eq1), K)));

K = H?

2

H và K cùng dấu, vậy hai con lắc dao động cùng chiều.Tương tự, khi w = gu[2], ta có K = H

?2. Hai con lắc dao động trái chiều.

Để thấy cụ thể chuyển đọng của chúng ta cần vẽ các đường biểu diễn cũng như thực hiệncác hình động. Trước tiên ta nhập các số liệu thích ứng:

> l := 1: g := 9.8: H := 1/2: K := H*sqrt(2):

Sau đó khai báo hai hàm tương ứng với hai dao động. Với w = gu[2]:> r1 := t¡H*cos(gu*[2]*t); r2:=t¡K*cos(gu*[2]*t);[

r1 := t ÞÑ H cos(gu[2]t)r2 := t ÞÑ K cos(gu[2]t)

]Để thực hiện các hình động ta cần khai báo hoành và tung độ của hai con lắc. Trước tiên nên

lưu ý rằng cho đến lúc này để tiện lợi, chúng ta đã tính toán dựa theo tọa độ như trong Hình 10.6(trụcOy nằm ngang vàOx nằm dọc với chiều dương hướng xuống dưới). Để hiển thị trong mộttọa độ "bình thường", ta cần phải làm một phép quay với góc quay bằngπ

2, nghĩa là sin(a) sẽ

trở thành cos(a) và cos(a) thành sin(a):xi, yi và tọa độ bi là hình vẽ hai con lắc. Lệnh display dùng để vẽ 20 chuyển dộng ban

đầu. Tuy nhiên lý tưởng là xem trên màn hình với insequence=true. Hình 10.7 (a) cho thấybiểu diễn cùng chiều của hai biên độ.

6Trước khi biến đổi có dạng1l

blg(2 +

?2),

1l

blg(2

?2)

192 Phạm Minh Hoàng

Page 209: Maple Va Cac Bai Toan Ung Dung

10.2. Con lắc kép

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

1. > with(plots):with(plottools):2. > x1:=t¡sin(r1(t)): y1:=t¡-cos(r1(t)):3. > x2:=t¡sin(r1(t))+sin(r2(t)):4. > y2:=t¡-cos(r1(t))-cos(r2(t)):5. > b1:=t¡disk([x1(t),y1(t)],.05,color=black):6. > b2:=t¡disk([x2(t),y2(t)],.05,color=black):7. > for i from 0 to 10 by 1/10 do8. > plot([[0,0],[x1(i),y1(i)],[x2(i),y2(i)]]):9. > P[i]:=display(%,b1(i),b2(i));10. > od:11. > sq:=seq(P[i/10],i=0..20):12. > display(sq,scaling=constrained,view=[-2..2,-2.1..0]);13. > plot([r1,r2],0..10,color=black,linestyle=[1,4]);

Bảng 10.3:

Tương tự, với w = gu[1]. Các biến xi, yi, bi đều là các hàm nên chúng tự động thay đổi. Tachỉ cần làm lại các lệnh từ 7 đến 13:

> K:=-2*H/sqrt(2):

> r1:=t¡H*cos(gu[1]*t); r2:=t¡K*cos(gu[1]*t);

Trường hợp 2: góc quay lớn - Tính toán số

Trước tiên, ta giải phóng các biến để lấy lại các phương trình trong (10.2.6):> l:='l':g:='g':u1(t):='u1(t)':u2(t):='u2(t)':

Và dĩ nhiên Maple không thể tìm ra lời giải giải tích cho hệ (10.2.6). Ta bước ngay vào tínhtoán só với các số hiệu tương ứng, và ta chọn hai góc quay ban đầu u1(0) = u2(0) = 1:

> g:=9.8:l:=1:

> F:=dsolve(ode1,ode2,u1(0)=1,u2(0)=1,D(u1)(0)=0,D(u2)(0)=0,u1(t),u2(t),type=numeric);

F là một dãy nhiều phần tử và mỗi phần tử gồm 4 đại lượng (ở đây chỉ hienẻ thị 4 số lẻ):> F(0.5);[

t = .5, u2(t) = .6712,BBtu2(t) = 2.4404, u1(t) = .2570,

BBtu1(t) = 1.8854

]Cách sắp xếp các phần tử của F rất bất kỳ và tùy theo mỗi lần chạy chương trình. Để chắc

chắn lấy được đúng các giá trị của u1(t), u2(t), ta phải làm các lệnh khá phức tạp:> s1:=i¡subs(F(i),u1(t)):> s2:=i¡subs(F(i),u2(t)):> s1(.5),s2(.5);

0.25702286, 0.67122248

Để hiển thị chuyển động dưới dạng tĩnh và động, làm giống như khi góc quay nhỏ:> plot([s1,s2],0..11,color=black,linestyle=[1,4]); [Hinh 10.9 (a)]

Phạm Minh Hoàng 193

Page 210: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Hình 10.6: Chuyển động cùng chiều với góc quay nhỏ

> x1:=t¡sin(s1(t)):> y1:=t¡-cos(s1(t)):> x2:=t¡sin(s1(t))+sin(s2(t)):> y2:=t¡-cos(s1(t))-cos(s2(t)):> b1:=t¡disk([x1(t),y1(t)],.05,color=black):> b2:=t¡disk([x2(t),y2(t)],.05,color=black):> for i from 0 to 10 by 1/10 do

plot([[0,0],[x1(i),y1(i)],[x2(i),y2(i)]]):

P[i]:=display(%,b1(i),b2(i));

od:

> sq:=seq(P[i/10],i=0..20):

> display(sq,insequence=false,scaling=constrained,view=[-2..2,-2.1..0]); [Hình 10.9 (b)]

Quan sát Hình 10.9 (b) thì ta thấy chuyển động của hai khối gần như đồng bộ với nhau. Bâygiờ ta cho khởi động với một góc quay lớn hơn u1(0) =

π

2, u2(0) = 1.

> F:=dsolve(ode1,ode2,u1(0)=Pi/2,u2(0)=1,D(u1)(0)=0,D(u2)(0)=0,u1(t),u2(t),type=numeric):> plot([s1,s2],0..11,color=black,linestyle=[1,4]);

Các hàm s1, s2 được khai báo bằng hàm mũi tên nên các gia trị của nó được đổi tự đọng saulệnh dsolve.

> for i from 0 to 20 by 1/10 do

plot([[0,0],[x1(i),y1(i)],[x2(i),y2(i)]]):

P[i]:=display(%,b1(i),b2(i));

od:

194 Phạm Minh Hoàng

Page 211: Maple Va Cac Bai Toan Ung Dung

10.2. Con lắc kép

Hình 10.7: Chuyển động ngược chiều với góc quay nhỏ

> q:=seq(P[i/10],i=0..140):

> display(sq[95..125],scaling=constrained,view=[-2..2,-2.1..0.2]);[Hình 10.10 (b)]

(Hình 10.10 (b) diễn tả chuyển động trong khoảng thời gian [95..125]). Cả hai hình 10.10đều chứng tỏ một điều: khi điều kện đầu vượt quá một giới hạn nào đó, chuyển động không còntuần hoàn nữa. Sau một thời gian chuyển động sẽ trở lên bất kỳ, nếu không muốn nói là "rốitung lên". Với hình động ta sẽ thấy được hiện tượng khá vui mắt này:

> display(sq[95..125],scaling=constrained,view=[-2..2,-2..0.2],

insequence=true);

Kiểm chứng

Xem Hình 10.10 (b), ta thấy sau một thời gian, hai khối m chạy lung tung cả lên. Hơnnữa, cho dù cả hai khói được thả tự do từ hai góc nhỏ hơn

π

2nhưng có những lúc khối m2 chạy

vượt lên khỏi trục Ox, điều này khiến chúng ta không khỏi đặt vấn đề "chuyển động có thực sựnhư thế hay không? hay chỉ những con số cho bởi Maple (dsolve) chỉ là những kết quả vônghĩa?". Mặt khác, nếu có cả hai khối m những góc lớn u1 u2 = 1, 5radian( 86o) và quansát thì chuyển động sẽ còn "lộn tùng phèo" đến mức đáng ngờ.

Khi ta hỏi liệu "chuyển động trên màn hình có đúng hay không?", có nghĩa là đúng so vớicái gì? Đúng so với thử nghiệm thực trong phong thí nghiệm? Nhưng làm thế nào ta tạo rađược một hệ thông hoàn toàn không ma sát? Và chẳng lẽ mỗi lần thay i, thay li lại phải làm thửnghiệm?

Cách hay nhất, khoa học nhất (và khả thi nhất) là kiểm chứng rằng cơ năng (động năng +thế năng) của hệ là một hằng số. Dùng lại các công thức lý thuyết về con lắc kép (các phươngtrình (10.2.1), (10.2.2), (10.2.3) trang ...) rồi kiểm chứng lại bằng các con số vừa tính được vàcòn đang chứa trong hai biến s1, s2.

Phạm Minh Hoàng 195

Page 212: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Hình 10.8: Chuyển động với u1(0) = u2(0) = 1 radian

Viết lại các công thức và thay ui(t) bằng si(t) và thayd

dtui bằng vi(t) với vi(t) là vận tốc

tính được từ dsolve đồng thời cho m1 = m2 = l1 = l2 = 1:> v1:=i¡subs(F(i),diff(u1(t),t)):> v2:=i¡subs(F(i),diff(u2(t),t)):

Ta có động năng của hệ T = T1 + T2 và thế năng của hệ V = V1 + V2.$''&''%T1 :=

12v1(t)2

T2 :=12( sin(u1(t))v1(t) sin(u2(t))v2(t))2+

cos(u1(t))v1(t) + cos(u2(t))v2(t))2"V1 := g(1 cos(u1(t)))V2 := g(2 cos(u1(t)) cos(u2(t)))

T, V được khai báo dưới dạng hàm theo t (hàm mũi tên), điều này vô cùng tiện lợi khi tínhcác giá trị ở một thời điểm bất kỳ.

> T:=t¡1/2*v1(t)ˆ2+1/2*((-sin(s1(t))*v1(t)-

sin(s2(t))*v2(t))ˆ2+(cos(s1(t))*v1(t)+cos(s2(t))*v2(t))ˆ2:

> V:=t¡g*(l-cos(s1(t)))+g*(2-cos(s1(t))-cos(s2(t))):Thí dụ động năng, thế năng và cơ năng của hệ ở t = 0.5 là:

> T(.5),V(.5),T(.5)+V(.5);

17.79175211, 6.313285446, 24.10503756

Nếu những gì đã tính là đúng thì cơ năng của hệ ở mọi thời điểm sẽ là một hằng số. Để dễthấy, chúng ta sẽ vẽ trên cùng một đồ thị đường biểu diễn của động năng T (t) (đường g1), thếnăng V (t) (đường g2) và cơ năng T (t) + V (t) (đường g3). Nếu đúng, g1 và g2 phải đối xứngqua một đường thẳng song song với trục Ox đồng thời g3 cũng phải là một đường thẳng songsong Ox.

Các đường biểu diễn được khai báo dễ dàng dưới dạng dãy. Ta lấy t P [0, 50]:

196 Phạm Minh Hoàng

Page 213: Maple Va Cac Bai Toan Ung Dung

10.2. Con lắc kép

Hình 10.9: Chuyển động với u1(0) =π

2, u2(0) = 1radian

> r1:=seq([i,T(i)],i=0..50):g1:=plot([r1],t=0..50,linestyle=3):

> r2:=seq([i,V(i)],i=0..50):g2:=plot([r2],t=0..50,color=red):

> r3:=seq([i,T(i)+V(i)],i=0..50):

> g3:=plot([r3],t=0..50,color=blue):

> display(g1,g2,g3,labels=[t,Energy],

labeldirections=[HORIZONTAL,VERTICAL]);

Hình 10.10: Đồ thị của động năng, thế năng và cơ năng của con lắc kép

Hình 10.11 (a) cho ta thấy rõ g1 và g2 đối xứng qua đường thẳng y 12, và g3 là đườngy 24. Vậy các phương trình đều đúng và lệnh dsolve cho kết quả đúng.

Phạm Minh Hoàng 197

Page 214: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Mặt khác, các khoảng cách trên Hình 10.11 (a) quá khít nhau, để thấy rõ hơn ta có thể phóngđại bằng view. Chọn khoảng thời gian t P [17, 36] là khoảng tương đối "gồ ghề, phức tạp" hơncả.

> display(g1,g2,g3,view=[17..36,0..25],labels=[t,Energy],

labeldirections=[HORIZONTAL,VERTICAL],tickmarks[3,5]);

Kết quả là [Hình 10.11 (b)]. Và nếu ai "chưa vừa lòng" xin hãy xem dãy r3:> r3[21..32];

Kết quả chính xác đến năm số lẻ! Quá tốt. Vậy thì ta có thể khẳng định các chương trìnhlý thuyết đều đúng, (dsolve,numeric) theo Runge-Kutta đúng, và chuyển động "lôn tùngphèo" đáng nghi ngờ kia đã đúng nốt.

10.3 Con lắc đơn đàn hồi

Trong chương 9 và 10 chúng ta đã khảo sát riêng biệt lò xo và con lắc đơn. Đến giai đoạnnày, đều đương nhiên phải xét tới là phối hợp cả hai vào làm một. Ở đây thay vì sợi dây chiềudài cố định, chúng ta sẽ có một lò xo.

Hình 10.11: Con lắc đơn đàn hồi

Vẽ hình

Khác với chương 9, bây giờ lò xo chuyển động trong không gian hai chiều, và ta sẽ giốngnhư Hình 10.12. Để làm điều này, trước tiên ta dùng lại hàm RS đã được khai báo trang ??Chương 9. Xin nhắc lại, một lò xo có 5 vòng xoắn và hai đầu dây di chuyển trên trục hoành ởhai tọa độ a, b là:

plot

(12sin(

10(

πx

b a πa

b a

)), x = a..b

)Trong trường hợp này lò xo có một đầu cố định và có thể quay trong mặt phẳng quanh gốc

tọa độ nên phải khai báo khác đi một chút. Ta sẽ làm các giai đoạn:

198 Phạm Minh Hoàng

Page 215: Maple Va Cac Bai Toan Ung Dung

10.3. Con lắc đơn đàn hồi

a) Trên trục hoành vẽ một lò xo mọt đầu cố định, có chiều dài r, 8 vòng xoắn và bán kính mỗivòng khoảng 0.3.

> restart:with(plots):with(plottools):

> setoptions(color=red): alias(SC='scaling=constrained'):

> RS:=r¡plot(sin(5*(3*Pi*x/r)-2*Pi)/8,x=0..r,SC);Một lò xo có chiều dài π được khai báo như sau [Hình10.13 (b)]:

> display(RS(Pi));

b) Ở hai đầu lò xo vẽ hai đoạn thẳng biểu tượng biểu tượng cho hai đầu lò xo.> RS0:=plot(0,x=0..0.1):

> RS2:=a¡plot(0,x=a+0.1..a+0.2):Tham số a có thể coi như chiều dài lò xo.

c) Cho lò xo tịnh tién đi mọt đoạn để "gắn" hai đầu đoạn thẳng này vào. Tiếp theo gắp khối mvào đầu tự do.

> RT:=a¡display(RS0,translate(RS(a),0.1,0),RS2(a),disk([a+.3,0],0.1));

d) Cho cả hệ thống quay mọt góc tùy theo tọa đọ của m khi chuyển động. Giả sử khối m di

chuyển đến tọa độ là (x, y) xemHình 10.12), cả hệ thống sẽ phải quay một góc α = arctan(

x

y

)quanh góc tọa độ:

> RR:=(y,x)¡rotate(RS(sqrt(xˆ2+yˆ2)),arctan(x,y),[0,0]);

RR := ÞÑ rotate(RT (a

x2 + y2), arctan(x, y), [0, 0]);[7]> display(RR(3, 1), disk([3.15, 1.1], .2), color = gray,

RR(1, -1), disk([1.15, -1.15], .2), color = gray,

RR(-1, -2), disk([-1, -2.2], .2), color = gray);

Tính toán

Khác với con lắc kép, hai ẩn số trong trường hợp con lắc đơn đàn hồi là tọa độ (xm, ym)của khối m.

Với k, l0 là độ cứng và chiều dài ban đầu của con lắc lò xo (khi chưa treo khối m), g là giatóc trọng trường. Thế năng V và động năng T của hệ [Hình 10.13 (a)] là:$''&''%

V = mgx(t) +12k

(a(x(t))2 + (y(t))2 l0

)2

T =12m

((d

dtx(t)

)2

+(

d

dty(t)

)2)Bài toán có hai ẩn số là x(t), y(t); nghĩa là vị trí của khối m.

> l:=sqrt(x(t)ˆ2+y(t)ˆ2):

> V:=-m*g*x(t)+1/2*k*(l-10)ˆ2:

> x1:=diff(x(t),t): y1:=diff(y(t),t):

7Xin xem cách sử dụng hàm arctan

Phạm Minh Hoàng 199

Page 216: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Hình 10.12: Khai báo con lắc đàn hồi và vài chuyển động

> T:=m/2*(x1ˆ2+y1ˆ2):

Lagrange của hệ là L = T V , chúng ta khai báo lại các mệnh lệnh như trang ?? để đưavề hệ phương trình vi phân:

> L:=T-V:

> L:=subs(x(t)=t 1,y(t)=t 2,diff(x(t),t)=t1p,diff(y(t),t)=t2p,L):

> dL dt1p:=diff(L,t1p): dL dt1:=diff(L,t 1):

> dL dt2p:=diff(L,t2p): dL dt2:=diff(L,t 2):

> rp:=t 1=x(t),t 2=y(t),t1p=diff(x(t),t),t2p=diff(y(t),t):

> dL dt1p:=subs(rp,dL dt1p): dL dt1:=subs(rp,dL dt1):

> dL dt2p:=subs(rp,dL dt2p): dL dt2:=subs(rp,dL dt2):

> ode1:=expand(combine(diff(dL dt1p,t)-dL dt1,trig));

> ode2:=expand(combine(diff(dL dt2p,t)-dL dt2,trig));

200 Phạm Minh Hoàng

Page 217: Maple Va Cac Bai Toan Ung Dung

10.3. Con lắc đơn đàn hồi$'''&'''%ode1 := m

d2

dt2x(t) + kx(t) kx(t)l0a

(x(t))2 + (y(t))2mg

ode2 := md2

dt2y(t) + ky(t) ky(t)l0a

(x(t))2 + (y(t))2mg

Cho các trị số thích ứng và giải bằng số:> m:=1:g:=10:l0:=1:k:=30:

> F:=dsolve(ode1,ode2,y(0)=1.5,x(0)=0,D(x)(0)=0,D(y)(0)=0,x(t),y(t),type=numeric):

Vị trí s(t) và vận tốc v(t) của khối m là:> s1:=i¡eval(x(t),F(i)): s2:=i¡eval(y(t),F(i)):> v1:=i ¡subs(F(i),diff(x(t),t)): v2:=i ¡subs(F(i),diff(y(t),t)):

Với (s1(t), s2(t)) là hoành và tung đọ con lắc, ta vẽ quỹ đạo dễ dạng bằng đường biểu diễntham số. Nhưng xin lưu ý: tất cả các dữ kiện đều được thiết lập với trục tọa độ như trong Hình10.13 (a), theo đó y là trục hoành và x là trục tung với chiều dương hướng xuống dưới, nên đểcó đường biểu diễn trong hệ trục tọa độ quen thuộc ta phải nhân x(t) với (1) đồng thời đổi chỗhai giá trị x(t) và y(t).

Và quỹ đạo của con lắc trong 5 giây đầu là: [Hình 10.14 (a)]> plot([s2,-s1,0..5]);

Hình 10.13: (a) Quỹ đạo con lắc và (b) đồ thị năng lượng

Kiểm chứng

Hình 10.14 (a) cho thấy chuyển dọng con lắc rất phức tạp. Câu hỏi đặt ra là liệu chuyểnđộng này có đúng? Và cũng giống như trường hợp con lắc kép, cách đơn giản và chính xác nhấtđể kiểm chứng tính xác thực của chuyển động là vẽ đường biểu diễn năng lượng của nó.

Ta khai báo lại biểu thức động năng và cơ năng với các kết quả từ (dsolve,numeric)và còn đang lưu trong biến F :

> V:=t¡-m*g*x(t)+1/2*k*(sqrt(s1(t)ˆ2+s2()ˆ2)-l0)ˆ2;

Phạm Minh Hoàng 201

Page 218: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

> T:=t¡m/2*(v1(t)ˆ2+v2(t)ˆ2);

> r1:=seq([i,T(i)],i=0..40):

> g1:=plot([r1],t=0..40,linestyle=3):

> r2:=seq([i,V(i)],i=0..40):

> g2:=plot([r2],t=0..40,color=red):

> r3:=seq([i,T(i)+V(i)],i=0..40):

> g3:=plot([r3],t=0..40,color=blue):

> display(g1,g2,g3); [Hình 10.14 (b)]Quan sát Hình 10.14 (b) ta thấy rõ thế năng và động năng của con lắc đối xứng qua đường

thẳng y 2 và cơ năng là đường y 4. Vậy kết quả này đúng.

Tạo hình động

> p:=NULL: for i from 0 to 20 by 1/10 do

> display(RR(s2(i),-s1(i)));

> p:=p,%; od:

> display(p,insequence=true,SC,view=[-2..2,-2.8..0.2]);

Sau khoảng 200 giây (Pentium III, 65Mhz) sẽ có một kết quả tuyệt vời, chúng ta có thểxuất phát dưới dạng GIF để sử dụng trong các bài giảng.

Các hướng phát triển cho chủ đề này

Nếu đã thấy chuyển động "lộn tùng phèo" của con lắc kép và con lắc đơn đàn hồi, thì chắcchắn chúng ta sẽ dễ dàng tưởng tượng ra mức độ phức tạp khi nó là con lắc kép đàn hồi!.

Có hai loại con lắc khác nhau (Hình 10.15). Các công thức dưới đây được trích nguyên văntừ [21]. Hệ tạo độ được xoay 180o, nhưng với những gì đã làm ở trên, hy vọng bạn đọc có thểtạo ra cho mình những thí dụ lý thú.

Vì có ba ẩn số (u, x(t), y(t)) -Xem Hình 10.5 -Nên trong hệ Lagrange (công thức (10.2.5)trang??), chúng ta sẽ có ba phương trình:$''''''&''''''%

d

dt

( BLBu1(t)

) BLBu(t)

= 0

d

dt

( BLBx1(t)

) BLBx(t)

= 0

d

dt

( BLBy1(t)

) BLBy(t)

= 0

(u là góc tạo bởi con lắc đơn m1 và trục tung )

Trong cả hai trường hợp của Hình 10.15 ta đều có ba ẩn số:- góc quay u là góc tạo bởi con lắc đơn m1 và trục tung.- x(t), y(t) là tọa độ của khối m2.

Trường hợp a)

Trong a), tác giả đã gọi l2 là chiều dài ban đầu của lò xo (nghĩa là khi chưa treo khối m2), e

là độ giãn của lò xo khi đứng yên. Người ta gọi đây là độ giãn tĩnh. Ta có e =g

km2.

202 Phạm Minh Hoàng

Page 219: Maple Va Cac Bai Toan Ung Dung

10.3. Con lắc đơn đàn hồi

Hình 10.14: Con lắc kép đàn hồi

$'''''&'''''%T =

12m2

((d

dtx(t)

)2

+(

d

dty(t)

)2)+

12m1l1

(d

dtu(t)

)2

V = m1gl1 cos(u)m2gy(t)

+12k((x(t) l1 sin(u))2 + (l2 + e + y(t) + l1 l1 cos(u))2)

kl2a

(x(t) l1 sin(u))2 + (l2 + e + y(t) + l1 l1 cos(u))2

Trường hợp b)

Tương tự, l1 là chiều dài ban đầu của lò xo (nghĩa là khi chưa treo khối m1, l2,m2), e là độgiãn tĩnh. Ta có e =

g

k(m1 + m2).$'''''''&'''''''%

T =12(m1 + m2)

((d

dtx(t)

)2

+(

d

dty(t)

)2)+

12m2l2

(d

dtu(t)

)2

+m2l2

(d

dtu(t)

)((d

dtu(t)

)cos(u)

(d

dty(t)

)sin(u)

)V = (m1 + m2)gy(t)mgl2 cos(u) +

12k((x(t))2 + (l1 + e + y(y))2)

kl1a

x(t) + (l1 + e + y(y))2

Một khi đã giải xong bài toán con lắc kép đàn hồi, các bạn có thể tự "phát minh" ra nhữngtrường hợp phức tạp hơn, với nhiều nối kết khác nhau.

Phạm Minh Hoàng 203

Page 220: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

10.4 Bài đọc thêm: Lịch sử số π

Nếu phải nói về một hằng số có liên quan mật thiết đến đời sóng con người, mọt hằng sótạo sự qan tâm của cộng đồng Toán học từ thời Cổ đại cho đến ngưỡng của thế kỷ 21, đó chínhlà số π.

Thời Cổ đại. Có lẽ chẳng có ai có thể nói được vào năm nào con người đã khám phá ra só π,nhưng theo những ghi chép còn giữ lại đến ngày hôm nay thì số π xuất hện lần đầu quanh quẩnbên những Kim tự tháp Ai Cập. Theo sử gia Herodote, khi ông ta đến viếng Kim tự tháp Gizehvà năm 450 trước Công Nguyên (viết tắt CN), nghĩa là 2000 năm sau ngày xây Kim tự tháp thìđã có những hình vẽ, những hệ thức liên quan đến số π. Chẳng hạn như nguyên tắc khi xây Kmtự tháp là tỷ lệ chiều cao trên cạnh đáy lúc nào cũng là

π

2. Tuy nhiên những tài liệu này khong

minh chứng cho sự xuất hiện của só π vì người ta có thể "xào nấu" trên các kích thước của Kimtự tháp để tìm ra một cái gì đó liên quan đến số π. Đến năm 1936, các nhà khảo cổ đã tìm ra mộttấm thẻ có liên đại 2000 năm trước Công Nguyên, nghĩa là vào thời Babylone. Tấm thẻ có khắccác hệ thức cho thấy chu vi của một lục giác đều bằng

24

252πr ñ π(Babylone) = 3.125. Cho

đến ngày hôm nay, cộng đồng khoa học công nhận đó chính là những tính toán đầu tiên của sốπ.

Trước đó, vào năm 1855, nhà khảo cổ A.H. Rhind đã đào được tại Luxor (Ai Cập) nhữngghi chép trên papyrus (một loại giấy được làm từ vỏ cây), theo đó có xác định diện tích một cáiđĩa đường kính D = 9 là S = 64, và S sẽ bằng bình phương diện tích của cái đĩa ấy nếu ta bớt

đường kính D đi một đoạn bằngD

9. Điều này có nghĩa là π (Ai Cập)=(

16

9)2 = 3.1604...

Cũng theo các tài liệu cổ thì vào những năm 1200 trước Công Nguyên thì người Trung Hoađã tính ra rằng π = 3 (có lẽ họ chưa biết đến số lẻ). Nói tóm lại vào những năm tháng ấy conngười đã "ngờ ngợ" có cái gì liên hệ giữa chu vi và đường kính một hình tròn. "Cái gì đó" xấpxỉ 3 nhưng không rõ chính xác nó là bao nhiêu và lại càng không biết tại sao nó phải là như thế.

Phải đợi đến năm 287 trước Công Nguyên với sự xuất hiện của "ông tồng cồng" thì conngười mới biết rõ ràng hơn về con số π. Archimede đã dùng tính chất vòng tròn nội và ngoạitiếp một đa giác đều để chứng minh. Trước tiên ta xét một ngũ giác đều ngoại tiếp một hìnhtròn bán kính r = 1. zAOB chắn 1/5 chu vi hình tròn và bằng

5.

..O.A

.B

Hình 10.15:

204 Phạm Minh Hoàng

Page 221: Maple Va Cac Bai Toan Ung Dung

10.4. Bài đọc thêm: Lịch sử số π

Bây giờ ta xét hình tròn bán kính r = 1 nội và ngoại tiếp hai ngũ giác đều. Rõ ràng là:AM AM 1 A1M 1

ñ sin(zAOB) AM 1 tan(zAOB)

ñ sin(π

5) π

5 tan(

π

5)

ñ 5 sin(π

5) π 5 tan(

π

5)

..O

.A .A1

.M .M 1

Hình 10.16:

Và trong trường hợp ngiác đều:

n sin(π

n) π n tan(

π

n) (10.4.1)

Bảng sau tóm tắt những giá trị của phương trình (10.4.1)> f:=n¡evalf([n*sin(Pi/n),n*tan(Pi/n),

.5*(n*sin(Pi/n)+n*tan(Pi/n))]);

> f(10),f(100),f(1000),f(10000);

n n sin(π

n) n sin(

π

n) Trung Bình

10 3.090169944 3.249196963 3.169683454100 3.141075908 3.142626605 3.1418512561.000 3.141587486 3.141602989 3.14159523710.000 3.141592602 3.141592757 3.141592679

Ý tưởng của Archimede đơn giản mà chính xác. Tuy nhiên nếu chúng ta biết rằng vào thờicủa ông, hoàn toàn chưa có khái niêm lượng giác và nhưng tính toán không phải được thực hiệntrong hệ thập phân như ngày hôm nay, thì chúng ta lại phải ngả mũ thán phục công sức của nhàtoán học Hy Lạp Cổ đại này. Có lẽ cũng vì lý do đó, vào năm 1660, nhà toán học W.Oughtredđã dùng ký tự π để biểu tượng cho số này. Trong tiếng Hy Lạp, π là chữ đầu tiên của chữπεριµετρϕν (perimetron) có nghĩa là chu vi.

Phạm Minh Hoàng 205

Page 222: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Số π có ảnh hưởng mật thiết đến đời sống con người nên khắp nơi đềucó cách tính độc đáo. Tại Á châu, vào năm 380 người Siddantas tại ẤnĐộ đã đưa ra công thức 3 +

177

1250= 3.1416 được tính toán trên cơ số...

60. Riêng tại Trung Quốc, vào thời nhà Tấn (thế kỷ thứ III), nhà toánhọc Liu Hui cũng đã dựa trên nguyên lý đa giác nội tiếp trong hình tròn.Liu Hui đã dung một đa giác 192 cạnh để xấp xỉ số π. Hai thế kỷ sau, họtăng lên 3072 cạnh và xấp xỉ 3.1415926 π 3.1415927 (tất cả đượctính trong cơ số thập phân), một độ chính xác mà mãi tới đến thế kỷ XIIÂu châu mới đạt đến.

Hình 10.17: Tukey

Tại Âu châu, sau Archimede là một sự trống vắng vĩ đại và giai đoạn tối tăm này kéo dàisuốt 1500 năm. Một trong nhưng nguyên nhân làm cản trở bước tiến toán học là cách biểu diễnbằng số La Mã (thí dụ: 58 96 = 5568) được viết thành LV III XCV I = V DLXV III[8],và phải đợi đến thời đại của Fibonacci, một nhà toán học Ý đã du nhập số Ả Rập vào Âu châuthì tất cả mới bùng phát mạnh mẽ. Các đa giác của Archimede được tăng lên đến cực lớn. Nhàtoán học Đức Van Ceulen đã tính toán một đa giác 60 233 = 480 tỷ cạnh để tìm ra 32 số lẻcủa π và dành trọn đời mình cho bài toán này. Đến nỗi khi qua đời ông ta đã yêu cầu khắc lênmộ bia 35 số của π. Lúc ấy là năm 1621.

Thế hệ chuỗi số Đi trước Âu châu cả trăm năm, một nhà toán học Ấn Độ là Nilakantha So-mayaji (1444-1545) đã tìm ra công thức đầu tiên về chuỗi:

π =?

128

n=0

(1)n

(2n + 1)3n

Để kiểm chứng bằng Maple:> f:=evalf(sqrt(12)*Sum((-1)ˆn/((2*n+1)*3ˆ),n=0..infinity));

f:=3.141592654(10.4.2)

Hơn 200 năm sau A. Sharp đã dùng một trường hợp đặc biệt của công thức trên tìm raπ

6= arctan

(1?3

)với 71 số lẻ.

Kể từ thời điểm này Âu châu "vùng lên" với những kỹ thuật tính toán mới dựa trên đạo hàm,nguyên hàm, chuỗi... Người ta phải nhắc đến các công trình của: [9]

8Trong số La Mã, L = 50, C = 100, D = 500, M = 1000. Một số có gạch ngang trên đầu thì nhân lên với1000

9Trong bảng này, các năm không đóng ngoặc là năm phát minh.

206 Phạm Minh Hoàng

Page 223: Maple Va Cac Bai Toan Ung Dung

10.4. Bài đọc thêm: Lịch sử số π

Viete (1540 1603) π = 22?2

2a2 +

?2

2b2 +a

2 +?

2

. . .

Wallis 1665 π = 2±8

n=1

4n2

4n2 116 số lẻ

Machin 1706 π = arctan(1

5 4 arctan(

1

239100 số lẻ

Leibniiz (1646 1716) π = 8±8

n=1

1

(4n + 1)(4n + 3)

Euler (1707 1783) π2 = 6±8

n=1

1

n220 số lẻ trong 1giờ

Thế hệ của máy tính Vào nữa đầu thế kỷ 19, ưu tiên của các hướng nghiên cứu dành cho cáclý thuyết mới của Cantor, Kolmogorov, Hilbert... Số π được quăng vào một xó hoặc nhườngcho những kẻ "vô danh", là một trong những kẻ "vô danh" đó là Ramanujan, một nhà toán họcẤn Độ không bằng cấp. Nhưng với lòng đam mê và sự kiên trì ông đã dành suốt 25 năm để tìmtòi, nghiên cứu. Ramanujan sau này đã viết một cuốn sách với 6165 định lý toán học mà khôngcó cái nào được chứng mình! Ông cũng tự nhận là có nhiều thứ "không biết từ đâu ra", và mộttrong những thứ đó là công thức tính π cực kỳ khó hiểu, gồm toàn những số "không biết từ đâura":

π =9801?

8

( 8

n=0

(4n)!(1103 + 26390n)

(n!)43964n

)1

Công thức này được công bố vào năm 1914 (sáu năm sau thì ông mất) và mãi tới năm 1980người ta mới chứng mình được. Sau đó vào năm 1985, máy tính đã tìm ra 10 triệu số lẻ từ côngthức của Ramanujan!.

Với sự tiến bộ vượt bậc của máy tính và các phần mềm, nhiều ê-kíp đã đưa ra những kếtquả dáng kinh ngạc. Năm 1948 Wrench và Smith đã tính được 1000 số lẻ, năm 1958, 10000 số;năm 1961, 100 ngàn; năm 1973, 1 triệu số[10]. Năm 1982, Myioshi và Kanada đã tính được 16triệu số. Cuộc chạy đua này diễn ra liên tục giữa nhiều nhóm khác nhau và đến năm 2000, consố này là 1200 tỷ và được tính từ một máy tính siêu mạnh Hitachi. Thiết nghĩ đến khi cuốn sáchnày đến tay bạn đọc thì có lẽ chúng ta phải dùng đến chữ peta = 1015 hoặc exa = 1018!.

Đến đây chắc chắn sẽ có nhiều người tự hỏi: "Ích lợi gì mà cứ sôi sùng sục đi tìm các số lẻcủa π, vì thực ra chỉ cần 3 hoặc 4 số lẻ là đã quá chính xác?".Quả đúng như vậy, trên ghế nhàtrường chúng ta chỉ cần 3 số là quá đủ. Đến khi ra làm việc thì yêu cầu cong thấp hơn. Ví dụ đểvẽ một căn nhà, một cây cầu, người kỹ sư chỉ cần 2 số lẻ. Tuy nhiên, trong các viện nghiên cứuthì khác. Các lý do để con người "sôi sùng sục" sau các số lẻ là vì:

Để có được nhiều số lẻ, người ta phải phát minh ra nhiều thuật toán mới, những công thứcmới. Thí dụ trong Maple, để tính công thức (10.4.2), ta mất 0.1 giây với 10 số lẻ, nhưngphải mất hơn 70 lần hơn nếu muốn có độ chính xác 100 (Digits:=100:). Nếu tính 200số lẻ phải mất trên 1 phút. Càng chính xác càng tốn thời gian vì nó đòi hỏi những thuậttoán phức tạp hơn. Và việc tìm tòi những thuật toán, những công thức này dẫn đến nhữngphát minh mới về công nghệ.

10Để kỷ niệm, các tác giả người Pháp đã cho xuất bản một cuốn sách dầy 415 trang ghi lại toàn bộ 1 triệu con sốnày. Cuốn sách được mệnh danh là "cuốn sách chán nhất của mọi thời đại".

Phạm Minh Hoàng 207

Page 224: Maple Va Cac Bai Toan Ung Dung

Chương 10. Bài toán dao động 2: Con lắc toán học

Việc tính các số lẻ cho phép các kỹ sư kiểm soát lại dộ chính xác của máy tính. Chính vìlý do đó công ty IBM đã tìm ra những lỗi trong các siêu máy tính IBM-590 và R-8000.

***

Trong suốt bài nói về số π này, chúng ta đã không ít lần nghe đến những con người "vô danh"như Liu Hui, Somayaji, Ramanujan, Wrench, Smith... và để kết thúc chúng ta sẽ nói đến mộtcái tên khác "không kém phần vô danh" là Akira Haraguchi, một y tá người Nhật. Vào ngày3/10/2006, ở độ tuổi 60, ông đã đọc vanh vách và cực kỳ chính xác 100.000 số lẻ của π trongsuốt 16 tiếng liên tục! Khi được phỏng vấn về kỷ lục ngoại hạng này, Haraguchi đã khiêm tốntrả lời "Tôi chẳng thấy có gì là ấn tượng cả, tôi chỉ đơn thuần xả hết những gì có trong đầu ra..."

Toán học quả đã đạt được những bước tiến vĩ đại vì nó đã tạo ra sự hấp dẫn đối với nhữngcon người vô danh.

208 Phạm Minh Hoàng

Page 225: Maple Va Cac Bai Toan Ung Dung

Chương11

Số học và ứng dụng

Số học là môn học về các số nguyên dương khác không (N ) và dĩ nhiên nó đã có từ thuởhồng hoang của Toán học. Người ta ước tính rằng tổ tiên của loài người đã biết các thao tác vềsố học cách đây 5000 năm và sử dụng nó trong các giao dịch thường nhật liên tục trong nhiềuthế kỷ. Nhưng đến thời hoàng kim của Toán học, số học đã phải nhường chỗ cho những phéptính phức tạp như nguyên hàm, vi phân và vô số những bài toán cực kỳ khó khăn khác.

Nhưng cũng chính từ máy tính vốn là một tinh hoa của văn minh nhân loại vào thế kỷ 20đã làm "tái sinh" môn học cổ xưa này. Máy tính không những đã phát huy hết cái đẹp truyềnthông của số học mà còn khai triển ra những ứng dụng đang và sẽ còn hữu dụng cho chúng tatrên thềm của thế kỷ 21.

11.1 Tóm tắt lý thuyết

Số học mô-đun

Số nguyên tốSố nguyên tố là số chỉ chia chẵn cho 1 và cho chính nó. Thí dụ (7, 13, 61, 137...).Maple đã có sẵn nhiều lệnh liên quan đến số nguyên tố: isprime(n): n có phải là sốnguyên tố?, ithprime(n): số nguyên tố thứ n, prevprime(n): số nguyên tố trướcsố n, nextprime(n): số nguyên tố kế tiếp sau số n.Thí dụ:

> isprime(61), ithprime(33);

true, 137

> nextprime(137), prevprime(137);

139, 131

Ước số chung lớn nhất (có nhiều cách viết theo tiếng Anh là gcd[1]). Và đó cũng là lệnhMaple:

1greatest common divisor

Page 226: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

> gcd(42, 24);

6

Hai số được gọi là nguyên tố cùng nhau khi ước số chung lớn nhất của chúng là 1. Thídụ: 24 và 7

> gcd(24, 7);

1

Thuật toán Eculide: Dùng để tìm ước chung lớn nhất của hai số.

a b r Thí dụ: để tính gcd(19, 7). Ta có ở hàng thứ nhất19 7 2 5 19 = (7 2) + 5. Đem 7 xuống cột a và 5 xuống cột7 5 1 2 b ở hàng thứ 2, ta có 7 = (5 1) + 2 và cứ tiếp tục5 2 2 1 như thế cho đến khi r = 0. Khi đó ước số chung lớn2 1⃝ 2 0 nhất là kết quả ở cột b

Ký hiệu: nếu ước số chung lớn nhất của a và b là f , ta viết (a, b) = f . Lưu ý: (19, 7) = 1.Vậy 19 và 7 là hai số nguyên tố cùng nhau.

Định lý 11.1.1 Định lý Bezout: Ước số chung lớn nhất của (a, b) là số f nhỏ nhất có thểbiểu diễn được dưới dạng tổ hợp tuyến tính của a và b.

(a, b) = f ñ D(u, v), f = au + bv

Lệnh Maple tương ứng của định lý Bezout:

> igcdex(28, 12, 'u', 'v'), u, v;

4, 1,2

Ước chung lớn nhất của 28, 12 là 4, u = 1, v = 2 và 4 = 28 2 12

Mặt khác ta cũng có thể tính (u, v) từ một cách mà người ta hay gọi là thuật toán Eculidemở rộng. Lấy lại thí dụ gcd(19, 7) của bảng trên ta có thể viết:

1 = 5 2 2 = 5 2(7 5) = 3 5 2 7 = 3(19 2 7) 2 7

= 3⃝ 19 8⃝ 7 (11.1.1)

Vậy: u = 3, v = 8. Kiểm chứng:

> igcdex(19, 7, 'u', 'v'), u, v;

1, 3,8

Phép chia Eculide trong Z /mZ

Phép tính đồng dư

Gọi a và m là hai số nguyên ,m 0.

Sẽ có và chỉ có một cặp số nguyên (q, r) sao choa = mq + r(0 ¤ r |m|) (11.1.2)

210 Phạm Minh Hoàng

Page 227: Maple Va Cac Bai Toan Ung Dung

11.1. Tóm tắt lý thuyết

r được gọi là số dư. Nếu r = 0, a = mq, a chia chẵn cho m và ký hiệu là m|a. Ánhxạ tương ứng với biểu thức 11.1.2 là ánh xạ từ vành các số nguyên Z sang tập hợp cácmô-đun m và được ký hiệu là Z /mZ . Thí dụ:

Z /5Z = t0, 1, 2, 3, 4u

Mặt khác người ta còn có một cách viết khác cho biểu thức 11.1.2:

a r[m] hay a = r mod m

và đọc là a đồng dư với r trong m hay a dồng dư với r mô-đun m đồng dư có nghĩa là a vàr có cùng số dư trong phép chia cho m. Tóm lại ta có định nghĩa của đồng dư ánh xạ:

Z Ñ Z /mZ : a r[m]

Thí dụ: 47 5[7], 212 5[3]

Tính chất đồng dư

"a1 b1[m]a2 b2[m]

ùñ"

a1 + a2 b1 + b2[m]a1a2 b1b2[m]

(11.1.3)

Nhưng không phải lúc nào ta cũng cóa1

k b1

k[m]

Thídụ :

$&% 14 8[6]8 2[6]

20 6[7]ùñ

$'&'%14 + 8 = 22 8 + 2 = 10[6]14 8 = 112 8 2 = 16[6]

20

2= 10 6

2= 3[7]

(11.1.4)

Nhưng : 14 8[6] ùñ 14

2= 7 8

2= 4[6] (11.1.5)

Phần tử đảoQuan sát biểu thức 11.1.4 ta thấy (20, 7) = 1 nhưng ở 11.1.5 thì (14, 6) = 2. Nghĩa làphép chia (như trong Z ) chỉ có nghĩa khi đó là hai số nguyên tố cùng nhau). Nói khác đi,không phải lúc nào phần tử trong Z /mZ cũng hiện hưu như trong Z .

Định nghĩa 11.1.1 a được gọi là phần tử đảo của a[m] khi và chỉ khi aa 1[m]

Để tính phần tử đảo của một số a trong Z /mZ ta dùng thuật toán Eculide mở rộng. Lấylại ví dụ cách tính gcd(19, 7), ta có (theo 11.1.1 và 11.1.3):

3 19 8 = 1 ñ 3 19 1 = 8 7 ñ 319 1[7]

Vậy phần tử đảo của 19[7] là 3

Phạm Minh Hoàng 211

Page 228: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

Ứng dụng của phép tính đồng dư

Tính số dư trong các con số lớn:Thí dụ 1: Tính số dư của phép chia 753/7.Số dư x của phép chia này là 753 x[7]. Ta có:753 = 700 + 53; 700 0[7]; 53 4[7]

Vậy 753 4[7]. Số dư là 4.Thí dụ 2: Tính số dư của phép chia 3343 1771 trong Z /4ZTa có: 3 1[4], 17 1[4]ùñ 3343 1771 (1)343 171[4] (1)[4] 3[4]

Vậy số dư là 4.Thí dụ 3: Tính số dư của phép chia 19871987 trong Z /5Z .19871987[5] 21987 21986 2[5] (22)993 2[5]

4993 2[5] (1)993 2[5] 2[5] 3[5]

Số dư là 3.Nói chung khi tính số dư mô-đun m, ta cần dàn xếp để tìm bội của m trừ 1. Thí dụ trongZ /5Z ta cần tìm ra 4, 9, 14, 19, 24 . . .

Tính số đơn vị trong các con số lớn:Đây đơn thuần là phép chia cho 10 hay là tính số dư trong Z /10ZThí dụ: Tính số đơn vị của 19971996

19971997[10] 71996[10] (3)1996[10] (32)998[10] 9998[10] (1)998[10] 1[5]

Số đơn vị là 1.Trong trường hợp này (Z /10Z ), ta cần tìm ra 9, 19, 29, 39 . . .

Giải phương trình đồng dư ax b[m]:

ax b[m] ùñ x ba[m] với điều kiện a khả đảo nghĩa là a 1

a[m]

Thí dụ: Giải phương trình đồng dư 19x 6[7]

Ta cần có phần tử đảo của 19 là 3[7], do đó x 6 3[7] 18[7] 4[7]

Vậy x P t4 + 7k, k P Z .Kiểm chứng bằng Maple qua lệnh isolve, ta giải phương trình 19x 6 = 7k

> isolve(19*x-6=k*7);

x = 4 + 7 Z1, k = 10 + 19 Z1

> f:=unapply(%, Z1):f(0);

x = 4, k = 10

> seq(4+7*i, i=-5..4);

31,24,17,10,3, 4, 11, 18, 25, 32

Tất cả 10 giá trị trên đều nghiệm đúng phương trình 19x 6[7]:

212 Phạm Minh Hoàng

Page 229: Maple Va Cac Bai Toan Ung Dung

11.1. Tóm tắt lý thuyết

> seq(((4+7*i)*19-6)/7, i=-5..4);

85,66,47,28,9, 10, 29, 48, 67, 86

Giải hệ phương trình đồng dư"

a1x + a2y u[m]b1x + b2y v[m]

Cũng giống như phương trình đồng dư, hệ chỉ có lời giải khi các hệ số (a1, a2, b1, b2) khảđảo trong Z /mZ , và giải như phương trình trong Z . Tuy nhiên ta cũng có thể giải bằngMaple với các lệnh ma trận.

Thí dụ: Giải hệ phương trình đồng dư"

3x + 2y 3[7]4x y 1[7]

> with(linalg):

> p:=matrix([[3, 2], [4, -1]]):

> u:=Inverse(p) mod 7: p=eval(p), u=eval(u);

p =

[3 24 1

], u =

[2 41 1

]> map(i¡ mod 7, evalm(u&*[3, 1]));

[3, 4]

Vậy lời giải là x P t3 + 7ku, y P t4 + 7ku(k P Z ).

Định lý Trung Quốc

Đọc các truyện như Đông Chu Liệt Quốc, Tam Quốc Chí, Hán Sở Tranh Hùng... ta đã thấycách đây 20 thế kỷ các nhà quân sự Trung Quốc đã biết nhìn sao, bấm độn để biết thời tiết cũngnhư biết...tình hình địch quân(!). Đấy chỉ là những thêu dệt mang tính hoang đường và cườngđiệu. Nhưng điều chắc chắn là ngay từ thuở xa xưa, các nhà thiên văn Trung Quốc đã biết quansát vũ trụ, tính chu kỳ các thiên thể cũng như phát minh ra âm lịch.

Để làm được điều này họ đã dựa trên những tính toán suy luận ra từ hàng trăm năm quansát bầu trời. Và vô tình vào thế kỷ thứ 3, họ đã tìm ra một định lý về hệ đồng dư mà đến bâygiờ các giao dịch hiện đại của thế kỷ 21 như máy tính điện tử, thẻ tín dụng, mật mã... vẫn hoạtđộng dựa theo phát minh này.

Định lý 11.1.2 Cho hệ phương trình đồng dư:$'''&'''%x a1[m1]x a2[m2]...x an[mn]

(mi P N zt0, 1u, ai P Z )

Gọi (mi,mj) = dij. Hệ phương trình trên có nghiệm khi và chỉ khi

dij|ai aj @i, j(i j)

Phạm Minh Hoàng 213

Page 230: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

và nghiệm có dạng:

x a1M1e1 + a2M2e2 + . . . anMnen[m1m2 . . . mn] (11.1.6)

i=n

i=1

aiMiei

[i=n¹i=1

mi

]

với Mi =

±mi

mi

và ei là số đảo của Mi[mi]

Thí dụ 1: Tìm lời giải của hệ

$&% x 3[13]x 7[8]x 2[9]

M1 = 8 9 = 72,M2 = 13 9 = 117,M3 = 13 8 = 104

Bằng thuật toán Eculide mở rộng ta có:

2 1

72[13], 5 1

117[8], 2 1

104[9]

x (3 72 2) + (7 117 5) + (2 104 2)

4943[13 8 9] = 263[936]

Vậy lời giải là x P t263 + 936ku, (k P Z )

Maple có sẵn lệnh chrem để hỗ trợ cho định lý này. Lệnh chrem gồm 2 dãy(dãy các hệ sốai và dãy các mô-đun mi):

> chrem([3, 7, 2], [13, 8, 9]);

> 263

Thí dụ 2: Tìm lời giải của hệ

$&% x 3[17]x 7[12]x 3[8]

Khác với thí dụ 1 (trong đó (mi,mj) = 1, D(i, j)), ở đây (12, 8) = 4 nhưng vì 4|(7 3)nên hệ trên sẽ có lời giải.

Để giải một hệ trong đó các mô-đun không nguyên tố cùng nhau, phương pháp chung làphân tích các mô-đun ấy thành nhiều mô-đun nhỏ hơn rồi loại bỏ các phương trình tương đươngvới nhau cho đến khi chỉ còn lại các mô-đun nguyên tố với nhau từng đôi một.

x 3[7]

x 7[12] ùñ"

x 7[3]x 7[4]

x 3[8] ùñ"

x 3[4]x 3[2]

,////.////- ùñ

$''&''%x 3[17]x 7[3]x 3[4]x 3[2]

ñ$&% x 3[17]

x 7[3]x 3[4]

(Các phương trình có dấu bị loại: x 7[4] bị loại vì nó tương đương với x 3[4] cònx 3[2] bị loại vì x 3[4] ñ x 3[2])

Bằng thuật toán Eculide mở rộng ta có:

7 1

12[17],1 1

68[3],1 1

51[4]

ùñ x (3 12 7) (7 68) (3 51) 881[204] 139[204]

Vậy là lời giải là 139.

214 Phạm Minh Hoàng

Page 231: Maple Va Cac Bai Toan Ung Dung

11.1. Tóm tắt lý thuyết

Thí dụ 3: Tìm lời giải của hệ"

x 5[6]x 2[9]

Hệ trên có nghiệm vì (6, 9)|5 2. Áp dụng phương pháp đã dùng trong thí dụ 2 là phântích các mi thành các mô-đun nhỏ hơn rồi loại trừ những gì giống nhau:

x 5[6] ñ x 1[2] và x 2[3]

Nhưng nếu phân tích x 2[9] ta lại rơi trúng x 2[3]. Phải dùng cách khác.Ta lý luận rằng một số chia cho 9 dư 2 thì chắc chắn cũng sẽ dư 2 khi chia cho 3, vậy có thể

thay x 2[3] bằng x 2[9] và hệ trở thành"

x 1[2]x 2[9]

Bằng thuật toán Eculide mở rộng ta có:

1 1

9[2],4 1

2[9]

ùñ x 9 (2 2 4) 7[18] 11[18]

Vậy lời giải là 11 + 18k.Kiểm chứng bằng Maple. Trước tiên nếu dùng hàm chrem ta được:

> chrem([5,2], [6,9])

Error, (in chrem) the modular inverse does not exist

Điều này có nghĩa là Maple khong chấp nhận một phần tử đảo không thuộc tậpZ . Thiếu sótnày đến phiên bản V8 cũng chưa được sữa chữa. Tuy nhiên, ta có thể giải bằng lệnh isolve:

> isolve(x-5-k1*6, x-2-k2*9))x=11+18 Z1, k1=1+3 Z1, k2=1+2 Z2

Vậy x P 11+18k(k P Z)

Ứng dụng vào máy tính Tất cả máy tính đều làm việc trong hệ nhị phân và bên trong máytính các dữ liệu được chuyển trên nhưng đường truyền gọi là bus. Nếu bus hoạt động trên 8bits thì khả năng tính toán của máy (còn được gọi là cỡ từ) là 28 8 = 255. Câu hỏi đặt ralà làm sao có thể tính toán với những con số lớn với cỡ từ nhỏ như thế? Để giải quyết ta phảinhờ vào định lý Trung Quốc.

Giả sử muốn cộng và nhân hai số a, b trong một máy tính cỡ từ 100 (nghĩa là chỉ đượcphép thao tác trên các số < 100), trước tiên ta chọn k số nguyên tố nhỏ hơn 100 và nguyên tốcùng nhau từng cặp sao cho tích của chúng lớn hơn a b[2].

> a:=352:b:=394

> m:=[51,52,53];'m'=%,convert(m, '*');'a*b'=a*b[3]m = [51, 52, 53], 140556, ab = 138688

Tính số dư của a và b trong mô-đun mi:> p:=[seq(amodi,i=m)]: q:=[seq(bmodi, i=m)]:'p'=p,'q'=q;

p = [46, 40, 34], q = [37, 30, 23]

Theo định lý Trung Quốc: nếu x = (x1, x2, . . . , xr)vy = (y1, y2, . . . , yr) là số dư trongmô-đun (m1,m2, . . . ,mr) thì:"

x + y = (x1 + y1, x2 + y2, . . . , xr + yr)x y = (x1 y1, x2 y2, . . . , xr yr)

> chrem(p+q,m);

746

2Theo định lý Trung Quốc, x =°

aiMiei[±

mi], nếu±

mi nhỏ, không đủ phương trình trong định lý3Ta cũng có thể chọn 13,19,22,27 vì tích của chúng lớn hơn 138688

Phạm Minh Hoàng 215

Page 232: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

Với phép nhân thì hơi phức tạp hơn, phải dùng lệnh seq để nhân trước:> seq(p[i]*q[i], i=[seq(i,i=1..nops(m))]);

1702, 1200, 782

> chrem([%],m);

138688

Bây giờ ta chọn a, b lớn hơn:> a:=1234;b:=3457:'a'=a,'b'=b,'a*b'=a*b;

a = 1234b = 3457, ab = 4288150

Nếu lấy m = [51, 52, 53] như trên, a + b đúng nhưng a b sai vì 51 52 53 a b. Tachọn mi nhiều hơn (các mô-đun phải nguyên tố cùng nhau từng cặp):

> m:=[23,45,47,89]:'m'=%,convert(m,'*');

m = [23, 45, 47, 89], 4329405

Thực hiện lại các thao tác trên, ta được:> chrem(zip((x,y)¡x*y,p,q),m);

4288150

11.2 Mật mã

Đại cươngTừ ngàn xưa, bảo mật vốn là điều quan trọng, nhất là khi có xung đột giữa hai quốc gia.

Ngày nay, việc này lại trở nên vô cùng quan trọng trong các lãnh vực khác nhau như ngoại giao,kinh tế, tài chính và dĩ nhiện là cả quân sự nữa. Trong phần này chúng ta sẽ khảo sát 3 mật mãkhác nhau có liên quan trực tiếp đến phép tính đồng dư là mã César, mã khối và mã RSA.

Trước tiên chúng ta cần thông nhất vài khái niệm. Phép tính đồng dư chỉ áp dụng cho sốnguyên (Z ÝÑ Z /nZ ) các công đoạn của cả 3 phương pháp mã sẽ như sau:

1. Biến văn bản gốc gồm những mẫu tự thành con sô,

2. Mã hóa những con số này bằng cách áp dụng một công thức nào đó,

3. Biến những con số mới này trở lại các mẫu tự trước khi chuyển đến nơi nhận.

Khi nhận được mật mã, người nhận chỉ lập lại tiến trình trên nhưng thay công đoạn 2 bằngcông thức giải mã. Vậy trước tiên chúng ta sẽ thực hiện công đoạn 1 và 3 là công đoạn chungcho cả 3 phương pháp.

Biến mẫu tự thành sốĐể đơn giản, ta chấp nhận chỉ có 26 mẫu tự không dấu cộng với dấu cách (khoảng trắng,

), và trong suốt phần sau đây, 27 tượng trưng cho tổng số mẫu tự:> restart:

> char:=[" ",op([i$i="a".."z"]);

char := ["", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l","m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

> NB:=nops(char);

NB := 27

216 Phạm Minh Hoàng

Page 233: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

> numb:=[j$j=0..26];

numb := [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

> AN:=seq(char[i]=numb[i],i=1..BN;[4]AN := t"" = 0, "a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5,

"f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12,

"m" = 13, "n" = 14, "o" = 15, "p" = 16, "q" = 17, "r" = 18, "s" = 19,

"t" = 20, "u" = 21, "v" = 22, "w" = 23, "x" = 24, "y" = 25, "z" = 26u> NA:=neq(numb[i]=char[i],i=1..NB;

NA := t"" = 0, "a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5,

"f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12,

"m" = 13, "n" = 14, "o" = 15, "p" = 16, "q" = 17, "r" = 18, "s" = 19,

"t" = 20, "u" = 21, "v" = 22, "w" = 23, "x" = 24, "y" = 25, "z" = 26uTất cả được tóm tắt trong bảng hoán chuyển dưới đây:

a b c d e f g h i j k l m0 1 1 3 4 5 6 7 8 9 10 11 12 13

n o p q r s t u v w x y z14 15 16 17 18 19 20 21 22 23 24 25 26

Bảng 11.1: Bảng hoán chuyển mẫu tựÐÑ số

Mã César

César (Julius Ceasar (100-44) trước Công Nguyên) là một thiên tài quân sự của đế quốc LaMã. Ngoài lãnh vực quân sự, ông còn là người đã biết rằng chu kỳ của trái đất quay quanh mặttrời là 365.25 ngày và từ đó phát minh ra dương lich với năm nhuận như chúng ta đang dùngngày hôm nay[5]. Người ta cho rằng để phục vụ cho nhu cầu quân sự, ông ta là người đầu tiênsử dụng mật mã.

Cách mã của César khá đơn giản, ông tịnh tiến các chữ đi một khoảng nhất định. Giả sửkhoảng đó là 3 thì chữ a sẽ thành chữ d, chữ b thành chữ e ... Tóm lại mã César được thành lậptheo phương trình đồng dư:

f : x ÞÝÑ y x + 3[7]

Trong đó x là mẫu tự trong văn bản gốc, y là mẫu tự tương ứng trong văn bản mật. Số 3 tronghàm f(x) có thể gọi là kha của mã.

Bây giờ ta thực hiện việc mã hóa chữ "van hoa giao duc" với khóa là 3:> vb:="van hoa giao duc":

> vb2:=seq(vb[i],i=1..length(vb))]; (11.2.1)

vb2 := ["v", "a", "n", "", "h", "o", "a", "", "g", "i", "a", "o", "","d", "u", "c"]

> X:=subs(AN,vb2);

4Đừng quên hai dấu 5Vì thế dương lich còn được goi là lịch julien

Phạm Minh Hoàng 217

Page 234: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

X := [22, 1, 14, 0, 8, 15, 1, 0, 7, 9, 1, 15, 0, 4, 21, 3]

> f:=i¡irem(i+3,27);> Y:=map(f,X);

Y := [25, 4, 17, 3, 11, 18, 4, 3, 10, 12, 4, 18, 3, 7, 24, 6]

> subs(NA,Y)

["y", "d", "q", "c", "k", "r", "d", "c", "j", "l", "d", "r", "c","g", "x", "f"]

> Z:=map(cat,op(%));

Z := "ydqckrdcjldrcgxf"Để giải mã, ta thực hiện lại đúng những lệnh trên bằng cách thay vb bằng Z, và hàm f(x)

bằng hàm g(y):g : y ÝÑ x y 3 mod 27[6]

ta dễ dàng tìm lại văn bản gốc.Như thế giữa việ mã và giải mã chỉ khác nhau ở một điểm duy nhất đó là hàm f(x) hoặc

g(y), vì thế ta có thể gom tất cả vào một chương trình 3 tham số gồm: văn bản, khóa và saucùng là một biến cho phép mã hoặc giải mã.

Bây giờ ta phức tạp mã César bằng cách dùng hàm:

f : x ÝÑ y ax + b[27]

Cách mã và giải mã cũng tương tự, hàm ngược của f(x) được định bởi:

g : y ÝÑ x y ba mod 27

dĩ nhiên g(y) chỉ xác định khi a hiện hữu hay (a, 27) = 1

Ta cũng có thể dễ dàng gom chung hai công đoạn vào một chương trình có 4 tham số: vănbản, khóa (a, b) một biến cho phép mã hoặc giải mã.

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

cesar:=proc(vb, k, u)local f:f:=i¡(i+u*k) mod 27;[seq(vb[i], i=1..length(vb))]subs(AN, %);map(f, %);subs(NA, %);map(cat, op(%));end:

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

cesar2:=proc(vb, a, b, u)local f, g, ya, h:ya:=1/a mod 27:f:=i¡(a*i+b) mod 27;g:=i¡(i-b)*ya mod 27:if u=1 then h:=f else h:=g: fi:[seq(vb[i], i=1..length(vb))]map(h, subs(AN, %));map(cat, op(subs(NA, %))); end:

Bảng 11.2: Chương trình mã César

> p:="rendez a cesar ce qui est a cesar":[7]6Lý do vì lệnh irem có thể cho những giá trị âm7Hãy trả cho César những gì thuộc về César

218 Phạm Minh Hoàng

Page 235: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

> cesar2(p,2,7,1); cesar2(%,2,7,-1);

"pqhoqegigmqripgmqgnvygqrtgigmqrip""rendezacesarcequiestacesar"

Bảo Mật. Tính bảo mật của mã César không cao vì hai cách mã đều là những song ánh,tuyến tính và tối đa chỉ có 27 cách mã khác nhau. Chỉ cần biết lập trình sơ sài là "bẻ khóa" dễdàng. Thậm chí chỉ băng một công cụ thủ công là hai đĩa đồng tâm, một đĩa ghi mẫu tự, đĩa kiaghi số. Người ta chỉ cần "mày mò" một tý bằng cách giữ cố định một đĩa và xoay đĩa kia là giảimã dễ dạng.

Mã Khối

Sự kiện hàm mã là phép biến đổi a-phin khiến việc bẻ khóa tương đối dễ dàng. Mã khốiđược tạo ra trong mục đích chống lại việc này bằng cách không mã từng chữ mà từng cụm uchữ. Nếu trong mã César chúng ta mã bằng một phương trình thì ở đây ta sẽ mã bằng u phươngtrình.

Thí dụ với u = 2 và với hệ"

y1 ax1 + bx2[m]y2 cx2 + dx2[m]

Gọi xi, yi lần lượt là các phần tử trong văn bản gốc và văn bản mật. Ta mã văn bản gốcbằng:[

y1

y2

] A

[x1

x2

]mod m với A =

(a bc d

)Và giả mã bằng:[x1

x2

] A1

[y1

y2

]mod m

Ma trận A được gọi là khóa của bài toán.

Giả sử với chữ v = 22 và a = 1, A =

(1 32 7

), A1 =

1

13

(7 32 1

)ta có:[

y1

y2

]= A

[221

]=

[2537

]và[

x1

x2

] A1

[2537

]=

[221

]Việc mã và giải mã khối tương đối dễ dàng, nhưng cần lưu ý:

Nếu chiều dài văn bản gốc là n và nếu làm việc với khối bằng u, ta phải có u|n. Nếukhông phải thêm vào một số lượng khoảng trắng để điều kiện này thỏa. Số khoảng trắngphải thêm là [u irem(n, u)] mod u,

Sau khi mã bằng cách nhân ma trân khóa với các khối số (ở đây ta chọn u = 2), kết quảcho ra là một bảng (array) không thể áp dụng tiếp theo đó các làm map (vốn chỉ dànhcho dãy list) nên cần thiết phải biến chúng thành những dãy trước khi đi tiếp,

Ma trận khóa A phải được chọn sao cho detA và n là hai số nguyên tố cùng nhau nghĩalà (det A, n)=1. Nếu không thỏa ta vẫn thu được kết quả nhưng sau khi giải mã sẽkhông tìm lại được văn bản gốc.

Bây giờ ta mã và giải câu "van hoa giao duc" đã dùng trong mã César và còn lưu trongbiến vb2(11.8 Trang ...)

Phạm Minh Hoàng 219

Page 236: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

> with(linalg):u:=2

u := 2

> vb3:=[op(vb2)," "$ i=1..(u-irem(n,u))mod u];

vb3 := ["v", "a", "n", "", "h", "o", "a", "", "g", "i", "a", "o", "","d", "u", "c"]

> X:=subs(AN,vb3);n:=nops(X);

X := [22, 1, 14, 0, 8, 15, 1, 0, 7, 9, 1, 15, 0, 4, 21, 3]

n := 16

> A:=matrix([[1,3],[-2,7]]);

> seq(convert(evalm(A&*X[u*i+1..u*i+u]),list),i=0..n/u-1);

[25,37], [14,28], [53, 89], [1,2], [34, 49], [46, 103], [12, 28],

[30,21]

> Y:=map(op,[%]);

Y := [25,37, 14,28, 53, 89, 1,2, 34, 49, 46, 103, 12, 28, 30,21]

> Z:=map(i¡(imod27),Y);Z := [25, 17, 14, 26, 26, 8, 1, 25, 7, 22, 19, 22, 12, 1, 3, 6]

> Z:=subs(NA,%);

Z := ["y", "q", "n", "z", "z", "h", "a", "y", "g", "v", "s", "v", "l", "a","c", "f"]

> msg:=map(cat,op(%));

msg := "yqnzzhaygvsvlacf"Để dễ nhìn ta đặt kết quả vào một bảng:

[here]

văn bản gốc v a n h o a g i a o d u cvăn bản mã y q n z z h a y g v s v l a c f

Bảng 11.3: Kết quả mã khối.

Theo Bảng 11.3 ta thấy trong văn bản gốc có ba chữ a, được biến lần lượt thành q, a, s;trong văn bản mã có hai chữ z được biến từ khoảng trắng và chữ h. Lý do là vì kết quả của việcmã một mẫu tự còn tùy thuộc vào chữ đi kèm. Đó mới chỉ là khối 2. Ta dẽ tưởng tượng ra sựphức tạp khi dùng các khối có gia trị lớn. Và dĩ nhiên việc "bẻ khóa" là điều không đơn giảnchút nào.

Để giải mã, ta chỉ cần lặp lại các công đoạn trên, nhưng thay a bằng A1:> vb2:=[seq(msg[i],i=1..length(msg))];

> vb3:=[op(vb2)," "$i=1..(u-irem(n,u))modu]> X:=subs(AN,vb3);

X := [25, 17, 14, 26, 26, 8, 1, 25, 7, 22, 19, 22, 12, 1, 3, 6]> seq(convert(evalm(inverse(M)&*X[u*i+1..u*i+u]),list),

i=0..n/u-1);

> Y:=map(op,[%]);

220 Phạm Minh Hoàng

Page 237: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

Y =[12413

,6713

,2013

,5413

,15813

,6013

,6813

,2713

,1713

,3613

,6713

,6013

,8113

,2513

,313

,1213

]> Z:=map(i¡(imod27),Y);

Z := [22, 1, 14, 0, 8, 15, 1, 0, 7, 9, 1, 15, 0, 4, 21, 3]

> Z:=subs(NA,%);

Z := ["v", "a", "n", "", "h", "o", "a", "", "g", "i", "a", "o", "","d", "u", "c"]

> map(cat,op(%));

"vanhoagiaoduc"Bây giờ ta đặt tất cả vào trong một chương trình có tên cube. cube có ba tham số là văn

bản, ma trận khóa và một biến để cho biết phải mã hoặc giải mã.

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

cube:=proc(vb, M, u)local p,u,n,V,XM,X;u:=linalg[rowdim](M):[seq(vb[i], i=1..length(vb))]V:=[%," "$i=1..(u-irem(length(n,u),u))modu]X:=subs(AN,V);n:=nops(X);if u=1 then XM:=M else XM:=linalg[inverse](M): fi:seq(convert(evalm(XM&*X[u*i+1..u*i+u]),list),i=0..n/u-1);map(i¡(imod27), map(op, [%]));map(cat, op(subs(NA, %)));end:

Bảng 11.4: Chương trình mã khối

Thí dụ với hai ma trận bậc 3, ma trận M1 có (det(M1), 27) = 1 và ma trận M2 có(det(M2), 27) 1:

> M1:=matrix([[1,2,-1],[9,3,2],[-2,1,-1]]);

> M1:=matrix([[1,1,2],[9,3,2],[-2,1,-1]]);

> M[1]=eval(M1),det(M1),M[2]=eval(M2),det(M2);

M1 =

[1 2 19 3 22 1 1

],10,M2 =

[1 1 29 3 22 1 1

],30

> mot:="cung chuc tan xuan":

> cube(mot,M1,1):%,cube(%,M1,-1);

"djadojtfblhsqlbidz", "cungchuctanxuan"> cube(mot,M2,1):%,cube(%,M2,-1);

"yjamojhfbvhshlbwdz", "ucnyiczcctaeixljn"Rõ ràng là khi det(M2) không nguyên tố cùng nhau với 27 kết quả thu được sai vì ta không

tìm lại được văn bản gốc.Hai phương pháp mã mà chúng ta vừa khảo sát là César và mã khối xếp vào họ các mã theo

chìa khóa bí mật. Được gọi như thế cũng dễ hiểu vì cả hai phía gửi và nhận đều phải giữkín chìa khóa này, nếu để lộ thì việc trao đổi thông tin sẽ không còn được bảo mật.

Phạm Minh Hoàng 221

Page 238: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

Những phương pháp này có một nhược điểm vô cùng to lớn là khi có sự trao đổi thông tinhai chiều giữa nhiều người thì tất cả mọi thành viên trong cộng đồng đó phải tuyệt đối giữ kín"chìa khóa chung". Việc này quả thực rất khó khăn. Phải tìm ra một phương pháp nào làm chosự bảo mật không tùy thuộc vào chiếc chìa khóa bí mật, và đó là phương pháp với mã mới, mãRSA.

Mã RSA

Cơ sở lý thuyết

Một phương pháp mới là mã theo khóa công khai. Ý tưởng này do Diffie và Hellmancông bố vào năm 1976. Đến năm 1977, ba nhà toán học là Rivest (Mỹ), Shamir (Do Thái) vàAdlemann (Mỹ) củaMassachusetts Institute of Technology (M.I.T) mới cụ thể ra phát minh mãRSA . RSA chính là viết tắt tên của ba người này.

Sau nhiều năm cải tiến, kết hợp với nhiều phương pháp khác nhau cộng với sự xuất hiệncác máy tính gia đình, con người ta đã hoàn thiện những phần mềm với độ bảo mật cực tốt.RSA ngày nay được dùng rộng rãi trong xã hội trong đó phải nhắc đến phần mềm bảo mật PGP(Pretty Goods Privacy).

Nguyên tắc:

Cho hai số nguyên tố p, q Tính n = pq, m = (p 1)(q 1) Cho e P N , (m, e) = 1. Tính d P Z , e.d 1[m]

,//.//- ùñ @(x, y) P Z 2, y = xe[n] ô x = yd[n]

Cụ thể, sau khi chọn p, q là hai số nguyên tố, tính n,m. Sau đó chọn e nguyên tố cùng nhauvới m và tính phần tử đảo d của e trong mô-đun m.

Cách sử dụng:

Để mã một mẫu tự (sau khi đổi thành số) ta làm: y = xe[n] (11.2.2)Để giải mã một mẫu tự (sau khi đổi thành số): x = yd[n] (11.2.3)

(n, e) được gọ là khóa công khai. Khóa này được gửi cho mọi người. Hễ ai muốn gửi vănbản cho ta, họ chỉ cần mã bằng công thức 11.2.2 trước khi gửi.

d được gọi là khóa bí mật, được dùng để giải mã theo công thức 11.2.3

Trước khi đi vào thí dụ, cần lưu ý vài điều sau:

1. Văn bản gốc sau khi chuyển thành số (bằng dãy AN và NA) cần phải chuyển sang cơ sốn = pq để mã. Để làm được điều này ta phải cộng chúng lại trong cơ số 27 (tổng số kýtự) rồi dùng lệnh convert để chuyển sang cơ số n

2. n = pq là một số tương đối lớn (1000 chẳng hạn). Sau khi mã bằng y = xe[n] ta sẽ thuđược các con số nhỏ hơn 1000 nhưng lớn hơn 27 là số ký tự mà chúng ta đã khai báo tronghai dãy AN và NA. Vì thế sau khi mã ta phải biến chúng sang cơ số 27 (giống như trongcông đoạn 1) để có thể chuyển thành mẫu tự la-tinh.

222 Phạm Minh Hoàng

Page 239: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

Thí dụ:

Mã hóa câu "van hoa giao duc".Trước tiên ta chọn p = 7, q = 137 ùñ n = 2329,m = 2176.Chọn e = 31, thuật toán Euclide mở rộng cho ta d = 351. Vậy nếu gọi hàm f(x) là hàm

mã và hàm g(y) là hàm giải mã, ta được:> f := x¡ xp31 mod 2329; g := x¡ xp351 mod 2329;

f := x ÞÑ x31 mod 2329

g := x ÞÑ x351 mod 2329

Công đoạn 1 biến văn bản gốc thành số trong cơ số 27

> goc:="van hoa giao duc":

> goc2:=[seq(goc[i],i=1..length(goc))];

> X:=subs(AN,goc2);

X := [22, 1, 14, 0, 8, 15, 1, 0, 7, 9, 1, 15, 0, 4, 21, 3]

> N1:sum(%i*27p(i 1),i=1..nops(%));

N1 := 11177030774433958008007

Công đoạn 2: Mã trong cơ số n

> convert(N1,base,2329);

[486, 323, 1262, 1692, 943, 79, 70]

> map(f,%);

[114, 1785, 880, 1838, 49, 932, 1726]

> N2:sum(%i*2329p(i 1),i=1..nops(%));

N2 := [275523346071718557966724]

Công đoạn 3: Biến đổi sang cơ số 27 trước khi chuyển thành mẫu tự> convert(N2,base,27);

[22, 26, 1, 6, 25, 7, 1, 15, 14, 10, 25, 4, 15, 1, 7, 12, 3]

> sub(NA,%);

> msg:=map(cat,op(%));

msg := "vzafygaonjydoaglc"Để giải mã, cũng giống như mã César và mã khối, ta chỉ việc lập lại tất cả các công đoạn

trên sau khi thay văn bản gốc bằng văn bản mã và f(x) bằng g(y).Sau cùng ta gom chung tất cả vào một chương trình có tên RSA. Chương trình RSA có ba

tham số: văn bản (gốc hoặc mã), số e (hoặc d), và n:Bây giờ chúng ta thử chương trình RSA với một khóa công khai khác. Ta lựa chọn ngẫu

nhiên hai số nguyên tố p, q bằng lệnh nextprime> nextprime(45), nextprime(835);

47, 839

Ta được n = 47 839 = 49433,m = 46 838 = 38548. Chọn ngẫu nhiên e = 125 lệnhigcdex cho phần tử đảo d[m] (d có thể âm).

> igcdex(125,38548,'a'),a;

1, 4009 (11.2.4)

> mot:="ly thuyet ma khoa cong khai":

Phạm Minh Hoàng 223

Page 240: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

RSA:=proc(mot, u, n)local f,NB:NB:=27;f:=x¡xˆu mod n:[seq(mot[i],i=1..length(mot))]subs(AN, %);sum(%i*NBˆ(i-1),i=1..nops(%));map(f, %);sum(%i*nˆ(i-1),i=1..nops(%));convert(%,base,NB);subs(NA, %);map(cat, op(%));end:

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

expo:=proc(m,e,n)local L,f,r,i:L:convert(e,base,2)f:=m mod n:if L[1]=1 then r:melse r:1: fi:for i in subsop(1=NULL,L)do f:=fˆ2 mod n:if i=1then r:=(r*f) mod n:fi:od:end:

Bảng 11.5: Chương trình mã RSA và phép bình phương liên tiếp

> RSA(mot,125,39433);

"iroaixnfqacrfngsghccoivxqqgc"> RSA(%,4009,39433);

"lythuyetmakhoacongkhai"

Nhận xét:

So sánh giữa văn bản gốc và văn bản mã thì ta thấy không có cách nào để "lần mò" ralogic để giải mã.

Chẳng những thế chiều dài văn bản lại khác nhau nên mọi cố gắng đối chiếu đều vô ích.(ở thí dụ trên length(mot)=27,length(RSA(mot,125,39433))=29)

Cách duy nhất để giải mã là dùng công thức 11.2.3, nghĩa là tìm ra d = 1e[m].e thì ta có

(khóa công khai), phải tìm m = (p 1)(q 1), nghĩa là phải tìm p, q từ n.

Nói tóm lại muốn bẻ khóa phải thừa số hóa n, và thừa số hóa một số lớn (khoảng vài chụcchữ số) là một vấn đề nát óc của con người từ ngàn năm nay (xem Bài đọc thêm cuốichương)

Và đây chính là sự tuyệt vời đem đến thành công cho mã RSA: Mọi người có thể mã bằngkhóa công khai (n, e) nhưng chỉ có người có chìa khóa (d) mới có thể giải mã. Bất kỳ aichiếm đoạt được văn bản mã cũng vô ích, và vì ai cũng có thể có "chìa khóa chung" nênhoàn toàn không có vấn đề chìa khóa bị tiết lộ.

Trước khi đi tiếp mời bạn đọc xem một cách giải thích vui nhưng rất cụ thể về mã RSA (trích từInternet): Một người (A chẳng hạn) gởi đến cho tất cả bạn bè mình mỗi người một ổ khóa giốngnhau trong tư thế mở và giữ lại chìa. Ai muốn gởi thư cho A thì bỏ lá thư vào cái hộp kín rồibấm khóa ấy lại trước khi gởi bưu điện. Cho dù trên đường gởi có bị đánh cắp hoặc thất lạc

224 Phạm Minh Hoàng

Page 241: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

cũng không ai đọc được lá thư trên. Và chỉ có mình A mới có thể mở hộp bằng cái chìa khóacủa mình.

Cái ổ khóa đó chính là n, e và chìa khóa là d.

Phép bình phương liên tiếp

Một trong những điều quan trọng khi lấy p, q ngẫu nhiên là phải chọn những số lớn để bảomật và như thế n sẽ lớn. Thí dụ p, q gồm 20 chữ số , n sẽ có 40 chữ số đưa đến hậu quả là mấtnhiều thời gian để tính hai công thức y xe[n] và x yd[n]. Để giải quyết, chúng ta phải dùngđến phép bình phương liên tiếp:

Nếu nhân trực tiếp a13 = a a a a a . . . ta mất 13 phép nhân. Nhưng khi viết:a13 = a1+4+8 ta chỉ cần bình phương liên tiếp 3 lần sau đó nhân các kết quả ở những lũy thừanào tương ứng với số 1 trong biểu diễn 13 trong có số 2. Ta có 13 = (1011)2, vậy ta nhân kếtquả của lũy thừa 1, 4, 8.

> convert(13,base,2);

[1, 0, 1, 1]

Thí dụ trong ?? ta cần tính y4009

> seq(yˆ(2ˆ(i-1)),i=1..12);

y, y2, y4, y8, y16, y32, y64, y128, y256, y512, y1024, y2048

> convert(4009,base,2):%,nops(%);

[1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1], 12

Thay vì thực hiện 4009 phép nhân, ta chỉ bình phương liên tục 12 lần và chỉ nhân với nhauở các lũy thừa 1, 4, 6, 8, 9, 10, 11, 12, tổng cộng chỉ là 20 phép nhân, và như thế tiết kiệm đượcmột khoảng thời gian đáng kể.

Thuật toán đơn giản nhưng hữu hiệu này được thực hiện trong chương trình expo (Bảng11.5, trang...). Và để cải tiến chương trình RSA, ta chỉ cần thay thế đúng một dòng

f := x¡ xpu mod n trở thành f := x¡ expo(x, u, n)

Ta gọi chương trinh mới này là RSA2:Để kiểm chứng, ta dùng các số tương đối lớn:

> p:=nextprime(953):q:=nextprime(735):n:=p*q:m:=(p-1)(q-1):

> 'p'=p,'q'=q,'n'=n,'m'=m;

p = 967, q = 739, n = 714613,m = 712908

Chọn e = 9491. Tìm phần đảo của e trong mô-đun m:> e:=9491:igcdex(e,m,'d'),d;

1,36205

> word:="the period is always independent of the amplitude";

> u:=RSA(word,e,n);

u := "iflvhagwkbpbzrsvrmygtbrwborvlkstmxefykpeadfss"Kết quả giải mã và thời gian thực hiện bằng chương trình RSA (Chưa cải tiến):

> t:=time():RSA(u,d,n);time()-t;

"theperiodisalwaysindependentoftheamplitude"14.963

Phạm Minh Hoàng 225

Page 242: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

Và với RSA2, chương trình sử dụng phép bình phương liên tiếp[8]> t:=time():RSA(u,m-d,n);time()-t;

0.015

Khi dùng với phép bình phương tối thiểu để giải mã, chương trình chạy nhanh gấp 1000lần!.[9] Và sự cách biệt này còn lớn hơn nữa khi văn bản dài và d lớn.

Chữ ký RSA

Vấn đề của chúng ta như sau: giả sử một thành viên nhận được một văn bản, làm thế nàongười ấy biết ai là người gởi vì ai cũng có khóa công khai của mình? và không biết có ai giảmạo một thành viên để liên hệ với mình hay không?

Chữ ký RSA được áp dụng để:

Biết chính xác người gởi (tránh tình trạng thư nặc danh)

Trưng ra một bằng chứng của người gởi (không thể chối mình không gởi)

Không ai có thể giả mạo chữ ký người khác

Không ai có thể sửa văn bản gởi cho một thành viên khác

Nguyên tắc: A và B là hai thành viên trong cộng đồng. Cả hai đều có khóa công khai của(những) người khác:

+ Khóa công khai của A là (na, ea), khóa bí mật là da

+ Khóa công khai của B là (nb, eb), khóa bí mật là db

Giả sử A gởi cho B. Các công đoạn của chữ ký điện tử như sau:

A mã văn bản lần thứ nhất bằng khóa bí mật của mình (da)

A mã thêm lần nữa bằng mã công khai của B (nb, eb) rồi gởi

B giải mã lần thứ nhất bằng khóa bí mật của mình (db)

B giải mã thêm lần nữa bằng mã công khai của A (na, ea)

Như thế B biết chắc chắn người gởi chỉ có thể là A (vì có "ký" da) và A biết chắc chắn chỉ có Bđọc được văn bản mã bằng khóa của B.

Thí dụ:+ Với p = 17, q = 137, (na, ea) = (2329, 31), da = 351

+ Với p = 23, q = 191, (nb, eb) = (4393, 43), db = 1847

Trước tiên, khai báo 4 hàm. Hai bên phía A, hai bên phía B:> fa := x¡ xp31 mod 2329 : ga := x¡ xp351 mod 2329

> fb := x¡ xp43 mod 4393 : gb := x¡ xp1847 mod 4393"fa := x ÞÑ x31 mod 2329ga := x ÞÑ x351 mod 2329

"fb := x ÞÑ x43 mod 4393gb := x ÞÑ x1847 mod 4393

8Chương trình expo không chấp nhận d 0 nên phải lấy modulo theo m9Con số này có thể thay đổi theo só lần thực hiện

226 Phạm Minh Hoàng

Page 243: Maple Va Cac Bai Toan Ung Dung

11.2.Mật mã

Dùng lại các lệnh cũ ta được:> goc:="chu ky dien tu rsa":

> goc2:=[seq(goc[i],i=1..length(goc))];

> X:=subs(AN,goc2);

X := [3, 8, 21, 0, 11, 25, 0, 4, 9, 5, 14, 0, 20, 21, 0, 18, 19, 1]

> n:=sum(%[i]*27ˆ(i-1),i=1..nops(%));

n := 3722522118728157707349423

Mã lần thứ nhất trong cơ số na 2329 nên trước tiên phải biến đổi số n vừa có sang 2329,sau đó mã lần thứ hai trong nb = 4393 nên phải tìm lại số n trong cơ số 4393 10

> convert(n,base,2329);

[637, 1671, 2160, 2215, 1874, 2166, 34, 10]

> map(ga,%);

[1528, 58, 1463, 1843, 472, 770, 1904, 233]

> map(fb,%);

[191, 3613, 4237, 514, 4096, 136, 55, 1572]

> n:sum(%[i]*4393ˆ(i-1),i=1..nops(%));

n := 49634588465268377202756366854

Biến đổi sang cơ số 27 để chuyển sang mẫu tự la-tinh> convert(n,base,27);

[23, 18, 12, 20, 6, 24, 26, 4, 13, 25, 9, 7, 25, 2, 18, 26, 6, 15, 16, 4, 1]

> msg:=map(cat,op(subs(NA,%)));

msg := "wrltfxzdmyigybrzfopda"Để giải, ta lặp lại các lệnh trên nhưng đảo ngược các con số trong phần mã:

> convert(n,base,4393);

> map(gb,%); map(fa,%);

> n:=sum(%[i]*2393ˆ(i-1)..nops(%));

Và sau cùng ta có thể gom vào một chương trình RSA3 với 5 tham số: văn bản (mã hoặcgiải mã), khóa bí mật của mình, khóa công khai của người kia:

Với:

(n, d) là khóa bí mật của mình

(nb, eb) là khóa công khai của người kia.Lấy lại các con số của A và Ban

(na, ea) = (2329, 31), da = 351

(nb, eb) = (4393, 43), db = 1847

A gởi cho B câu sau:> word:="i disapprove of what you say but i will defend to the

death your right to say it":[11]10Lưu ý quan trọng: Trong chữ ký RSA lhi A gởi cho B, điều kiện cần thiết: na nb11Tôi không đồng ý với những gì bạn nói nhưng tôi sẵn sàng chết để bạn được nói lên điều ấy. (Voltaire)

Phạm Minh Hoàng 227

Page 244: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

RSA3:=proc(mot,n,d,nb,eb)local f,g:f:=x¡expo(x,eb,nb):g:=x¡expo(x,d,n):[seq(mot[i], i=1..length(mot))]subs(AN,%); sum(%[i]*NBˆ(i-1),i=1..nops(%));convert(%,base,n): map(g,%);map(f,%):sum(%[i]*nbˆ(i-1),i=1..nops(%));convert(%,base,NB); map(cat,op(subs(NA,%)));end:

Bảng 11.6: Chương trình mã RSA có ký tên và liên kết với phép bình phương liên tiếp.

> RSA3(%,2329,351,4393,43);

woapboteeqkwmubswdlxwublqbvhcjcvjfptaxade

gctxgauowhjtlwbnqoitbtnlxiiteaqihvojpkbd

Và B sẽ tìm lại đươc câu nói bất hủ trên bằng lệnh:> RSA3(4393,43,2329,31);

Vài lưu ý khi chon khóa RSA:

Mặc dù có tính bảo mật cao, nhưng cần quan tâm chi tiết khi sử dụng RSA.

Hai thuật toán được dùng để "mò" ra p, q là Pollard và Fermat. Pollard khởi đầu bằng cácsố nguyên tố nhỏ 3, 5, 7 . . ., nếu n chia chẵn cho chúng là khóa đã bị bẻ. Ngược lại Fermatkhởi đầu bằng

?n và "bung" ra hai bên, nếu n chia chẵn cho một trong những số ấy là kể

như xong.Vậy: tránh chọn p (hoặc q) nhỏ, lân cận

?n và phải tương đối cách biệt nhau.

Giả sử A gởi cho 3 bạn với 3 khóa công khai (ni, ei) khác nhau, nhưng vì "làm biếng" họchọn cùng giá trị e, chẳng hạn (85, 3), (143, 3), (133, 3). Nếu A gởi x = 62 thì 3 ngườikia sẽ nhận được 73, 90, 125(73 623[85] . . .). Nhưng ai đó có được ba kết quả này cùngvới ba khóa công khai thì kể như "tiêu đời". Hắn ta chỉ dùng định lý Trung Quốc một phátlà tìm ra văn bản gốc:

> chrem([73,90,125],[85,143,133])ˆ(1/3):%=simplify(%);3?

238328 = 62

Vậy: tránh "làm biếng" hoặc đã lỡ thì A phải cố gắng sửa cho 3 văn bản đừng giống nhauhoàn toàn (thêm vào các khoảng trắng giữa các chữ...)

Tuy nhiên có những cách chỉ cần biết khái niệm về RSA và một chút "ma lanh" là có thểbẻ khóa dễ dàng. Giả sử một ngày đẹp trời, bạn nhận được một email của người bạn đínhkèm một văn bản rồi yêu cầu bạn mã và ký tên bằng khóa bí mật của bạn. Nếu bạn làmđiều này thì kể như ... xong. Vì lúc ấy với văn bản gôc và văn bản mã cộng với khóa côngkhai của bạn, hắn sẽ tìm ra khóa bí mật, và dĩ nhiên bạn sẽ lãnh hậu quả.Vậy: không bao giờ "làm ơn" mã và ký tên vào một văn bản nếu có khả nghi. Bạn có thểlàm việc đó nhưng nhớ thêm vào văn bản gốc một vài dấu trắng.

228 Phạm Minh Hoàng

Page 245: Maple Va Cac Bai Toan Ung Dung

11.3. Bài đọc thêm Bẻ khóa RSA: Con đường chông gai

11.3 Bài đọc thêm Bẻ khóa RSA: Con đường chông gai

Trong suốt chương nói về mật mã RSA chúng ta đã thấy tạo ra một khóa là chuyện rất dễdàng, nhưng bẻ khóa (tìm ra d) là một việc cực kỳ khó khăn. Lý do là từ hồi con người biết làmtính cộng bằng những thanh tre, cục đá cho đến ngày nay, khi chỉ một cái clic chuột là một tỷphép tính được hoàn tất, con người vẫn chưa tìm ra thuật toán để thừa số hóa một cách thật hữuhiệu và nhanh chóng.

Ta thử vài phép toán sơ đẳng. Cho n = 33 34 35 . . . 72 73 ta sẽ có một số 71 chữsố.

> seq(k,k=33..73);

> n:=convert([%],'*'):length(%);

71

Chỉ cần 4/1000 giây Maple có thể thừa số hóa n thành tích của 21 số nguyên tố.Nhưng phải mất 400 giây để phân tích n + 1 thành 4 số nguyên tố.Chỉ cộng thêm 1 mà phải mất 100.000 lần thời gian nhiều hơn. Đơn giản là vì càng ít thừa

số thời gian tìm càng lâu. Vậy nếu n + 1 là tích của 2 số nguyên tố thì thời gian tìm sẽ rất lâu.Và tích của hai số nguyên tố chính là khóa RSA mà chugns ta vừa khảo sát.

Bẻ khóa RSA hay thừa số hóa nói chung là một trong những cuộc chạy đua kỳ thú nhất củacác nhà khoa học. Phương pháp đầu tiên và dĩ nhiên sơ khai nhất do Eratosthène, một mà Toánhọc Hy Lạp cổ đại phát minh ra từ năm 250 trước Công Nguyên[12]. Theo phương pháp này, đểthừa số hóa n, người ta đem chia nó cho các số nguyên tố nhỏ hơn

?n. Dĩ nhiên phương pháp

này chỉ có thể áp dụng khi n nhỏ mà thôi, vì theo Tchebicheff, nếu n ¡ 10 thì số nguyên tố nhỏhơn n (được gọi là π(x)) được tính bằng công thức:

π(x) ¡ x

ln(x)ln

21/231/351/5

301/30

Theo công thức này, để thừa số hóa một khóa RSA 100 chữ số nghĩa là tích của hai số nguyêntố 50 chữ số phải cần đến 1050/ ln(1050) 0.92 ≈ 0.8 1048 phép chia. Nếu đem thực hiệntrên một máy tính lượng tử(!) có khả năng tính 1000 phép chia mỗi nano-second, ta cần khoảng21028 năm. Một khoảng thời gian vượt ngoài trí tưởng tượng khi chúng ta biết rằng vũ trụ chỉ"mới" được hình thành vào khoảng 13 109 năm... (theo những dữ kiện thu thập từ kính thiênvăn Hubble ngày 26/4/2005)

Một chi tiết cũng cần được quan tâm là vì chúng ta làm việc trong hệ nhị phân. Nếu dùngk bits để mã thì số khóa là 2k, và khi tăng thêm một bit là tăng lên gấp đôi số khóa và dĩ nhiêncũng tăng lên gấp... nhiều lần thời gian tính toán. Sự tương ứng giữa k và chiều dài khóa (sốcác chữ số) được tính bằng:

> seq([2ˆk,length(2ˆ(2ˆk))],k=5..11);

[32, 10], [64, 20], [128, 39], [256, 78], [512, 155], [1024, 309],

[2048, 617]

Cụ thể là khi mã trên 64 bits, chiều dài khóa là 20, và khi cùng 128 bits chiều dài khóa là39 và cứ thêm 1 bits là số khóa tăng gấp đôi (2k+1 = 2.2k). Một khóa mã với 128 bits sẽ khóthừa số hơn gấp 2128/264 = 18 tỷ tỷ lầm một khóa 64 bits.

Dĩ nhiên con người đã tìm ra nhiều phương pháp khác để thừa số hóa một khóa RSA, có thể12Xem bài đọc thêm trang ...

Phạm Minh Hoàng 229

Page 246: Maple Va Cac Bai Toan Ung Dung

Chương 11. Số học và ứng dụng

kể đến là các phương pháp Fermat, Pollard, đương cong ellips, sàng toàn phương (tạm dịch từtiếng Pháp là crible quadratique).

Vào ngày 22/8/1999, con người đã phá kỷ lục khi thành công "bẻ" khóa RSA-155 (512) bits.Kết quả này không những thành công về mặt tính toán thuần túy (thuật toán Pollard) mà đó cònlà một điểm son cho kỹ thuật máy tính hiện đại: 300 máy tính của 11 phòng thí nghiệm được nốikết liên lục địa qua 6 quốc gia đứng hàng đầu trong cả hai lãnh vực này là Hà Lan, Mỹ, Canada,Úc, Anh và Pháp. Các thành viên tham dự đều là những chuyên gia hàng đầu về tính toán hìnhthức, lý thuyết số và mật mã.

Công việc khổng lồ này được chia làm hai gia đoạn. Giai đoạn đầu do 300 máy tính cánhân thực hiện với kết quả là một ma trân kích thước khoảng 7.000.000. Giai đoạn thứ hai "đơnthuần" chỉ là giải hệ phương trình tuyến tính tương ứng vơi ma trận khổng lồ trên. Việc này đãkéo dài 224 giờ trên Cray-C916 với 2 giga-byte, một máy tính véc-tơ cực mạnh của trung tâmSARA ở Amsterdam, là nơi điều hành mọi công việc. Tổng cộng người ta đã mất khoảng 3 thángrưỡi với một ngân quỹ khoảng 2 triệu USD để thừa số một số 155 chữ số thành hai số nguyêntố có chiều dài 78:

RSA155=1094173864157052742180970732204035761200373294544920

5990913842131476349984288934784717997257891267332497

625752899781833797076537244027146743531593354333897

=102639592829741105772054196573991675900

716567808038066803341933521790711307779

106603488380168454820927220360012878679207958575989291522270608237193062808643

Sau này nhiều phần thưởng đã được hứa hẹn cho ai có thể thừa số những khóa RSA dài hơn.Giải thưởng cho khóa RSA-576 (147 chữ số) là ... 10.000 USD (đã có người ẵm vào năm 2003),cho RSA-640 (193 chữ số) là 20.000 USD (chưa ai ẵm), cho RSA-2048 là 200.000 USD. Cácbạn muốn thử thời vận có thể xem chi tiết tại:

http://www.rsasecurity.com/rsalabs/challenges/factoring/numbers.htmlMột lời khuyên: cứ xem những gì người ta đã làm năm 1999, nếu bạn thực sự cần tiền chỉ

nên thử thời vận khi bạn có đủ aspirine và đủ thời giờ. Vì theo luật Moore[13], con người sẽ thừasố được RSA-2048 và năm 2079...

13Theo luật này khả năng máy tính tăng lên 8 lần sau 3 năm

230 Phạm Minh Hoàng

Page 247: Maple Va Cac Bai Toan Ung Dung

Chương12

Xử lý hình động

Không những Maple có thể giải quyết được những bài toán cực kỳ phức tạp, mà nó còncó khả năng tạo ra các hình động (animation). Những hình động này rất hữu ích khi chúng tamuốn thấy được sự thay đổi của những gì vừa tính toán-mà con người thường không thể thựchiện được. Việc này sẽ giúp cho công việc giảng dạy trở nên hấp dẫn và tạo sự chú ý cho họcviên, giúp họ hiểu nhanh hơn bài toán.

Nói "Maple có khả năng tạo ra các hình động" thật ra cũng không đúng, vì Maple chỉ tạonên những hình tĩnh (fixed), và chính chúng ta phải tìm cách biến đổi và "ghép" chúng thànhmột hình động. Nguyên tắc chỉ có thế nhưng đôi khi bài toán đòi hỏi nhiều cải tiến, để làm đượcchuyện này, chỉ có cách "mày mò" để giải quyết những yêu cầu trên, đồng thời tự tìm ra nhữngphương thức mới.

Nguyên tắc cơ bản của hình động có lẽ tất cả mọi người đều biết: nguyên tắc chiếu phim.Đó là một dãy những hình tĩnh được xếp theo thứ tự, hình sau khác hình trước một chi tiết nhỏ.Và khi lần lượt hiển thị với một vận tốc nào đó, những hình tĩnh này sẽ tạo ra chuyển động.

Trình bày nguyên tắc cơ bản và các ứng dụng cụ thể là mục đích của chương này

12.1 Chuyển động đơn giản

Thí dụ

Đầu tiên chúng ta nhập các thư viện tiên ích và khai báo một số chữ viết tắt trong suốtchương:

> with(plots):with(plottools):

> alias(IT='insequence=true',SC='scaling=constrained'):

Cho hàm f(x) = sin(x), đồ thị là hình 12.1 (a):> plot(sin(x),x=0..5*Pi,tickmarks=[3,3];

Tạo hình động cho đồ thị trên. Giả sử chúng ta muốn đồ thị chuyển động theo phương x(giống như trong các oscilloscope), chúng ta chỉ cần cho biến x di chuyển một khoảng cách làcác đồ thị sẽ tịnh tiến một khoảng cách đó. Để làm điều này, cần khai báo một dãy với chỉ số i.Ở đây ta khai báo i chuyển dịch từ 0 đến 3. Sau đó, dùng hàm display để hiển thị 4 chuyểnđộng tĩnh.

Page 248: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Hình 12.1: Hình tĩnh của hàm sin(x) và 4 chuyển động khác nhau

> p:=seq(plot(sin(x-i),x=0..5*Pi).i=0..3):

> display(p,tickmarks=[3,3];

Và kết quả là Hình 12.1 (b)Để tạo hình động, ta cần hiển thị hình thứ n sau khi tắt hình thứ n 1, ta đặt option inse-

quence=true (viết tắt bởi alias) là IT)> display(p,IT);

Dùng nút chuột trái bấm vào hình rồi dùng các nút trên thanh công cụ [Hình 12.1 (c)] đểxem hình chuyển động. Ta thấy có chuyển động nhưng quá nhanh. Để kéo dài thời gian, ta choi chạy từ 1 đến 10:

> seq(plot(sin(x-i),x=0..5*Pi).i=0..10): display(%,IT);

Tuy nhiên chuyển động vẫn còn quá nhanh. Lý do là vì i chạy từ 1 đến 10 với bước nhảylà 1. Để giảm vận tốc ta chia nhỏ bước của i. Thí dụ giảm 4 lần ta chia i cho 4, và để đảm bảothời gian như cũ, ta phải cho i chạy từ 1 đến 40 thay vì 10:

> seq(plot(sin(x-i/4),x=0..5*Pi).i=0..4*10): display(%,IT);

Như vậy "đoạn phim" sẽ gồm 40 hình, thời gian tính sẽ lâu hơn, nhưng kết quả dễ qua sáthơn. Kỹ thuật giảm vận tốc bằng cách chia nhỏ các bước trong dãy seq sẽ được chúng ta ápdụng cho suốt chương này.

Thí dụ 2

Cho hàm f(x) = sin(x) trong khoảng [0, 10]. Hình tĩnh này là (không hiển thị):> plot(x,x=0..10):

Bây giờ, giả sử chúng ta muốn tạo hình động, trước tiên đồ thị trên được vẽ từ 0 tới 1, sauđó từ 1 tới 2 và tiếp tục như thế tới 10. Như thế hình động sẽ gồm các hình tĩnh có x từ 0 tới i, ichạy từ 1 đến 10. Dãy (seq) sẽ có 10 hình tĩnh:

> seq(plot(x,x=0..i),i=1..10): display(%,IT);

Nếu chúng ta muốn chuyển động chậm hơn, ta chia độ tăng của i cho 5 lần chẳng hạn, khix = 10, i phải chạy từ 1 đến 50:

> seq(plot(x,x=0..i/5),i=1..50): display(%,IT);

232 Phạm Minh Hoàng

Page 249: Maple Va Cac Bai Toan Ung Dung

12.1. Chuyển động đơn giản

Bây giờ ta muốn tạo hình động cho một đoạn thẳng có chiều dài 1 (cố định) chạy theo đườngf(x) = x. Cũng giống trường hợp trên, ở đây x đi từ i đến i + 1 và i chạy từ 0 đến 45. Muốn

hình vẽ mịn ta giảm bước nhảy, x đi từi

5đến

i

5+ 1:

> seq(plot(x,x=i/5)..(i/5)+1,i=0..45): display(%,IT);

Thí dụ 3

Trong thí dụ này chúng ta sẽ cho quay một chong chóng có ba cánh. Cách đơn giản nhất đểvẽ là dùng tọa độ cực [Hình 12.2 (a)]:

> p:=polarplot(cos(3*t),t=0..Pi,SC): display(p)

Để tạo hình quay, ta dùng lệnh rotate [Hình 12.2 (b)]:> rotate(p,Pi/6);

Hình 12.2: (a) Chong chóng ở vị trí đầu, (b) sau khi quay 30o và (c) 4 chuyển động 5o

Vì chong chóng có 3 cánh nên góc giữa hai cánh là2π

3, hay nói cách khác, khi chong chóng

Phạm Minh Hoàng 233

Page 250: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

quay, một cánh vẽ đến vị trí của cánh đi trước sau khi quay một góc2π

3= 120o. Như thế ta chỉ

cần chia góc này ra làm nhiều phần. Giả sử giữa hai hình tĩnh, chong chóng quay một góc 5o π36.

Để đơn giản ta sẽ khai báo một hàm mũi tên theo i, và để 4 hình tĩnh liên tục ta làm [Hình 12.1(c)]:

> f:=i¡rotate(p,i*Pi/36): display(seq(f(i),i=0..3),SC);

Và để tạo hnình động ta chọn bước quay là 10o π18, nhe thế phải mất 12 bước mới đi hết một

góc 120o. Như thế trong dãy, i sẽ thay đổi từ 0 đến 11 là xong một chu kỳ:> f:=i¡rotate(p,i*Pi/18):> display(seq(f(i),i=0..11),IT,SC);

Ta cũng có thể dùng hàm số hợp để làm hình động. Cứ mỗi hàm f(i), chong chóng sẽ quay10o, vậy khi áp dụng k lần ta có:

> g:=k¡(f@@k)(p);g := k ÞÑ(f (k))(p)

Cùng một lý luận như trên, phải quay 12 lần mới xong một chu kỳ:> display(seq(g(i),i=1..12),IT,SC);

12.2 Chuyển động phức tạp

Trong trường hợp này ta có tối thiểu hai chuyển động.

.

.t

.y

.x

Hình 12.3:

Thí dụ 1

Cho một bánh xe bán kính r lăn không trượt trên Ox. Trên vành bánh xe có gắn một van.Tạo hình động của hệ thống.

234 Phạm Minh Hoàng

Page 251: Maple Va Cac Bai Toan Ung Dung

12.2. Chuyển động phức tạp

Để vẽ hình trên. ta dùng lệnh dưới đây và giả sử r = 0.5.> display(circle([0,1/2],1/2),

disk([1/2*cos(Pi/6),1/2*sin(Pi/6)],.03),SC);

Khai báo chuyển động của bánh và van xe

Vì bánh xe lăn trên trục Ox nên phương trình của nó là:> cr:=t¡circle([t,r],r);

Và k chuyển động của nó là:> q:=k¡seq(cr(i),i=0..k); (12.2.1)

Ta giả sử r = 4. Năm chuyển động đầu tiên của bánh xe: [Hình 12.4 (a)]> r:=4: display([q(4)],SC);

Riêng đối với van xe, ta dùng hàm disk để khai báo. Ở đây ta tô xám để phân biệt với vànhxe. Năm chuyển động đầu tiên của van xe (bán kính van: 0.5) là:

> p1:=k¡seq(disk([sin(t),cos(t)],.5,color=wheat),t=1..k):> display(p1(5),SC);

Ở đây ta khai báo tọa độ của van là [sin(t),cos(t)] thì bánh xe lăn theo chiều kim đồnghồ, tương ứng với chiều lăn về phía x ¡ 0 [Hình 12.4 (b)]. Nếu khai báo [cos(t),sin(t)]thì bánh xe lăn theo chiều lượng giác, tương ứng với chiều lăn về phía x 0.

Hình 12.4: (a) Chuyển động tịnh tiến của bánh xe và (b) chuyển động quay của van

Ghép bánh xe và van

Trước tiên ta xác định tọa độ của van trong hệ trực chuẩn xOy.Xét một bánh xe bán kính r, van xe gắn tại M .Vào thời điểm đầu, tâm C ở [0, r]. Sau khi lăn một góc t, tọa độ của M là cung PM =

OP = rt:

Phạm Minh Hoàng 235

Page 252: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động"xM = ON = OP NP = rt r sin(t)yM = NM = PC AC = r r cos(t)

..O

.t

.N .P

.C

.A.M

.r

.y

.x

Hình 12.5:

Đây là phương trình của đường cycloid mà ta có thể vẽ dễ dàng bằng hàm tham số. Tuynhiên, ta cũng có thể vẽ bằng tọa độ Descartes:

> eqx:=x=r*t-r*sin(t): eqy:=y=r-r*cos(t):

Để loại t ta bắt buộc phải giải t theo y (biểu thức của eqy) rồi thế vào eqx[1]. Để tìm lạiđường cycloid ta phải lấy hình đối xứng qua đường phân giác thứ nhất (lấy r = 1):

> solve(eqy,t): eq:=subs(t=%,eqx): eq;

x = r(π arccos(y r

r)) r

c1 (y r)2

r2

> plottools[reflect](plot(subs(r=1,rhs(eq)),y=0..5),

[[0,0],[1,1]]);

Tạo hình động

Để tạo hình động chung cho bánh xe và van - ta lưu ý rằng khi bánh xe di chuyển một đoạnthẳng u = OP thì van đã quay được một góc α sao cho cung rαu ñ α = u

r. Vậy nếu ta đã

dùng t là độ dài mà bánh xe lăn được (thay cho k trong biểu thức 12.2.1) thì tọa độ của vantương ứng với phương trình cycloid, ta phải chia t cho bán kính r để lúc nào van cũng "dính"trên vành bánh xe:

> s:=i¡seq(disk([r*t/r-r*sin(t/r),r-r*cos(t/r),.05]),t=0..i):Giả sử t quay được 3 vòng (bánh xe quay 3 vòng) thì đoạn thẳng tương ứng là 32πr ≈ 19r.

Với r = 4, ta có chuyển động riêng của van xe:> display(s(19*r),SC);

1vì Maple không thể làm ngược lại

236 Phạm Minh Hoàng

Page 253: Maple Va Cac Bai Toan Ung Dung

12.2. Chuyển động phức tạp

Hình 12.6: Chuyển động của van xe trong 3 vòng quay

Ghép chung hai chuyển động:> display([q(19*r),s(19*r)], insequence=true,SC);

> display([q(19*r),s(19*r)],SC);

Ta thấy kết quả không như ý muốn. (Ở lệnh trên với dấu []), ta được hai chuyển động lầnlượt. Bánh xe quay hết đoạn 19r rồi đến van. Ở chuyển động thứ hai (với dấu ) còn thê thảmhơn, bánh xe hiện ra một hình rồi đến van xe một hình. Cứ thế cho đến khi hết. Trông hoa hếtcả mắt!

Để hai chuyển động xảy ra đồng thời, phải khai báo chung trong một dãy seq:> p:=i¡seq(display(

cr(t),disk([r*t/r-r*sin(t/r),r-r*cos(t/r),.05])),t=0..i);

p := i ÞÑ seq(display(

cr(t), disk([t r sin(t

r), r r cos(

t

r), .05])), t = 0..i) (12.2.2)

Và chuyển động (dĩ nhiên chỉ thấy trên màn hình) là:> display([p(19*r)], insequence=true,SC);

Ta có thể làm cách khác - bằng cách dùng các lệnh display ngay khi khai báo các hàmq(i), s(i) và kể từ bây giờ ta viết tắt lệnh color=wheat):

> alias(CW='color=wheat'):

> q:=k¡display(seq(cr(i),i=0..k),IT,SC):> s:=i¡display(seq(

disk([r*t/r-r*sin(t/r),r-r*cos(t/r),.05],color=black),t=0..i),IT,SC);

Và cách tạo hình động bây giờ đơn giản hơn. Lưu ý: với cách này và không cần khai báoIT, SC trong lệnh tạo chuyển động sau:

> display([s(19*r),q(19*r)]);

Chuyển động của van xe có hình cycloid. Chúng ta sẽ trở lại thí dụ này ở mục (12.5.3)với nhiều tính toán phức tạp và lý thú.

Phạm Minh Hoàng 237

Page 254: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Thí dụ 2

Cho hai chiếc xeA vàB khởi hành cùng lúc với hai vận tốc khác nhau và chạy theo phươngOx. Tạo hình động của chuyển động.

Khai báo chuyển động của từng xe

Thí dụ này có phần phức tạp hơn thí dụ 1 vì nếu chỉ xét riêng một hình tĩnh thì thí dụ 1 cóhai chuyển động (bánh xe và van xe) và mỗi chuyển động có một chi tiết. Trong trường hợpnày cũng chỉ có hai chuyển động (hai xe) nhưng mỗi chuyển động có tới 4 phần tử: thùng xe,hai bánh và tên xe. Vì thế trước tiên ta phải khai báo từng chi tiết này trước khi "ráp" chúng lạivới nhau.

Dùng lệnh polygon để vẽ thùng xe (biến v1), lệnh disk dùng để vẽ hai bánh xe. Bánhtrước r1, bánh sau s1. Biến n1 dùng để vẽ chữ A hoặc B lên thùng xe. Tất cả các khai báo đềudưới dạng hàm mũi tên với biến i là hoành độ đuôi xe.

> v1:=i¡polygon([[i,1.2],[i+1.5,1.2],[i+1.5,.7],[i+2,.7],[i+2,.2],[i,.2]]):

> r1:=i¡disk([i+.5,.2],.2,CW): s1=:i¡disk([i+1.5,.2],.2,CW):> n1:=i¡(textplot([i+.9,.8,"A"],font=[COURIER,BOLD,14])):

Để ráp 4 phần này:> f1:=i¡display(v1(i),r1(i),s1(i),n1(i)):

Và 4 hình tĩnh của chuyển động [Hình 12.7 (a)] là:> seq(f1(1.5*i),i=1..4): display(%,SC);

Hình 12.7 (a) tượng trưng cho một chuyển động đều với khoảng cách thời gian là 1.5. Tuynhiên ta cũng có thể tạo ra một chuyển động với những khoảng cách thời gian bất kỳ [Hình 12.7(b)] (nhớ dùng móc vuông trong trường hợp này):

> seq(f1(i),i=[1,2.4,4.3,6.4]): display(%,SC);

Hình 12.7: 4 chuyển động với khoảng cách thời gian (a) đều và (b) không đều

238 Phạm Minh Hoàng

Page 255: Maple Va Cac Bai Toan Ung Dung

12.2. Chuyển động phức tạp

Và để tạo hình động, chúng ta sẽ chia nhỏ thời gian 5 lần để dễ quan sát:> g1:=seq(f1(i/5),i=1..50): display(g1,SC,IT);

Đối với chiếc xe thứ 2 (xe B), các khai báo cũng tương tự, chỉ khác chiếc xe A ở tung độcủa xe. Mặt khác chúng ta còn thêm đồ thị của con đường của xe B:

> v2:=i¡polygon([[i,3],[i+1.5,3],[i+1.5,2.5],[i+2,2.5],[i+2,2],[i,2]]):

> r2:=i¡disk([i+.5,2],.2,CW): s2:=i¡disk([i+1.5,2],.2,CW):> n2:=i¡(textplot([i+.9,2.6,"B"],font=[COURIER,BOLD,14])):> f2:=i¡display(v2(i),r2(i),s2(i),n2(i)):> p2:=plot(1.98,x=0..12):

> g2:=seq(f2(i/5),i=1..50):

Ghép hai chuyển động

Cũng giống như thí dụ 1, chúng ta ghép hai chuyển động bằng cách gom chúng vào trongcác lệnh display và cũng thu nhận được các kết quả ngoài ý muốn. Lệnh đầu tạo ra hai chuyểnđộng lần lượt và lệnh thứ hai thì cũng...hoa cả mắt

> display([g1,g2],SC,IT);

> ff:=seq([f1(i/5),f1(i/5)],i=1..50):

> display(ff,IT,SC);

Để giải quyết ta cũng phải khai báo chung trong một dãy. Và đặc biệt, ở đây chúng ta choxe B chạy nhanh hơn xe A bằng cách chia nhỏ thời gian và thay đổi thời lượng để các xe vẫn đihết cùng một khoảng cách:

> ff:=seq(display([f1(i/5),f2(i/4)]),i=1..40):

> display(ff,IT,SC);

Xem kết quả trên màn hình thì xe B chạy nhanh hơn, đuôi xe đến hoành độ 10 = 404trong

khi xe A mới đến hoành độ 8 = 405[Hình 12.8 (a)]. Ta có thể ví mẫu số như nghịch đảo với vận

tốc của xe.Xem hình động thì ta thấy cả hai xe đều ngừng khi một trong hai "cán mức đến" hay nói

khác đi, một trong hai xe thực hiện xong dãy thời gian i = 1..40. Cái chúng ta muốn bây giờlà dù nhanh hay chậm, trước hay sau cả hai xe đều phải cán mức. Có nghĩa là sau khi xe B đếnđích thì xe A vẫn tiếp tục chạy cho đến khi cán mức.

Ta lý luận như sau: chuyển đông chấm dứt khi i đạt vị trí cực đại (ở đây là 40), lúc ấy đuôixe B đến 10. Vậy thì ta cứ để chi i chạy đến bao nhiêu cũng được rồi ta ngưng chuyển động khicả hai đuôi xe đến 10. Để làm được điều này ta chỉ cần lấy cực tiểu của i

5hoặc i

4và 10. Nói

i chạy đến bao nhiêu cũng được nhưng trên thực tế, và đúng nhất là ta lấy 5404

= 50, vì với trịnày cả hai đều đã đến đích. Sau cùng ta được:

> ff:=seq(display([f1(min(10,i/5)),f2(min(10,i/4))]),i=1..50):

> display(ff,IT,SC);

Lưu ý: Để lưu một hình tạo từ Maple vào một file thì bình thường ta nhấp nút bên phảichuột vào hình và dùng export để xuất ra file dưới dạng muốn lưu (jpg, bmp, eps). Nhưng điềunày chỉ đúng với hình tĩnh, nếu ta làm như thế với hình động thì ta sẽ có hình tĩnh đầu tiên,thường thì không đúng như ý muốn. Nếu muốn có một hình như ý muốn, thì chỉ có cách tạo ra

Phạm Minh Hoàng 239

Page 256: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Hình 12.8: (a) Cả hai xe ngừng cùng lúc và (b) lần lượt ngừng

hình tĩnh đó. Ở đây ta muốn là hình cuối cùng, có nghĩa là hình i = 8 hoặc i = 10 [2].> display([f1(8),f2(10)],SC,view=[0..12,0..3]);

> display([f1(10),f2(10)],SC,view=[0..12,0..3]);

Lệnh thứ nhất tạo ra [Hình 12.8 (a)]. Một lưu ý khác là ở đây ta dùng view để xác địnhkhoảng chia trên các trục tọa độ. Điều này bắt buộc vì nếu không sẽ mặc định từ 10 (hoặc 8)đến 12.

12.3 Chuyển động có sự thay đổi vận tốc

Thay đổi đều

Được gọi là thay đổi đều khi vận tốc đối tượng thay đổi và được giữ nguyên cho đến hếtchuyển động. Đó là trường hợp của chiếc xe mà ta thấy trong phần trên. Bây giờ chúng ta sẽthay đổi thí dụ chóng chóng 3 cánh trong mục (12.1.3), trang(...). Để tạo hình động, ta phải khaibáo một phép quay π

18= 100 và như thế phải 12 lần (từ 0 đến 11) để cánh quạt đi xong một chu

kỳ 1200 = 2π3:

> p:=polarplot(cos(3*t),t=0..Pi,SC):

> f:=i¡rotate(p,i*Pi/18):> display(seq(f(i),i=0..11),IT,SC);

Nguyên tắc thay đổi vận tốc rất đơn giản, thí dụ để tăng vận tốc lên 2 lần, ta cho chongchóng quay mỗi lần không phải π

18= 100 mà là 2 π

18= 200 và đồng thời chỉ 6 lần quay là xong

1 chu kỳ thay vì 12 như vận tốc bình thường. Tóm lại:> display([seq(f(2*i),i=0..11/2)],SC,IT);

2Ta có thể dùng hard copy bằng cách nhấn Alt-PrtSc rồi dán vào Corel Draw để xử lý.

240 Phạm Minh Hoàng

Page 257: Maple Va Cac Bai Toan Ung Dung

12.3. Chuyển động có sự thay đổi vận tốc

Khi quan sát kết quả trên màn hình ta thấy chuyển động không "nhuyễn" như trước. Đâylà điều không tránh khỏi khi tăng vận tốc. Mặt khác khi dùng nút chạy từng bước, ta thấy khii = 5 cánh quạt đã hoàn tất chu kỳ đúng như đã khai báo i = 0..11

2(Maple chỉ lấy số nguyên

trong lệnh seq).Một cách tổng quát hơn khi muốn thay đổi vận tốc n lần (n P Q ). Ta khai báo một hàm fp

với biến là n:> fp:=n¡display([seq(f(n*i),i=0..11/n)],SC,IT);

Chẳng hạn:

fp(2) để chong chóng quay nhanh gấp 2 lần

fp(1/3) để chong chóng quay chậm gấp 3 lần

Thay đổi không đều - Thí dụ 1

Đôi khi cách "chia đều thời gian" như trên lại không biểu diễn chuyển động một cách trungthực, chẳng hạn những chuyển động tuần hoàn. Thí dụ, chúng ta muốn quan sát chuyển độngcủa hàm f(x) = sinx

n, (x P [0, 5π], n P [1, 8]). Hình tĩnh của chuyển động là:

> seq(plot(sin(x)/i,x=0..5*Pi),i=1..8): display(%);

Hình 12.9: (a) Chuyển động với thay đổi đều và (b) thay đổi không đều

Quan sát [Hình 12.9 (a)] ta thấy biên độ của đồ thị giảm dần khi i tăng, nhưng sự giảm nàyrõ ràng là không đều. Ở những bước đầu i 3 thì ta còn phân biệt được sự giảm này nhưng khii ¡ 7 thì các đường cong sát lại với nhau và biên độ giảm một lượng rất nhỏ. Nếu tiếp tục choi tăng lên thì chỉ thấy một nét đen đậm và đương cong tiến về trục hoành vô cùng chậm. Khimuốn tạo hình động với i lớn, thì chuyển động không được phân bố đều, ta thấy chuyển độngsẽ vô cùng chậm:

> seq(plot(sin(x)/i,x=0..5*Pi),i=1..20): display(%);

Để giải quyết trở ngại này, nghĩa là làm sao cho chuyển động thật đều, không còn lúc nhanhlúc chậm, ta phải làm sao cho chỉ số i không thay đổi mỗi lần với bước nhảy 1, mà i càng lớn

Phạm Minh Hoàng 241

Page 258: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

thì khoảng [i, i + 1] càng lớn. Lý tưởng nhất là ta dùng dãy Fibonacci vì hai lý do: thứ nhất dãynày đã có khai báo sẵn trong Maple, thứ hai độ tăng của dãy vô cùng lớn, thỏa mãn yêu cầu củachúng ta là "chia đều" chuyển động. Để dùng dãy Fibonacci, phải nhập thư viện combinat

> with(combinat):

> s:=fibonacci(i)$i=1..19;

s := 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,

1597, 2584, 4181

Ở đây ta chỉ cần lấy 10 số hạng đầu để hiển thị:> seq(plot(sin(x)/i,x=0..5*Pi),i=s[1..10]): display(%);

Xem [Hình 12.9 (b)] ta thấy 10 đường cong tương ứng với 10 giá trị của i có vẻ được dàntrải ra đều hơn và tiến sát tới trục hoành hơn trường hợp thay đổi đều.

Và để tạo hình động:> seq(plot(sin(x)/i,x=0..5*Pi),i=s[1..10]): display(%,IT);

Ta cũng có thể khai báo thêm một chuyển động đối xứng với chuyển động trên qua trụchoành, và khi cho chạy cả hai hình ta sẽ có một chuyển động thường thấy trong lãnh vực điện,điện từ:

> p1:=seq(plot(sin(x)/i,x=0..5*Pi),i=s[1..10]):

> p2:=seq(plot(-sin(x)/i,x=0..5*Pi),i=s[1..10]):

> display([p1,p2],IT);

Trong trường hợp độ tăng của dãy Fibonacci quá lớn không phù hợp với chuyển động thật,ta có thể chia đôi các phần tử của dãy này:

> s:=fibonacci(i)/2$i=1..20:

Nếu cũng chưa thích hợp, ta bắt buộc phải tự tạo ra các dãy theo ý muốn. Chẳng hạn dãyvới độ tăng là số thứ tự của lần tăng, có nghĩa là số thứ hai bằng số thứ nhất +1, số thứ ba bằngsố thứ hai +2, số thứ tư bằng số thứ ba +3 ... Maple không có sẵn các dãy này, nhưng lập trìnhrất dễ dàng:

> k:='k': i:='i': j:='j': k:=1: j:=0: P:=NULL:

> for i to 20 do k:=k+j: j:=j+1: P:=P, k; od: P;

1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, 191

Một điều cần lưu ý ở đây là khi lập trình chúng ta nên cẩn thận nhập các giá trị đầu cho cácbiến. Chẳng hạn với lệnh for như trên, nếu k, j không có giá trị đầu, lệnh này sẽ sai.

> k:='k': i:='i': j:='j':

> j:=0: P:=NULL: for i to 20 do k:=k+j: j:=j+1: P:=P, k; od:

Error, recursive assignment

Mặt khác, sau khi thực hiện lệnh for, ta lại giải phóng các biến trên để tránh nhầm lẫn.

Thay đổi không đều - Thí dụ 2

Theo định luật Képler thứ 2 [Xem bài đọc thêm trang 137], khi mặt trăng quay quanh tráiđất trên quỹ đạo ellipse trong đó trái đất là một tiêu điểm thì vận tốc của mặt trăng sẽ nhanh khigần trái đất và chậm khi xa trái đất. Xem [Hình 12.10 (a)] thì thứ tự từ chậm nhất đến nhanhnhất làm3,m3,m4,m1. Đến 80 năm sau, nhờ vào khám phá của Newton về trọng trường, ngườita đã kiểm chứng được định luật này.

242 Phạm Minh Hoàng

Page 259: Maple Va Cac Bai Toan Ung Dung

12.3. Chuyển động có sự thay đổi vận tốc

.

.(a)

.m4

.m3.m1

.m2

.

.(b).4

.B.A.5

Hình 12.10: Chuyển động theo định luật Képler

Teo Newton thì một vật khối lượng m được "hút" bởi một vật bên cạnh khối lượng Mbăng một lực f = GMm

r2 --trong đó r là khoảng cách giữa hai vật và G là hằng số vũ trụ(G = 6.67 1011) trong hệ MKS. Và chính lực hướng tâm này đã tạo ra quỹ đạo ellipse vàchuyển động mà Képler đã kiểm chứng ở trên. Dưới đây ta sẽ tạo hình động để lấy được chuyểnđộng phức tạp này.

Trước tiên ta tạo ra quỹ đạo ellipse. Trong hệ tọa độ trực chuẩn Oxy, phương trình củaellipse có bán kính theo (x, y) là (5, 4) là:

> eq:=xˆ2/25+yˆ2/16=1;

eq :=x2

25+

y2

16= 1

Đường biểu diễn được gán vào biến tj [Hình 12.11 (a)]:> tj:=implicitplot(eq,x=-5..5,y=-4..4): display(%);

Từ phương trình ellipse, ta khai báo một hàm y = f(x). Hàm này dùng để tính tung độ củamột điểm sao cho điểm ấy nằm trên ellipse.

> f:=unapply(sqrt(rhs(isolate(eq,yˆ2))),x);

f:= x ÞÑ 45

?25 x2

Bây giờ ta bước vào phần phức tạp của vấn đề là tính hoành độ của mặt trăng (điểmm). Đểchuyển động phản ảnh chính xác định luật Képler, ta phải đi từ gốc của nó là định luật Newton:trọng lực là một lực tỷ lệ với khoảng cách bình phương. Giả sử ban đầu mặt trăng ở A [Hình12.11 (a),(b)], hoành độ là5. Ta thiết lập một dãy các hoành độ tỷ lệ với k2, trong đó k sẽ thayđổi từ 0 đến một giá trị kmax nào đó sao cho hoành độ ở kmax này tương ứng với B(5, 0). Saukhi "lần mò" chúng ta được một dãy có công thức tổng quát là:

5 + 0.0493k2, (k P [0, 14])

> s1:=seq(-5+kˆ2*.0493, k=0..14);

s1 := 5.,4.95,4.80,4.56,4.21,3.77,3.23,2.58,1.84,

1.01,.07, .97, 2.10, 3.33, 4.66.

Các trị này đều thuộc khoảng [5, 5]. Và chuyển động tương ứng của mặt trăng là:> g1:=seq(display(tj,disk([k,f(k)],.2,CW)),k=s1): display(%);

Chuyển động này [Hình 12.11 (a)] được thiết lập từ 15 vị trí của mặt trăng và hoành độ đitừ 5 đến +5 nghĩa là một nửa ellipse trên trục hoành. Để tạo một nửa còn lại ta phải thiết lập

Phạm Minh Hoàng 243

Page 260: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

một dãy s2 với các phần tử giống như s1 nhưng thứ tự ngược (vì hoành độ của mặt trăng bâygiờ đi từ +5 đến 5), mặt khác tung độ tương ứng sẽ đối xứng với chuyển động nửa ellipse trênqua trục hoành, nghĩa là f(i) sẽ trở thành f(i):

> s2:=seq(-5+kˆ2*.0493,k=-14..0);

s2 := 4.66, 3.33, 2.10, .97,.07,1.01,1.84,2.58,3.23,3.77,

4.21,4.56,4.80,4.95,5.

[Hình 12.11 (b)] biểu diễn chuyển động từB đếnA (nửa ellipse dưới), còn [Hình 12.11 (c)]biểu diễn toàn chuyển động:

> g2:=seq(display(tj,disk([k,-f(k)],.2)),k=s2): display(%);

> display(%): display(g1,g2);

Hình 12.11: Chuyển động của mặt trăng quanh trái đất theo định luật Képler

Quan sát [Hình 12.11] ta thấy rõ ràng là một chuyển động thay đổi không đều. Các hìnhtròn nhỏ tượng trưng cho vị trí mặt trăng sát nhau khi ở gần A[5, 0] và càng tiến đến B[5, 0]thì các vị trí càng rời xa nhau. Nói cách khác, càng gần A, mặt trăng di chuyển càng chậm vànhanh nhất khi đến B, Trái đất sẽ ở đâu đó gần vị trí [2, 0] [Hình 12.11 (c).]

244 Phạm Minh Hoàng

Page 261: Maple Va Cac Bai Toan Ung Dung

12.4. Chuyển động với một hay nhiều hình tĩnh

Và để tạo hình động, may mắn cho chúng ta là trường hợp này đơn giản hơn nhiều so vớitrường hợp hai chiếc xe của thí dụ trước. Ở đây chỉ có hai chuyển động g1 nằm trên trục Ox, g2

nằm dưới Ox và g2 chỉ được khởi động sau khi g1 chấm dứt. Ta có:> display([g1,g2],insequence=true);

Trên màn hình ta thấy trở vềA thì có vẻ như "giật lại" (nếu dùng nút autoreplay, [xem Hình12.1 (c)], trang...). Lý do là vì dãy s2 được kết thúc ở hoành độ 5 và dãy g1 cũng lại bắt đầubằng 5. Khi kết hợp hai dãy này thì tạo ra hiệu ứng trên. Để giải quyết, ta chỉ cần loại phần tửsau cùng này trong dãy s2:

> s2:=seq(-5+kˆ2*.0493,k=-14..-1;

Nhưng với những khai báo trên, chuyển động còn quá nhanh. Ta cần phải chia nhỏ hơn,sau vài lần thử nghiệm ta sẽ tìm được công thức tổng quát của dãy là:

5 + 0.0062k2, k P [1, 40]

Và cũng làm giống như trên, sau cùng ta có:> s1:=seq(-5+kˆ2*.0062,k=1..40):

> s2:=seq(-5+kˆ2*.0062,k=-40..-1):

> g1:=seq(display(tj,disk([k,f(k)],.2,CW)),k=s1):

> g2:=seq(display(tj,disk([k,-f(k)],.2,CW)),k=s2):

> display([g1,g2],insequence=true);

12.4 Chuyển động với một hay nhiều hình tĩnh

Trong thí dụ trước (mục 12.3.3, trang...) ta đã thấy mặt trăng chạy trên một quỹ đạo ellipse.Ellipse này là một hình tĩnh hiện hữu trong suốt chuyển động. Đây là một trường hợp có nhiềuứng dụng.

Thí dụ 1

Cho hàm f(x) = ex2 sin x2. Tạo thành hình động của tiếp tuyến với đồ thị của f . Ta khai

báo f(x) dưới dạng hàm mũi tên:> f:=x¡exp(-xˆ2)*sin(x/2):

Theo đồ thị thì cách dễ nhất là tìm các tiếp tuyến trong khoảng [2, 2]. Phương trình tiếptuyến của một điểm α là:

> tg:=a¡D(f)(a)*(x-a)+f(a);tg := a ÞÑ D(f)(a)(x a) + f(a)

Trước tiên ta sẽ tạo hình tĩnh với tiếp tuyến tại các điểm đặc biệt: u là cực đại của f(x) vàv là điển uốn. u là nghiệm của f 1(x) = 0 và v là nghiệm của f2(x) = 0:

> u:=solve(diff(f(x),x),x);

u := 2RootOf(8 Ztan( Z) 1

Phương trình f(x) = 0 phức tạp vì vừa có hàm mũ vừa có hàm lượng giác không thể có lờigiải giải tích huống hồ gì f2(x) = 0. Giải bằng giải tích không được[3], ta bắt buộc phải tính

3cho dù maxsols hay EnvAllSolutions=true kết quả vẫn không khả qua hơn

Phạm Minh Hoàng 245

Page 262: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

gần đúng:> u:=fsolve(diff(f(x),x),x);

u := .6927082534

> v:=fsolve(diff(f(x),x,x),x,x=0.5..2);[4]v := 1.199815154

> seq(plot([f(x),tg(i)],x=-2..2,view=[-2..2,-.3..0.3],

thickness=[2,1],linestyle=[1,4]),i=[-3/2,u,v,2]):

> display(%); [Hình 12.12 (a)]Để có hình động ta chia nhỏ thêm [Hình 12.12 (b)] và dĩ nhiên phải dùng insequence=true:

> seq(plot([f(x),tg(i/10)],x=-2..2,view=[-2..2,-.25..0.25],

thickness=[2,1],linestyle=[1,4]),i=-20..20):

> display(%,insequence=false);

Hình 12.12: Tiếp tuyến của hàm f(x) = ex2 sin(x

2)

Thí dụ 2

Cho un = 1ncosn(x) cos(nx). Tính

8°n=1

un và biểu diễn sự hội tụ dưới dạng hình động.

> u:=cos(x)ˆn*cos(n*x)/n;

Phép tính trực tiếp không cho ra kết quả:> sum(u,n=1..infinity);

8°n=1

(cos(x))n cos(nx)n

Đặt hàm lượng giác dưới dạng hàm mũ: cosx = ℜ(eIx), cosnx = ℜ(eInx)

> sum(exp(I*x)ˆn*exp(I*n*x)/n,n=1..infinity);

4bắt buộc phải xác định khoảng muốn tìm, nếu không Maple sẽ chỉ tìm ra x = 0

246 Phạm Minh Hoàng

Page 263: Maple Va Cac Bai Toan Ung Dung

12.4. Chuyển động với một hay nhiều hình tĩnh

(eIx)2 ln(1 e2Ix)e2Ix

Lấy phần thực của kết quả trên. Biểu thức này cực kỳ phức tạp không thể in ra đây, nhưngkhi đơn giản xong thì thật ngắn gọn, đó chính là kết quả muốn tìm:

> evalc(Re(%)):

> S:=simplify(expand(%),symbolic);

S := 12ln(2) 1

2ln(1 cos(2x))

Để tạo hình động, trước tiên ta khai báo hàm tổng từng phần Sk =k°

n=1

un và cho k tiến đến

giá trị lớn. Nếu đúng, Sk sẽ hội tụ về S. Dưới đây ta lấy 12 giá trị đầu tiên của Sk:> Sk:=k¡sum(cos(x)ˆn*cos(n*x)/n,n=1..k);

Sk = k ÞÑ8°

n=1

(cos(x))n cos(nx)n

> g1:=seq(plot([S,Sk(i)],x=0..Pi-.01,view=[0..3,-.8..2],

thickness=[3,1]),i=[k/2$k=0..12]):

> display(g1,SC); [Hình 12.13 (a)]

Hình 12.13: Sự hội tụ của°k

n=1[1

ncos(x)n cos(nx)]

Quan sát [Hình 12.13 (a)] thì thấy "có vấn đề". Ở k = 12 rõ ràng Sk không hội tụ về S. Lýdo là khi lấy phần thực của un(x), chúng ta đã làm ℜ(eInx)ℜ(eIx). Nhưng:

ℜ(un) = ℜ(eInx eIx ℜ(eInx)ℜ(eIx)

Bây giờ ta dùng hàm mũ để thay thế cho cos(nx), còn cos(x)n để nguyên:> sum(1/n*exp(I*n*x)*cos(x)ˆn,n=1..infinity);

ln(1 xIx cos(x))

Lấy phần thực và thu gọn kết quả:> evalc(Re(%)): %=combine(%,trig);

Phạm Minh Hoàng 247

Page 264: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

ln(a

(1 + (cos(x))2)2 + (sin(x))2(cos(x))2)) = ln(12

a2 2 cos(2x))

> algsubs(cos(2*x)=1-2*sin(x)ˆ2,rhs(%)):

%=simplify(%,radical,symbolic);

ln(12

?4asin(x)2) = ln(sin(x))

Để tạo hình động ta làm giống như [Hình 12.13 (b)] là hình tĩnh tương đương:> g2:=seq(plot([-ln(sin(x)),Sk(i)],x=0..Pi-.01,view=[0..3,0..2],

thickness=[3,1]),i=[k/2$k=0..12]):

> display(g2,IT,SC);

12.5 Đường lập lên bởi hình động

Nếu trong phần (12.4) một phần tử chuyển động với một hình tĩnh, thì hình tĩnh này xuấthiện là bất biến trong suốt chuyển động. Bây giờ chúng ta muốn phần tử này khi di chuyển đếnđâu sẽ "vẽ" ra con đường nó đi đến đó. Nhưng ý tưởng "đi đến đâu vẽ đến đấy" trái ngược vớinhững gì ta thấy trong suốt phần xử lý hình động vừa qua. Vì nguyên tắc làm hình động là liêntục hiển thị các hình tĩnh, và hình sau khi xuất hiện chỉ khi hình trước biến mất. Vậy thì làm thếnào sau khi đi quay lại có thể đểlại đoạn đường vừa đi?

Ý tưởng xem ra mâu thuẫn và phức tạp nhưng thực sự đơn giản hơn chúng ta nghĩ. Nếunguyên tắc hình động là hình sau "đè" lên hình trước thì ta phải làm sao cho hình thứ n giống ynhư hình thứ (n 1) nhưng chỉ khác nhau một chi tiết, và hình thứ (n + 1) chỉ khác một chi tiếtnhỏ so với hình thứ n, và cứ tiếp tục như thế. Chúng ta bắt đầu bằng một thí dụ đơn giản.

Viên bi lăn theo đường thẳng

Giả sử chúng ta có một ciên bi lăn theo đường thẳng f(x) = x.Khai báo chuyển động này cũng giống như mục (12.3.3), nhưng đơn giản hơn nhiều vì đây

là đường thẳng:> s:=i¡display(seq(disk([t/10,t/10],.05),t=0..i),IT,SC):

Ở đây ta chia cho 10 để giảm vận tốc 10 lần. Riêng về quỹ đạo của viên bi ta dùng hàmplot. Ta sẽ vẽ sao cho hình sau chỉ khác hình trước một chi tiết:

- Lần thứ nhất đi từ 0 đến hoành độ 110(vì giảm vận tốc 10 lần)

- Lần thứ hai đi từ 0 đến hoành độ 210, với IT[5] đồ thì này sẽ "chồng lên" đồ thị thứ nhất và

dài hơn một đoạn làm cho ta cảm thấy đường thẳng "dài" ra- Lần thứ ba đi từ 0 đến hoành độ 3

10, và dài hơn lần thứ hai một quãng

- Lần thứ i đi đến hoành độ i10.

Có nghĩa là ta phải tạo một dãy các đồ thị mà mỗi hình vẽ đi từ 0 đến t10, và t sẽ đi từ 0 đến

i là hoành độ xa nhất mà chúng ta muốn đến.> p:=i¡display(seq(plot(x,x=0..t/10),t=0..i),IT): (12.5.1)

Để tạo chuyển động của riêng viên bi và của đường thẳng - giả sử từ hoành độ 0 đến 3:> s(30); p(30);

5insequence=true

248 Phạm Minh Hoàng

Page 265: Maple Va Cac Bai Toan Ung Dung

12.5. Đường lập lên bởi hình động

..0

.2

.4

.2 .x .4.

.0

.2

.4

.2 .x .4

..0

.2

.4

.2 .x .4.

.0

.2

.4

.2 .x .4

Hình 12.14: Chuyển động thẳng của viên bi

Khi gom hai chuyển động sẽ thấy viên bi vừa chạy vừa vạch ra đường của nó:> display(p(30),s(30));

Quan sát trên màn hình thì thấy có một vấn đề nhỏ: khi viên bi chạy một mình thì trònnhưng khi vạch ra đoạn thẳng thì nó bị khuyết mất một nửa, trông rất khó chịu. Lý do là vìkhi gom hai chuyển động (một được tạo bởi disk, một bởi plot), thì trong plot có khai báokhoảng hiển thị (x = 0.. t

10) nên Maple sẽ dành "ưu tiên" cho khoảng này. Phiền một nỗi khi vẽ

từ 0 đến t10thì cũng mới hiển thị được nửa viên bi bên trái (vì tâm viên bi ở t

10), còn bên phải

thì.. mất tiêu.Để giải quyết, chúng ta phải "lừa" Maple bằng cách khai báo một chuyển động plot dài

hơn hàm p(i) ở trên một tý, và khi cho chạy thì ta sẽ "giấu" nó đi:> q:=i¡display(seq(plot(-1,x=0..t/9),t=0..i),IT,SC):

Hàm q(i) vẽ đường thẳng y = 1, nhưng với độ chia cho 9 thay vì chia cho 10 như s(i) vàp(i) vì thế q(i) sẽ luôn luôn dài hơn p(i) một đoạn ngắn. Và khi i = 30, q(30) = 30

9= 3.33.

Nhưng khi display, ta giới hạn tầm hiển thị nên mọi việc xảy ra giống như không có hàm q(i).> display(p(30),s(30),q(30),view=[0..3,0..3]);

Một điều khác cần lưu ý ở đây: hàm s(i) của chúng ta đã được khai báo với display(s(30));ta sẽ có trên màn Hình 31 hình tĩnh của viên bi.

Phạm Minh Hoàng 249

Page 266: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Và chúng ta cũng sẽ sai lầm nếu thêm IT:> display(s(30),IT);

Plotting error, ANIMATE must contain lists of objects

Viên bi lăn theo một đường bất kỳ

Bây giờ cũng viên bi này nhưng ta cho lăn và vẽ theo hàm f(x) = sinx

x

> f:=x¡abs(sin(x)/(x));

Đi theo hàm f(x) ta sẽ có một chuyển động "tương ứng" khá vui mắt. Để có được 3 đồ thị[Hình 12.15] ta chỉ lấy x ¡ 3π, và ta có thể dùng mệnh đề hoặc hàm để vẽ hình này.

Hình 12.15: Đồ thị của hàm (a),sinx

x, (b)f(x) và (c)f(

x

3) nhân lên 30 lần

> plot(20*sin(x)/(x),x=3*Pi..8*Pi); [Hình 12.15 (a)]> plot(30*f,3*Pi..4*Pi); [Hình 12.15 (b)]> plot(30*f(x/3),x=3*Pi..9*Pi); [Hình 12.15 (c)]

250 Phạm Minh Hoàng

Page 267: Maple Va Cac Bai Toan Ung Dung

12.5. Đường lập lên bởi hình động

Cách khai báo thì cũng tương tự như thí dụ trên. Trước tiên là viên bi. Ở lệnh sau, vận tốcđược giữ nguyên bình thường và giữ hình tĩnh (không có IT):

> s:=i¡display(seq(disk([t,30*f(t)],.4),t=evalf(3*Pi)..i),SC):> s(evalf(4*Pi));

Hình 12.16: Chuyển động của viên bi (a) trước và (b) sau khi chỉnh vận tốc

Quan sát [Hình 12.16 (a)], t thay đổi từ 3π đến 4π hay t = 9, 10, 11, 12. Ta thấy rõ ràng làkhông thể giữ vận tốc này, phải chia nhỏ ra. Một lưu ý: khi dùng seq thì các chỉ số (ở đây là t)có thể là một phân số. Nhưng khi dùng với π thì phải dùng evalf để lấy giá trị bằng số. Bâygiờ ta giảm vận tốc 3 lần. Nếu chia t cho 3 thì ta phải nhân giá trị tận cùng của t với 3:

> s:=i¡display(seq(disk([t/3,30*f(t/3)],.4,CW),t=evalf(3*Pi)..3*i),SC):

> s(evalf(4*Pi));

Quan sát [Hình 12.16 (b)] thì ta thấy khoảng cách giữa các viên bi còn quá lớn. Bây giờ tachia nhỏ hơn 5 lần và khai báo với IT.

> s:=i¡display(seq(disk([t/5,30*f(t/5)],.4,CW),t=evalf(3*Pi)..5*i),IT,SC):

Bước sang phần khai báo quỹ đạo ta cũng làm giống (12.3): chia khoảng cách thể hiện ra 5

lần (x =3π

5..

t

5) và nhân giá trị tận cùng của t với 5:

> p:=i¡display(seq(plot(30*f(x),x=evalf(3*Pi/5)..t/5),t=evalf(3*Pi)..5*i),IT,SC):

Và chuyển động của viên bi cùng con đường - từ 3π đến 6π là:> display(s(evalf(6*Pi)), p(evalf(6*Pi)));

Ở đây viên bi cũng bị mất một nửa, và chúng ta cũng tiếp tục làm như trên:> q:=i¡display(seq(plot(-2,x=evalf(3*Pi/5)..t/4),

t=evalf(3*Pi)..4*i),IT):> display(s(evalf(6*Pi)), p(evalf(6*Pi)),q(evalf(7*Pi)),

view=[evalf(3*Pi/5)..18,0..14]);

Phạm Minh Hoàng 251

Page 268: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Cycloid

Trong phần (12.2.1) chúng ta thấy cách tạo hình động của một van gắn trên một vành xelăn không trượt trên đường thẳng. Bây giờ, trong phần này, ta sẽ tạo quỹ đạo của nó.

Để vẽ quỹ đạo ta phải đi từ tọa độ vủa van xe. Ở mục (12.2.1) ta đã có tọa độ này là:"rt r sin tr r cos t

Hình 12.17:

Trước tiên ta vẽ hình tĩnh của chuyển động. [Hình 12.17] được tạo bởi 3 hình: g1 và g2 làviên bi ở thời điển t = 2π và t = 10(2π 10 4π), hình g3 là quỹ đạo được vẽ từ 0 đến 10 (ởđây chọn r = 4):

> g1:=disk([r*2*Pi-r*sin(2*Pi),r-r*cos(2*Pi),.05],CW):[6]> g2:=disk([r*10-r*sin(10),r-r*cos(10),.05],CW):

> g3:=plot([r*t-r*sin(t),r-r*cos(t),t=0..10],SC):6Nhắc lại các chữ viết tắt: SC=scaling=constrained, IT=insequence=true, CW=color=wheat

252 Phạm Minh Hoàng

Page 269: Maple Va Cac Bai Toan Ung Dung

12.5. Đường lập lên bởi hình động

> display(g1,g2,g3);

Để tạo hình động cho van và vành bánh xe, ta làm giống như mục 12.2.1:> cr:=t¡circle([t,r],r):> q:=k¡display(seq(cr(i),i=0..k),IT,SC):> s:=i¡display(seq(disk([r*t/r-r*sin(t/r),

r-r*cos(t/r),.05],CW),t=0..i),IT):

Riêng quỹ đạo ta khia báo một dãy đồ thị, môic đồ thị được vẽ từ phương trình thông số vàđi từ gốc tọa độ đến một điểm mà ta khai báo là biến. Bởi vì tốc độ viên bi giảm đi r lần ( t

r, theo

biểu thức trên), nên ta cũng phải chia các biến là r lần và nhân giá trị sau cùng với r:> p:=k¡display(seq(plot([r*t-r*sin(t),

r-r*cos(t),t=0..(i+0.1)/r],SC,color=red),i=0..k*r),IT):

Trong lệnh trên ta bắt buộc công i với 0.1 vì Maple không chấp nhận vẽ đồ thị (plot) trênkhoảng không (t = 0..0 khi k = 0)

Và sau cùng để có hình động ta phải xác định quảng đường đi. Trong [Hình 12.17] ta thấyviên bi có chu kỳ 2π, vậy muốn lăn 3 vòng ta phải cho trị tối đa là 3 2π ≈ 19:

> display(p(19),q(r*19),s(19*r));

Quỹ đạo của van xe trong trường hợp này gọi là đường cycloid.

Điểm động học

Cho một chuyển động trong mặt phẳng. Hãy tạo hình tĩnh và động của chuyển động cùngvới các vector vận tốc và gia tốc của một điểm trên quỹ đạo đó.

a) Chuyển động cycloid

Để có sự liên tục, ta dùng lại ngay kết quả phần cycloid vừa tính xong.Phương trình của một điểm trên cycloid là: [rt r sin t, r r cos t]. Ta khai báo các vector

vận tốc và gia tốc bằng cách lấy đạo hàm (toán tử D) của vector vị trí, và vector vị trí được khaibáo băng một vector hàm:

> OM:=vector([t¡r*t-r*sin(t),t¡r-r*cos(t)]):> vt:=map(D,OM); gt:=map(D,vt);$&% OM := [t ÞÑ rt r sin(t), t ÞÑ r r cos(t)]

vt := [t ÞÑ r r cos(t), t ÞÑ sin(t)]gt := [t ÞÑ r sin(t), t ÞÑ r cos(t)]

Tiếp theo, ta dùng hàm arrow để khai báo các mũi tên biểu tượng cho các vector vận tốcvà gia tốc và vẽ bánh xe. Để vẽ quỹ đạo cycloid cách ngắn gọn nhất là dùng đường cong thamsố:

> pvt:=t¡arrow(OM(t),(vt(t)),.05,.1,.1,color=black):> pgt:=t¡arrow(OM(t),(gt(t)),.05,.1,.1,color=white):

Để vẽ vòng tròn và quỹ đạo của chuyển động, ta làm thư mục 12.5.3:> cr:=t¡circle([t,1],1):> qd:=i¡plot([OM(t)[1],OM(t)[2],t=0..i],color=red,SC):

Gom các lệnh trên vào một rồi xác định giá trị r trước khi vẽ hình tĩnh:> sys:=i¡(pvt(i),pgt(i),cr(i),qd(i),SC):

Phạm Minh Hoàng 253

Page 270: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

> r:=1:display(sys(1.2),sys(3),sys(4.3));

Hình 12.18:

Quan sát [Hình 12.18] ta thấy vận tốc luôn luôn tiếp tuyến với đường cycloid và gia tốcluôn luôn hướng về tâm bánh xe. Mặt khác độ lớn của vận toóc cũng được thể hiện qua các độdài của vector này trong khi di chuyển trên quỹ đạo.

Tạo hình động: với độ giảm tốc bằng 5 và chuyển động 2 chu kỳ (2 2π 5):> display(seq(display(sys(i/5)),i=1..evalf(4*Pi)*5),IT,SC);

b) Chuyển động bất kỳ - Lập trình

Bây giờ chúng ta sẽ tạo chuyển động với một quỹ đạo bất kỳ, và cách duy nhấtlà lập trình.Nếu đã hiểu cách khai báo ở phần a), thì trong phần này ta chẳng cần phải làm gì hết. Chỉ cầnghép các lệnh trên vào là đủ:

Chương trình cine nhận 3 tham số (OM vector-hàm, n: độ dài của đường muốn vẽ, s = 1:hình động, s 1: hình tĩnh. Mặc định lấy s = 1)

254 Phạm Minh Hoàng

Page 271: Maple Va Cac Bai Toan Ung Dung

12.5. Đường lập lên bởi hình động

∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼∼

cine:=proc(OM,n,s)local i,p,vt,gt,pvt,pgt,movie,sys,u: u:=NULL:if nargs=3 then u:IT: fi:p:=i¡plot([OM(t)[1],OM(t)[2],t=0..i,SC):vt:=map(D,OM): gt:=map(D,vt):pvt:=t¡arrow(OM(t),(vt(t)),.05,.1,.1,color=wheat):pgt:=t¡arrow(OM(t),(gt(t)),.05,.1,.1):sys:=t¡display(p(t),pvt(t),pgt(t)):movie:=NULL:for i from 0 to n do movie:=movie, sys(i/5):od:display([movie],SC,u):end:

Bảng 12.1: Chương trình cine

Thí dụ 1: để tạo hình tĩnh và hình động của hình cardiod [Hình 12.19 (a)]:> OM:=vector([t¡(1+cos(t/2))*cos(t/2),

t¡(1+cos(t/2))*sin(t/2)]);OM := [t ÞÑ (1 + cos( t

2)) cos( t2 , t ÞÑ (1 + cos( t

2)) sin( t2 ]

> cine(OM,evalf(20*Pi)); cine(OM,evalf(20*Pi),1); [7]

Thí dụ 2: để tạo hình tĩnh của hình "ốc sên" [Hình 12.19 (b)]:> OM:=vector([t¡t*sin(t/2)/6,t¡t*cos(t/2)/6]);

OM := vector([t ÞÑ t6 sin(

t2), t ÞÑ t

6 cos(t2)])

> cine(OM,77); [8]

7Đây là một đường cong kín nên ta có thể dùng nút "auto-replay" để cho chạy không ngừng.8Ở đây bán kính vector r = 1, khi r ¡ 1 vận tố của hai vector vận tố và gia tốc phải được điều chỉnh.

Phạm Minh Hoàng 255

Page 272: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

Hình 12.19: Biểu diễn của vận tốc và gia tốc ở hình (a) cardiod và (b) hình ốc sên

12.6 Bài đọc thêm

Dưới đây là bảng tóm tắt các phát minh, các công trình nghiên cứu cũng như những thờiđiểm quan trọng của Toán học từ năm 2000 trước Công Nguyên đến nay. Bảng này được tríchra từ địa chỉ Internet:

http://www-groups.dsc.st-and.ac.uk/∼history/Chronology/full.htmlTrong đó chúng tôi chỉ giữ lại những chi tiết gần gũi với bạn đọc Việt Nam. Một và lưu ý: Dấu ∼ dùng khi không rõ chính xác thời điểm Tên của các khoa học gia cũng như công trình được phiên dịch sang tiếng Pháp hoặc

tiếng Anh để gần gũi với người đọc.

4000 năm lịch sử Toán học

-1950 (∼) Dân thành Babylone phát minh bản tính nhân.

Hình 12.20: Babylone

256 Phạm Minh Hoàng

Page 273: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

-530 Pythagore và định lý nổi tiếng mang tên ông.

Hình 12.21: Pythagore

-575 Thales biết cách tính chiều cao kim tự tháp với định lý mangtên mình.

Hình 12.22: Thales

-440 (∼) Hippocrates viết cuốnElements, được xem như sách hìnhhọc đầu tiên của nhân loại.

Hình 12.23: Hippocrates

-300 (∼) Euclide hệ thống hóa các khái niệm về Hình học trongElements.

Hình 12.24: Euclide

Phạm Minh Hoàng 257

Page 274: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

-290 (∼) Aristote dùng Hình học để tính khoảng cách từ MặtTrăng đến Mặt Trời. Ông là người đầu tiên cho

Hình 12.25: Aristote

-250 (∼) Archimede khám phá ra nguyên lý Thủy tĩnh, tính xấpxỉ số π, tính thể tích hình cầu và hình trụ.

Hình 12.26: Archimede

-235 (∼) Eratosthene tính được chu vi Trái Đất chỉ bằng phươngpháp Hình học và thuật toán tìm số nguyên tố.

Hình 12.27: Eratosthene

-225 (∼) Apollonius viết Conics trong đó lần đầu tiên xuất hiệncác từ "parabola", "ellipse", "hyperbola".

Hình 12.28: Apollonius

258 Phạm Minh Hoàng

Page 275: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

150 (∼) Ptoleme đưa ra thuyêtd chuyển động địa tâm (Trái Đấtlà trung tâm Thái Dương hệ), thuyết này đã là một chân lý trongsuốt hơn ngàn năm.

Hình 12.29: Ptoleme

250 (∼) Liu Hui (Trung Quốc) biết dùng phân số hữu tỷ. Sau đóông đã xấp xỉ được số π với 5 số lẻ bằng các đa thức đều.

Hình 12.30: Liu Hui

250 Diophante viết Arithmetica, một nghiên cứu về lý thuyết Số.

Hình 12.31: Diophante

594 Hệ thập phân được dùng tại Ấn Độ. Đây là cơ số gần gũi vớicách dùng của chúng ta ngày hôm nay.

Hình 12.32: HệThập Phân

Phạm Minh Hoàng 259

Page 276: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

810 (∼) Al-Khwarizmi viết nhiều nghiên cứu về Số học, Đại số,Địa, và Thiên văn. Ông là người lần đầu tiên đã sử dụng từ al-fabrđược phiên âm thành Algebra (Đại số). Chính tên của ông cũnglà nguồn gốc của từ algorith (thuật toán).

Hình 12.33: Abu-bin-Musa-al-Khwarizmi

1150 Số Ả-Rập (số mà chúng ta dùng ngày hôm nay) được thuthập vào Âu Châu bởi Fibonacci. Ông là người Âu Châu đầu tiêncó những nghiên cứu sâu về Số học kể từ thời Diophant. Ngoài raFibonacci cũng công bố dãy số mang tên ông.

Hình 12.34: Fibonacci

1247 Qin Jinshao và định lý Trung Quốc về phần dư (Chnese Re-mainder Theorem).

Hình 12.35: QinJinshao

260 Phạm Minh Hoàng

Page 277: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1382 Nicolas d'Oresme viết cuốn Le Livre du ciel et du monde(The book of Heaven and Earth) với những chủ đề về Toán, Cơcũng như những khái niệm về Thiên văn.

Hình 12.36: Nicolas

1543 Copernic đưa ra một lý thuyết về Thái Dương hệ: đó là mộthệ nhật tâm (Mặt Trời là tâm) chứ không phải địa tâm (Trái Đấtlà tâm).

Hình 12.37: Copernic

1591 Viète viết Art analytique, là người đầu tiên dùng các ký tựđể biểu diễn cho các đại lượng (từ trước tới giờ chỉ dùng số).

Hình 12.38: Viète

1609 Kepler công bố các định luật về quỹ đạo ellipse của các thiênthể trong vũ trụ.

Hình 12.39: Kepler

Phạm Minh Hoàng 261

Page 278: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1614 Neper công bố các nghiên cứu về logarithme.

Hình 12.40: Neper

1635 Cavalieri công bố các nghiên cứu về lý thuyết cực nhỏ in-finitesimal.

Hình 12.41: Cavalieri

1637 Descartes viết La Géométrie nói về các ứng dụng Đại số vàoHình học.

Hình 12.42: Descartes

1639 Desargues bắt đầu những nghiên cứu về Hình học quy chiếuprojective geometry.

Hình 12.43: Desargues

262 Phạm Minh Hoàng

Page 279: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1642 Pascal chế tạo thành công một máy tính. Máy chỉ biết làmtính cộng.

Hình 12.44: Pascal

1647 Fermat đưa ra khái niệm mà sau đó người ta gọi là Định lýFermat lớn (phương trình xn + ynzn vo nghiệm khi n ¡ 2).

Hình 12.45: Fermat

1673 Huygens công bố ngững khám phá về đường cycloid.

Hình 12.46: Huygens

1675 Leibniz lần đầu tiên sử dụng ký hiệu tích phân và sau đókhám phá ra vi phân của các hàm cơ bản.

Hình 12.47: Leibniz

Phạm Minh Hoàng 263

Page 280: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1683 Seki Kowa công bố các nghiên cứu về định thức.

Hình 12.48: SekiKowa

1687Newton viếtMathematical Principles of Natural Philosophyđược cộng đồng khoa học công nhận là cuốn sách khoa học giá trịnhất từ trước tới giờ. Newton công bố các công trình về chuyểnđộng, trọng trường và cơ học. Lý thuyết của ông giải thích chocác hiện tượng trong vũ trụ còn trong vòng uẩn khúc.

Hình 12.49: IsaacNewton

1690 Jacques Bernoulli lần đầu tiên dùng từ tích phân (integral)và chứng tỏ ý nghĩa hình học của tích phân. Một năm sau ôngphát minh ra tọa độ cực, một cách mới để biểu diễn một điểmtrong không gian. Đến năm 1718 (sau khi ông mất) người ta côngbố nghiên cứu của ông về phép biến phân (calculus of variations).

Hình 12.50: JacquesBernoulli

264 Phạm Minh Hoàng

Page 281: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1690 Rolle công bố các lý thuyết sau đó trở nên Định lý Rolle.

Hình 12.51: Rolle

1694 Jean Bernoulli và quy tắc "L'Hôpital". Sau đó ông đặt ra bàitoán brachis-tochrone: đi tìm con đường nhanh nhất trong mặtphẳng dưới ảnh hưởng trọng trường.

Hình 12.52: JeanBernoulli

1707 De Moivre dùng lượng giác đêt biểu diễn số phức (ez =cos z + i sin z).

Hình 12.53: DeMoivre

1724 JacapoRiccati nghiên cứu vềmột dạng phương trình vi phân.

Hình 12.54: JacapoRiccati

Phạm Minh Hoàng 265

Page 282: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1727 Euler lần đầu tiên dùng ký tự e cho cơ số logarith và giải bàitoán về Lý thuyết đồ thị: Những cây cầu Kronigsberg. Sau đó đãviết Mechanica được xem như cuốn sách đầu tiên dùng phươngtrình vi phân để giải các bài toán Cơ. Công trình của ông thật đồsộ và liên quan đến nhiều lãnh vực của Toán học và Cơ học.

Hình 12.55: Euler

1737 Simpson dùng chuỗi để tìm một tích phân xác định.

Hình 12.56: Simpson

1743 D'Alembert công bố các công trình về số phức cũng như sửdụng phương trình vi phân đạo hàm riêng để nghiên cứu về gió.Trước đó ông đã công bố nhiều nghiên cứu về dộng học trongTraité de dynamique (Treatise on Dynamics).

Hình 12.57: D'Alembert

1754 Lagrange thực hiện nhiều phép toán quan trọng về phép tínhbiến phân. Công trình của Lagrange cũng nhiều vô kể: nó liênquan đến Đại số (Giải phương trình có bậc > 4 Số học (Lý thuyếtnhóm), Thiên văn (sự hỗn độn của các qũy đạo sao chổi), Giải tích(hàm ellipse, nguyên hàm elliptic), Cơ học (với cuốn Mécaniqueanalytique) trong đó ông biến cơ học thành một ngành của giảitích).

Hình 12.58: Lagrange

266 Phạm Minh Hoàng

Page 283: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1763 Monge bắt đầu đưa ra các khái niệm về Hình học giải tích.

Hình 12.59: Monge

1784 Legendre công bố một đa thức mang tên ông và các côngtrình về Thiên văn.

Hình 12.60: Legendre

1799 Gauss chứng minh định lý cơ bản của Đại số đã đượcD'Alembert nêu lên vào năm 1746. Sau đó ông cũng đã đi tiênphong trong ngành Hình học vi phân.

Hình 12.61: Gauss

1807 Fourier biểu diễn một hàm số liên tục bằng một chuỗi cáchàm lượng giác.

Hình 12.62: Fourier

Phạm Minh Hoàng 267

Page 284: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1811 Poisson viết Traité demécanique trong đó có nhiều ứng dụngtoán cho điện, từ, điện từ và cơ học. Đến năm 1830, ông đưa rahệ Poisson dùng trong cơ học.

Hình 12.63: Poisson

1812 Laplace công bố các công trình về xác suất trong Théorie An-alytique des probabbilités. Ngoài ra ông còn nghiên cứu phươngtrình vi phân và Thiên văn học.

Hình 12.64: Laplace

1817 Bolzano và lý thuyết cực nhỏ trong đó có sự cộng tác củaWierstrass.

Hình 12.65: Bolzano

1821 Navier và phương trình Navier-Stokes giải quyết bài toánchất lỏng không nén.

Hình 12.66: Navier

268 Phạm Minh Hoàng

Page 285: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1828 Green và định lý về diện tích và thể tích mang tên ông.

Hình 12.67: Green

1829 Galois công bố các công trình về Đại số trước Hàn LâmViện Khoa Họa Pháp. Ông chẳng may mất sớm trong một cuộcđọ súng.

Hình 12.68: Galois

1829 Lobachevsky khai triển khái niệm Hình học phi-Euclide

Hình 12.69: Lobachevsky

1831 Cauchy và chuỗi số nguyên cùng với hàm phức. Năm 1845,ông công bố Định lý cơ bản về Lý thuyết nhóm.

Hình 12.70: Cauchy

Phạm Minh Hoàng 269

Page 286: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1837 Dirichlet đưa ra một khái niệm tổng quát về hàm số.

Hình 12.71: Dirichlet

1841 Jacobi và hàm Jacobian.

Hình 12.72: Jacobi

1845 Cayley công bố Theory of Linear Transformations hệphương trình tuyến tính.

Hình 12.73: Cayley

1847 Boole công bố những khái niệm về lo-gích.

Hình 12.74: Boole

270 Phạm Minh Hoàng

Page 287: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1850 Chebyshev đưa ra các kết quả về số nguyên tố.

Hình 12.75: Chebyshev

1850 Sylvester là người đầu tiên dùng từ ma trận (matrix).

Hình 12.76: Sylvester

1881 Venn đưa ra giản đồ Venn dùng trong lý thuyết tập hợp.

Hình 12.77: Venn

1883 Poincaré và lý thuyết hàm phức nhiều biến.

Hình 12.78: Poincaré

Phạm Minh Hoàng 271

Page 288: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1887 Frobenius và biểu diễn của lý thuyết nhóm.

Hình 12.79: Frobenius

1899 Lyapunov và sự ổn định của phương trình vi phân.

Hình 12.80: Lyapunov

1901 Runge và Kutta tìm ra phương pháp sốdùng để giải các phương trình vi phân.

Hình 12.81: RungeKutta

1909 Carmichael và số giả nguyên tố.

Hình 12.82: Carmichael

272 Phạm Minh Hoàng

Page 289: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1921 Borel công bố lần đầu tiên về Lý thuyết trò chơi (game the-ory).

Hình 12.83: Borel

1922 Richardson lần đầu tiên sử dụng phương pháp sai phân hữuhạn (finite differences mathod) để dự báo thời tiết.

Hình 12.84: Richardson

1936 Turing phát minh Turing machine. Đây là những khái niệmđầu tiên dành cho khoa học máy tính.

Hình 12.85: Turing

1847 George Dantzig đưa ra phương pháp simplex giải các bàitoán tối ưu tuyến tính.

Hình 12.86: GeorgeDantzig

Phạm Minh Hoàng 273

Page 290: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

1948 Shannon trình bày các phát minh về Lý thuyết dữ kiện (in-formation theory) và những ứng dụng Toán vào việc chuyển tảidữ kiện.

Hình 12.87: Shannon

1948 Schwartz công bố những công trình về Lý thuyết phân bố(theory of distributions).

Hình 12.88: Schwartz

1959 Hall công bố định lý quan trọng về Lý thuyết nhóm.

Hình 12.89: Hall

1961 Edward Lorenz khám phá ra định luật ứng xử của các hệ hỗnđộn (chaotic behaviour). Ông được xem như người đi tiên phongtrong lĩnh vực này.

Hình 12.90: EdwardLorenz

274 Phạm Minh Hoàng

Page 291: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

1965 Tukey andCooley công bố công trình vềFast Fourier Trans-form có ứng dụng rộng rãi trong các ngành Điện, Tin học và Cơhọc.

Hình 12.91: Tukey

1975Mandelbrot và Feigenbaum công bố các kết quả về Lý thuyếtHỗn độn và Lý thuyết Fractal.

Hình 12.92: Mandelbrot

1977 Adleman, Rivest, and Shamir công bố một ứng dụng của sốhọc: Mã RSA dùng để mã hóa thông tin một các hiệu quả.

Hình 12.93: Adleman,Rivest, and Shamir

1997Wiles thành công trong việc chứng minh định lý Fermat lớn.

Hình 12.94: Wiles

Những khám phá...tình cờ

Nếu khám phá của Archimede đến từ một sự tình cờ (đi tắm, mà phải tắm bằng bồn kia), thì đâykhông phải là một thí dụ hy hữu. Trong suốt quá trình tiến hóa của nhân loại, tình cờ đã đem lại

Phạm Minh Hoàng 275

Page 292: Maple Va Cac Bai Toan Ung Dung

Chương 12. Xử lý hình động

cho chúng ta những phát minh, những khám phá cực kỳ vĩ đại:

Trước tiên phải nói đến Newton và quả táo lịch sử năm 1666. Giả sử hôm ấy Newtonkhông đọc sách dưới gốc táo (mà dưới gốc liễu hay gốc sầu riêng),thì chẳng biết đến baogiờ con người mới tìm ra định luật vạn vật hấp dẫn và khoa học có lẽ sẽ không phát triểnnhư ngày nay [9].

Một trong những khám phá vĩ đại khác là điện. Và chúng ta không thể nào quên BenjaminFranklin và con diều giấy của ông ta. Vào một đêm mưa bão tháng 7/1752, ông đã bị sétđánh tái tê (nếu không muốn nói là suýt chết) trước khi đi vào lịch sử của khoa học.

Alexander Fleming, vị cứu tinh của hàng triệu con người với phát minh về thuốc khángsinh (pénicilline). Ông ăn ở bẩn thỉu, cẩu thả, ăn đâu liệng đấy khiến thức ăn mọc nấmnhưng cũng từ đó đã tìm ra bài thuốc quí báu này (1927).

Cũng trong lãnh vực y khoa, và cũng thói quen vô trật tự của các nhà bác học WilhelmRoengen đã vô tình nhận thấy tấm hình phát quang bàn tay của vợ mình và từ đó tìm ratia X (1895).

Một hình thức khác của sự tình cờ: nhà toán học nổi tiếng Poisson của Pháp hồi còn trẻđược gia đình hướng dẫn theo học Y khoa. Một hôm vì đãng trí Poisson vào nhầm giảngđường, khi ôn muốn quay ra thì thầy không cho phép, ông đành ngồi lại và nghe giảng.Thế rồi cuộc đời của cậu bé Poisson đã thay đổi từ buổi học ấy, cậu ta bỏ hẳn ngành y đểsay mê toán và sau này đã để lại cho nhân loại nhiều phát minh giá trị. Đó cũng là trườnghợp của anh em nhà Bernoulli, của Leibniz, Fermat...

9Theo nhiều tài liệu thì đây là hư cấu...80%. Lúc ấy Newton đang ở trong nhà và nhìn thấy táo rơi ngoài vườn

276 Phạm Minh Hoàng

Page 293: Maple Va Cac Bai Toan Ung Dung

12.6. Bài đọc thêm

Bảng 12.2: Lịch sử các ký hiệu Toán họcKý hiệu Thí dụ Tác giả Năm()phân số

2

3N. Oresme 1320-1382

lũy thừa 24, 32 N. Chuquet thế kỷ XVcộng, trừ +, Stifel 1544bằng a = b R. Recorde 1510-1558căn

?2 C. Rudoft 1525

vô cực¤,¥

8a ¤ b

J. Wallis 1616-1703

nhâncộng trừ

a b10 0.1

W. Oughtred 1631

nhân, chianguyên hàmvi phân, đạo hàm

a b, a : b»dx, f 1(x)

G.W. Leibniz 1646-1716

,¡ a ¡ b T. Harriot 1631Số π W. Jones 1706

cơ số ekhácsố phứctổng

ex

a ba + ib° L. Euler 1707-1783

phần nguyên E(x) A.M. Legendre 1752-1833

đạo hàm riêngBfBx Condorcet 1770

giai thừa n! C. Kramp 1808ký hiệu tập hợp X,Y,@, D, PTập số tự nhiên N , hữu tỷ Q G. Peano 1831-1916

Tập các số thực R Dedekind 1858-1932xấp xỉ a b Steinhausser 1875véc-tơ ÝÝÑ

PQ (?) 1930tương đương a ô b W. Ackerman 1936

Tập các số phức C Jacobson 1939()Trong bảng trên nếu không rõ năm phát minh thì là giai đoạn sống của tác giả.

Phạm Minh Hoàng 277

Page 294: Maple Va Cac Bai Toan Ung Dung

Tài liệu tham khảo

[1] JEAN MICHEL CORNIL, PHILIPPE TESTUD.MAPLE, Introduction ráionnée à l'usage de l'étudiant, de l'ingénieur et du chercheur.Edition Springer Verlag, Berlin Heidenberg 1977

[2] EUGENE W.JOHNSON - Linear Algebra with Maple VUniversity of Iowa, USA

[3] JOHN DEWITT - Calculus with Maple VUniversity of Saskatchewan, CAN.

[4] ANDRE HECK - Introduction to MapleEdition Springer Verlag, Berlin Heidenberg 1977

[5] WALTER GANDER, JIRI HREBICEKSolving problems in Scientific ComputingEdition Springer Verlag, Berlin Heidenberg 1977

[6] WILLIAM A.GRANVILLE. PERCEY F .SMITH, WILLIAM R.LONGLEYElements of the Differential and Integral CalculusGinn and Company - Yale University, USA

[7] CLAUDE GOMEZ, BRUNO SALVI, PIERRE ZIMMERMANNCalcul Formel: Mode d'emploi - Edition Masson, Paris 1995

[8] ALBERT.LEVINE - Introduction à Maple - Edition Elipses, Paris 1998

[9] prolèmes de mathématiques résolus avec Maple et MathematicaEdition Ellipses, Paris 1988

[10] VINCENT BOURGES - Physique avec Maple - Edition Ellipses, Paris 1998

[11] JANE MARC FERRAND - Maths et Maple - Edition Dunod, Paris 1998

[12] J.D.ANDERSON - Fundamentals of AerodynamicsUniversity of Maryland, Edition Mc Graw-Hill.

[13] PHILIPPE DUMAS, XAVIER GOURDONMaple, Son bon usage en mathématiquesEdition Springer Verlag, Berlin Heidenberg 1997

[14] JULLIEN BOK, PIERRE MOREL - Cours de Physique - Mécanique des OndesCollection Methodes - Hermann, Paris

Page 295: Maple Va Cac Bai Toan Ung Dung

Tài liệu tham khảo

[15] HSUAN YEH, JOEL I.ABRAMS -Principles of Mechanics of Solids and Fluids. Vol. 1University of Pennsylvania - Mc Graw-Hill Book Company, Inc 1960

[16] JEAN MARC MONIER - Giáo trình toán - Nhà Xuất Bản Giáo Dục

[17] HERVE LEHNING - Travaux pratuques avec Maple - Edition Pole.

[18] R.KENT NAGLE - EDWARD B.SAFFFundamentals of Differential Equation & Boundary Value ProblemsAddition Wesley Publishing Company

[19] R.MONTAGNER - Résistance des Matériaux - Edition Eyrolles 1982

[20] SEBASTIEN DESREUX Physique Terminal S - Edition Bréal 1998

[21] V.M. STARZHINSKIIApplied Method in the Theory Of The Nonlinear Oscillations - Mir Publishers

[22] MICHEL GERADINMechanical Vibration & Structure Dynamics - University of Liege

[23] D.KLETENIK - Problèmes de Géométrie Analytique(Traduit du russe par A.Karvovski) - Mir Publisher - Moscow 1969

[24] WALTER LEIGHTON - Ordinary Differential EquationsUniversity of Missouri - Wadsworth Publishing Company - California 1968

[25] KENNETH ROSEN - Discrete Mathematics ans Its ApplicationsMc Graw-Hill Edition

[26] Vũ Ngọc TướcMô hình hóa và mô phỏng bằng máy tính - Nhà Xuất Bản Giáo Dục

[27] Nguyễn Đình Trí - Toán học cao cấp, T.3 - Nhà Xuất Bản Giáo Dục

[28] Nguyễn Cang - Nguyễn Đăng PhấtGiới thiệu tóm tắt cuộc đời và sự nghiệp các nhà toán học - Nhà Xuất Bản Trẻ

[29] Phạm Huy Điển - Tính toán, lập trình và giảng dạy Toán trên MapleNhà Xuất Bản Khoa Học & Kỹ Thuật

[30] Hà Huy Khoái - Phạm Huy Điển - Số học thuật toánNhà Xuất Bản Đại Học Quốc Gia Hà Nội

Phạm Minh Hoàng 279

Page 296: Maple Va Cac Bai Toan Ung Dung

Chỉ mục

Symbols$(diff) . . . . . . . . . . . . . . . . . . . . . . . . 10, 145, 149$(seq) . . . . . . . . . . . . . . . . . . . . . . . . . 95, 119, 153EnvExplicit . . . . . . . . . . . . . . . . . . . . . . . 65, 101EnvHorizontalName . . . . . . . . . . . . . . . . 75, 85EnvVerticalName . . . . . . . . . . . . . . . . . . . 75, 85

Aalgsubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248alias . . . . . . . . . . . . . . 4, 25, 50, 85, 92, 170, 178allvalues . . . . . . . . . . . . . . . 13, 38, 83, 118, 148altitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81amortization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94arctan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86AreCollinear . . . . . . . . . . . . . . . . . . . . . . . . . . . .86AreConcurren . . . . . . . . . . . . . . . . . . . . . . . . . . 86AreHarmonic . . . . . . . . . . . . . . . . . . . . . . . . . . . 84AreOrthogonal . . . . . . . . . . . . . . . . . . . . . . . . . . 81arrow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66, 253arrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 50assume . . . . . . . . . . . . . . . . 37, 75, 116, 117, 119

positive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

@@ . . . . . . . . . . . . . . . . . . . . 10, 90, 128, 170, 178axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54boxed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59framed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Bband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18boxed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Ccenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82, 86

changevar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25charpoly . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 101chrem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214, 215circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82, 235circumcircle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87collect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

exp . . . . . . . . . . . . . . . . . . . . . . . . . . . 171, 175radical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 123coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64combine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6radical . . . . . . . . . . . . . . . . . . . . . . . 41, 42, 84symbolic . . . . . . . . . . . . . . . . . . . . . . . . 192

sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6symbolic . . . . . . . . . . . . . . . . . . . . 41, 42, 84trig . . . . . . . . . . . . . . . . . . . . . . . . . . . 146, 200

concat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19cone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42conjugate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175connect . . . . . . . . . . . . . . . . . . . . . . . . 62, 63, 101contourplot . . . . . . . . . . . . . . . . . . . . . . . . . .57, 61contourplot3d . . . . . . . . . . . . . . . . . . . . . . . . . . . 55contours . . . . . . . . . . . . . . . . . . . . . . . . . 55, 57, 64convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

+, * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215+,* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7base . . . . . . . . . . . . . . . . . . . . . . . . . . 223, 227binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7fraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . .97list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220listlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 91ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7parfrac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7PLOYGONS . . . . . . . . . . . . . . . . . . . . . . . 48trig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

coordinates. . . . . . . . . . . . . . . . . . . . . . . . . .81, 82

280

Page 297: Maple Va Cac Bai Toan Ung Dung

Chỉ mục

coords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184csgn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 37

DD . . . . . . . . . . . . . . . . . . . . . . . 16, 54, 58, 66, 145degrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153denom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37det . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221dfieldplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10diff . . . . . . . . . . 10, 34, 49, 61, 95, 96, 117, 246Digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120, 150discont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96disk . . . . . . . . . . . . . . . . 168, 169, 199, 235, 238display . . . . . . . . . . 12, 54, 63, 79, 95, 147, 232distance . . . . . . . . . . . . . . . . . . . . . . . . . 70, 84, 85dotpord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48dsegment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48dsolve . . . . . . . . . . . . 17, 95, 102, 128, 145, 149

numeric . . . . . . . . . . . . . . .17, 109, 150, 178

Eeigenvals . . . . . . . . . . . . . . . . . . . . . . . . 19, 56, 98eigenvects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Equation . . . . . . . . . . . . . . . . . . . . . . . . 75, 82, 85eval . . . . . . . . . . . 14, 18, 57, 66, 76, 91, 93, 186evalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175, 247evalf . . . . . . . . . . . . . 13, 37, 41, 44--46, 65, 118convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153evalm. . . . . . . . . . . . . . . . . . . . . . . . 18, 90, 93, 97expand . . . . . . . . . . 5, 37, 42, 44, 128, 171, 200

Ffactor . . . . . . . . . . . . . . . . . . . . 5, 42, 44, 49, 149fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242filled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64FindAngle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109, 154fsolve . . . . . . . . . . . . . . . . . . . 13, 55, 61, 72, 246

Ggcd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210genmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192global . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106, 152grad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56, 65gradplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 57

Hhas . . . . . . . . . . . . . . . . . . . . . . . . 9, 43, 50, 65, 82hessian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Iif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62igcdex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Im . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98implicitplot . . . . . . . . . . . . . . 12, 66, 73, 76, 124implicitplot3d. . . . . . . . . . . . . . . . . . . . . . . . . . .48incircle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86infinity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57, 102insequence . . . . . . . . . . . . . . . . . . 12, 63, 76, 168Int . . . . . . . . . . . . . . . . . . . . . . . 23, 117, 119, 123int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116, 118interp . . . . . . . . . . . . . . . . . . . . . . . . . 99, 100, 153intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85intparts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30Inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213inverse . . . . . . . . . . . . . . . . . . . . . . . . 29, 220, 221irem . . . . . . . . . . . . . . . . . . . . . . . . . 113, 220, 221irreduc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6is . . . . . . . . . . . . . . . . . . . . . . . 9, 35, 37, 135, 148isolate . . . . . . . . . . . . 13, 39, 116, 118, 141, 243isolve . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212, 215isprime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 209ithprime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209

Jjordan . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 29, 90

Llabeldirections . . . . . . . . . . . . . . . . . . . . . . . . . 197labels . . . . . . . . . . . . . . . . . . . . . . 48, 61, 153, 197length . . . . . . . . . . . . . . . . . . . . . . . 217, 223, 224lhs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3lightmodel . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 63Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 102limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103, 117line . . . . . . . . . . . . . . . . . . . . . . 57, 70, 75, 82, 85linecolour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105linestyle . . . . . . . . . . . . . . . . . . . . . . . . . . . 39, 139local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Mmacro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128map . . . . . . . . . . . . . 9, 18, 25, 28, 31, 57, 65, 66

cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218combine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Phạm Minh Hoàng 281

Page 298: Maple Va Cac Bai Toan Ung Dung

Chỉ mục

convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255evalf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66round . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106trunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

matrix . . . . . . . . . . . . . . . . . . . . 18, 90, 91, 93, 99max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99, 162median . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86midpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86mod . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 213, 224mw, mws. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

Nnextprime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225nops . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 62, 158norm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

expanded . . . . . . . . . . . . . . . . . . . . . 5, 23, 43NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107numer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37numpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Oodeplot . . . . . . . . . . . . . . 17, 151, 152, 155, 186op . . . . . . . . . . . . . . . . . 9, 29, 30, 70, 79, 99, 115orientation . . . . . . . . . . . . . . . . . 48, 55, 118, 121orthocenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Pparallelepiped. . . . . . . . . . . . . . . . . . . . . . . . . . .48patchnogrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64PerpenBisector . . . . . . . . . . . . . . . . . . . . . . . . . .86phaseportrait . . . . . . . . . . . . . . . . . . . . . . . . . . 104piecewise . . . . . . . . . . . . . . . . . . . . . . 76, 96, 133plot . . . . . . . . . . . . . . . . . . . . . . 11, 40, 64, 76, 95plot3d . . . . . . . . . . . . . . . . . . . 54, 58, 61, 92, 101poinplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31point . . . . . . . . . . . . . . . . . . 48, 70, 75, 81, 83, 95pointplot3d . . . . . . . . . . . . . . 58, 59, 62, 63, 101polar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184, 186polarplot . . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 233polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238positive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102prevprime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209print . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 109, 110proc . . . . . . . . . . . . . . . . . . . . .20, 22, 23, 93, 106

Rradius . . . . . . . . . . . . . . . . . . . . . . . . . 82, 118, 121rand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 12

rationalize . . . . . . . . . . . . . . . . . . . . . . . . . 30, 192Re . . . . . . . . . . . . . . . . . . . 40, 148, 171, 172, 247read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123reflect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236remove . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 43, 65restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1rhs . . . . . . . . . . . . . . . . . . 3, 23, 30, 38, 117, 118RootOf . . . . . . . . . . . . . 13, 39, 45, 51, 101, 148rotate . . . . . . . . . . . . . . . . . . . . . . . . 199, 233, 240round . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106, 107rowdim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 221rsolve . . . . . . . . . . . . . . . . . . . . . . . . . . . 14, 91, 94

Ssave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21scaling . . . . . . . . . . . . . . . . . . . . . . . . . 12, 66, 155select . . . . . . . . . . . 9, 28, 35, 50, 70, 82, 83, 98seq . . . . . . . . . . . . . . . . 8, 45, 58, 73, 81, 90, 161

display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76setoptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54sign. . . . . . . . . . . . . . . . . . . . . . . . . . .35, 115, 175simplify . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 14, 23

radical, symbolic . . . . . . . . . . . . . . . . . . . 248sqrt, symbolic . . . . . . . . . . . . . . . . . . . . . . . 72symbolic . . . . . . . . . . . . . 25, 29--31, 35, 82

expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91solve . . . . 6, 21, 28, 33, 41, 49, 55, 70, 94, 236spacecurve . . . . . . . . . . . . . . . . . . . . . . . . . . 59, 64sphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 57spline . . . . . . . . . . . . . . . . . . . . . . . . 119, 153, 159sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 39, 40, 117stepsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 64

hidden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17point . . . . . . . . . . . . . . . . . . . . . . . . . . . .17, 95wireframe . . . . . . . . . . . . . . . . . . . 42, 48, 57

subs . . . . . . . . 8, 19, 25, 30, 34, 41, 45, 94, 150subsop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227, 246symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106circle . . . . . . . . . . . . . . . . . . . . . . . . . . 59, 108cross . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108diamond . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17symbolsize . . . . . . . . . . . . . . . . . . . . . . . . . 95

282 Phạm Minh Hoàng

Page 299: Maple Va Cac Bai Toan Ung Dung

Chỉ mục

Ttextplot . . . . . . . . . . . . . . . . . . . . 66, 78, 108, 238thickness . . . . . . . . . . . . . . . . . . . . . . . 11, 58, 123tickmarks . . . . . . . . . . 40, 61, 79, 100, 103, 106time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178trans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57transpose . . . . . . . . . . . . . . . . . . . . . . . . . . . 93, 97transslate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81trunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73tubeplot . . . . . . . . . . . . . . . . . . . . . . 115, 118, 119

Uunapply . . . . . . . . . . . . 8, 31, 39, 40, 62, 81, 146union . . . . . . . . . . . . . . . . . . . . . . . . 152, 154, 156

Vvalue . . . . . . . . . . . . . . . . . . . . . . 2, 119, 121, 122

vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82, 255view . . . . . . . . . . . . . . . . . 80, 103, 152, 180, 240

Wwhile . . . . . . . . . . . . . . . . . . . . . . . . 150, 154--156with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

combinat . . . . . . . . . . . . . . . . . . . . . . . . . . 242geometry . . . . . . . . . . . . . . . . . . . . 70, 75, 81goem3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48linalg . . . . . . . . . . . . . . . . . . . . . . . . . . 56, 192plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29plots . . . . . . . . . . . . . . . . . . . 54, 73, 145, 154plottools . . . . . . . . . . . . 42, 57, 78, 123, 168student . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

worksheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 21

Zzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

Phạm Minh Hoàng 283