Khóa luận Sử dụng phần mềm Mathematica để vẽ đồ thị

Qua quá trình thực hiện đề tài khoá luận tốt nghiệp đã giúp tôi có được một số kết quả sau: - Hình thành cho bản thân một số kỹ năng vẽ đồ thị hai chiều, ba chiều, tĩnh, động bằng phần mềm Mathematica. Nắm vững các cú pháp để có thể vẽ đồ thị theo ý mình. - Đã có thể vận dụng các kỹ năng đó để vẽ được các đồ thị trong một số bài toán trong vật lý, đặc biệt là các hàm không thể mô tả rõ ràng mối liên hệ giữa các đại lượng vật lý bằng các biểu thức giải tích đơn giản. Khả năng ứng dụng việc vẽ đồ thị vào quá trình giảng dạy cũng như nghiên cứu vật lý là rất lớn. Tuy nhiên để đạt được hiệu quả cao thì cần phải tìm hiểu sâu hơn không chỉ khả năng vẽ đồ thị của Mathematica mà còn cần nghiên cứu các khả năng khác như tính toán với biến bằng chữ, biến bằng số, hoặc cao hơn là lập trình trên Mathematica.

pdf39 trang | Chia sẻ: maiphuongtl | Lượt xem: 5469 | Lượt tải: 9download
Bạn đang xem trước 20 trang tài liệu Khóa luận Sử dụng phần mềm Mathematica để vẽ đồ thị, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. . . . . . . . . . . . 18 2.2.4 Đồ thị dữ liệu hai chiều. . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.5 Đồ thị hai chiều động. . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 Vẽ đồ thị ba chiều tĩnh và động. . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 Đồ thị mặt ba chiều. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.2 Đồ thị tham số ba chiều . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3.3 Đồ thị dữ liệu ba chiều. . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.3.4 Đồ thị ba chiều động. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4 Ứng dụng vẽ đồ thị vào giảng dạy và nghiên cứu vật lý. . . . . . . . . . . . . 28 2.4.1 Bài toán giao thoa sóng cơ học. . . . . . . . . . . . . . . . . . . . . . 28 2.4.2 Bài toán chuyển động của vật ném xiên. . . . . . . . . . . . . . . . . 29 2.4.3 Ứng dụng nghiên cứu vật lý. . . . . . . . . . . . . . . . . . . . . . . . 30 3 KẾT LUẬN 38 2Phần 1 MỞ ĐẦU 1.1 Lý do chọn đề tài: Thế kỷ XX với nhiều thành tựu rực rỡ, Vật lý học đã có một bước phát triển mạnh mẽ. Mở đầu là sự ra đời của thuyết tương đối của Einstein, thuyết lượng tử của Planck, lý thuyết trường lượng tử... Để nghiên cứu, khảo sát các quá trình vật lý, xử lý các bài toán vật lý đòi hỏi phải tính toán các phép toán rất phức tạp, tốn nhiều thời gian và công sức. Vì vậy, việc đưa máy tính vào để nghiên cứu các quá trình tính toán trong vật lý, sử dụng các công cụ tính toán sẽ giúp cho việc xử lý các bài toán vật lý được nhanh chóng và thuận tiện. Để làm điều này, ngôn ngữ lập trình giải tích Mathematica nổi lên với ưu điểm vượt trội về giao diện thân thiện, về khả năng đồ thị siêu việt và khả năng xử lý số liệu nhanh đã trở thành một công cụ đắc lực cho các nhà khoa học, các kỹ sư, các chuyên gia sinh học, giáo viên, các nhà tài chính.... Với sự phát triển nhanh phiên bản Mathematica 5.0 đã bổ sung cho người sử dụng những thao tác đơn giản, không phải lập trình nặng nề như trước. Trong đó Mathematica cho phép vẽ tất cả các dạng đồ thị có thể có của một hàm số với cấu trúc lệnh đơn giản nhất như đồ thị hai chiều, đồ thị ba chiều, đồ thị đường viền, đồ thị thống kê... Đối với giáo viên phổ thông trung học, sử dụng phần mềm Mathematica để vẽ đồ thị sẽ là một hỗ trợ đắc lực cho giáo viên trong việc soạn giáo án lên lớp, bài giảng điện tử, ra đề thi trắc nghiệm... Nên tìm hiểu vẽ đồ thị bằng Mathematica là điều rất cần thiết. Vì lý do trên tôi chọn đề tài "Sử dụng phần mềm Mathematica để vẽ đồ thị" làm đề tài khoá luận tốt nghiệp. 1.2 Mục tiêu nghiên cứu: Nghiên cứu khai thác và sử dụng phần mềm Mathematica vào việc vẽ đồ thị hai chiều và ba chiều tĩnh, động và ứng dụng. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 3 1.3 Nhiệm vụ nghiên cứu: - Tập trung tư liệu, nghiên cứu lý thuyết. - Nghiên cứu sử dụng cú pháp cấu trúc câu lệnh của Mathematica. - Khai thác các tính năng vẽ đồ thị hai, ba chiều trên Mathematica. - Ứng dụng: vẽ đồ thị một số bài toán vật lý, khảo sát một số quá trình vật lý. 1.4 Đối tượng nghiên cứu: Ngôn ngữ lập trình Mathematica với tính năng vẽ đồ thị. 1.5 Phương pháp nghiên cứu: - Phương pháp nghiên cứu lý thuyết: Đọc và tìm hiểu ngôn ngữ lập trình Mathematica. Nghiên cứu các bước lập trình trên Mathematica với tính năng vẽ đồ thị. - Thực hiện các chương trình vẽ cơ bản của Mathematica với các đồ thị mô tả các quy luật vật lý cụ thể. 1.6 Giới hạn đề tài nghiên cứu: Trong thời gian và khả năng cho phép tôi chỉ nghiên cứu ngôn ngữ lập trình Mathe- matica với tính năng vẽ đồ thị hai chiều và ba chiều tĩnh, động và ứng dụng của chúng. 1.7 Cấu trúc của khóa luận: Khoá luận gồm có ba phần: phần mở đầu, phần nội dung và phần kết luận. Phần mở đầu trình bày lý do chọn đề tài, mục tiêu nghiên cứu, nhiệm vụ nghiên cứu, đối tượng nghiên cứu, phương pháp nghiên cứu và giới hạn nghiên cứu của đề tài. Phần nội dung (có ba chương): Chương 1 giới thiệu tổng quan về ngôn ngữ lập trình Mathematica; Chương 2 thực hiện vẽ đồ thị hai chiều tĩnh và động với việc thay đổi các tuỳ chọn; Chương 3 thực hiện vẽ đồ thị ba chiều tĩnh và động với việc thay đổi các tuỳ chọn; Chương 4 ứng dụng vẽ đồ thị vào một số bài toán vật lý, khảo sát một số quá trình vật lý. Phần kết luận: Trình bày các kết quả thu được từ việc nghiên cứu vẽ đồ thị trên Mathematica. 4Phần 2 NỘI DUNG 2.1 Giới thiệu tổng quan về ngôn ngữ lập trình Mathematica. 2.1.1 Giới thiệu sơ bộ về ngôn ngữ lập trình Mathematica. Mathematica là ngôn ngữ tích hợp đầy đủ nhất các tính toán kỹ thuật. Là dạng ngôn ngữ dựa trên nguyên lý xử lý các dữ liệu tượng trưng. Thế hệ ngôn ngữ giải tích đầu tiên đó là Macsyma, Reduce... ra đời từ những năm 60 của thế kỷ XX. Các ngôn ngữ này chủ yếu dùng cho các bài toán vật lý năng lượng cao. Nhược điểm của chúng là chủ yếu được định hướng chạy trên các máy tính lớn. Thế hệ tiếp theo là các ngôn ngữ Maple, Mathlab, Mathematica... Các ngôn ngữ này có ưu điểm là chạy nhanh hơn và chấp nhận bộ nhớ nhỏ hơn, chạy hoàn hảo trên máy tính cá nhân. Trong các ngôn ngữ tính toán loại này, nổi bật lên ngôn ngữ Mathematica với ưu điểm vượt trội về giao diện thân thiện, về khả năng đồ thị siêu việt và xử lý dữ liệu không thua kém các ngôn ngữ tính toán khác. Nhờ khả năng mô hình hoá và mô phỏng các hệ lớn, kể cả các hệ động mà Mathematica không chỉ được ứng dụng trong lĩnh vực vật lý, kỹ thuật và toán mà còn được mở rộng ứng dụng trong các lĩnh vực như sinh học, các khoa học xã hội, kể cả trong lĩnh vực tài chính phức tạp. Phiên bản đầu tiên của Mathematica được phát hành vào năm 1988. Phiên bản 6.0 là phiên bản mới nhất hiện nay. 2.1.2 Giao diện tương tác của Mathematica. Mathematica đưa ra một giao diện rất thân thiện với người sử dụng được đặt tên là bản ghi (notebook - thường được gọi tắt là nb). Các bản ghi là dạng cửa sổ biểu diễn một lượt sử dụng Mathematica bao gồm đầy đủ các ghi chép cả về chương trình nguồn, cả về kết quả thực hiện trên cùng một bản ghi và được ghi lại dưới dạng file riêng của Mathematica có đuôi là *.nb. Các bản ghi được tổ chức thành các ô (cells) một cách có trật tự và thứ bậc. Ta có thể nhóm một nhóm ô lại sao cho chỉ thấy ô đầu của nhóm ô đó (với số nhóm lồng tuỳ ý). KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 5 Mathematica còn đưa ra một giao diện phụ là các bảng lệnh (Palettes) và các nút lệnh (Button). Người sử dụng chỉ cần nhấp chuột rất đơn giản và có thể tuỳ biến theo ý mình. 2.1.3 Các tính năng của Mathematica. a. Khả năng tính toán bằng số. Mathematica cho phép tính một cách trực tiếp giống như dùng một calculator với độ chính xác bất kỳ một biểu thức phức tạp nào bằng cách viết biểu thức cần tính và bấm tổ hợp phím Shift + Enter. Thí dụ ta có thể tính biểu thức sau đây một cách nhanh chóng: 6200 4268252238120274007969748915187737323429887453544894294954790789351129295496 19739019072139340757097296812815466676129830954465240517595242384015591919845376 100! 9332621544394415268169923885626670049071596826438162146859296389521759999322 9915608941463976156518286253697920827223758251185210916864000000000000000000000000 b. Khả năng tính toán với biến tượng trưng. Mathematica cho phép giải các phương trình hay tính toán các biểu thức mà nghiệm hay các kết quả được biểu diễn bằng các biến tượng trưng. Thí dụ tính tích phân bất định theo biến chữ x:∫ √ x √ a + xdx√ a+ x(a √ x 4 + x 3/2 2 )− 1 4 a2log( √ x + √ a + x) c. Khả năng đồ hoạ hai chiều và ba chiều. Mathematica cho phép vẽ tất cả các dạng đồ thị có thể có của một hàm số với cấu trúc lệnh đơn giản nhất như đồ thị hai chiều, đồ thị ba chiều, đồ thị đường viền, đồ thị mật độ... Thí dụ lệnh sau đây cho phép vẽ đồ thị hai chiều của hàm số sin x+sin 2x trong khoảng (0, 30) (hình 1.1): P lot[Sin[x] + Sin[2x], {x, 0, 30}]; Hình 1.1 Lệnh sau đây cho phép ta vẽ đồ thị ba chiều của hàm Sin(xy): P lot3D[Sin[xy], {x, 0, 4}, {y, 0, 4}, P lotPoints→ 30]; (hình 1.2) KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 6 Mathematica không chỉ cho ta khả năng vẽ đồ thị hai chiều, ba chiều theo mặc định, mà người dùng có thể sử dụng các tuỳ chọn để thay đổi trình diễn của đồ thị theo các mục đích của mình. Hình 1.2 Chẳng hạn như để khảo sát đồ thị của hàm số trong một khoảng nào đó ta có thể chỉ cần vẽ đồ thị trong một khoảng tuỳ chọn do người sử dụng đưa ra. Hoặc có thể vẽ đồng thời nhiều đồ thị trên cùng một hệ trục toạ độ, lựa chọn màu sắc, nét vẽ đậm nhạt... của từng đồ thị khác nhau. Hình (1.3) sau đây là một ví dụ: P lot[Sin[x2], {x, 0, 3}, AxesOrigin→ {−0.2, 0}, AxesStyle→ {RGBColor[1, 0, 0], AbsoluteThickness[2]}, DefaultColor → RGBColor[0, 0, 1], AxesLabel→ {"Trục x", "Trục y"}, T icks→ {{0, 1, 2, 3}, {−0.5, 0, 0.5, 1}}, GridLines → Automatic, P lotRange → {−0.5, 1}, ImageSize→ {400, 400 ∗ 0.62}, DefaultFont→ {V nT ime, 14}, F ormatType→ TraditionalForm, P lotLabel→ "Đồ thị y=Sin(x2)"]; Hình 1.3 d. Khả năng tính toán của Mathematica. Mathematica có khả năng chấp nhận các dữ liệu lớn bất kỳ và xử lý nó trong thời gian vài giây. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 7 Thí dụ tạo ra một ma trận 100 × 100 gồm các phần tử là các số nguyên bất kỳ (dấu ";" ở sau câu lệnh để không in ra ma trận m vì kích thước của nó quá lớn). m = Table[Random[], {100}, {100}]; Sức mạnh tính toán của Mathematica là ở chỗ nó cho các giá trị riêng của ma trận m này và biểu thị trên đồ thị với thời gian chưa tới 1 giây (hình1.4). ListP lot[Abs[Eigenvalues[m]]]; Hình 1.4 Mathematica cho phép xử lý các số liệu có kích thước lớn bất kỳ. Thí dụ Mathematica cho kết quả chính xác sau không đầy 1 giây cho phép tính giai thừa của 100: 100! 933262154439441526816992388562667004907159682643816214685929638952175999932 29915608941463976156518286253697920827223758251185210916864000000000000000000000 000 Mathematica còn cho phép tính toán các phép tính đại số với độ chính xác bất kỳ do người sử dụng đặt ra hay có thể thực hiện các tính toán đại số mà con người khó có thể thực hiện được bằng tay. Thí dụ phép tính số Pi với độ chính xác đến 200 chữ số: N [Π, 200] 3.1415926535897932384626433832795028841971693993751058209749445923078164062 86208998628034825342117067982148086513282306647093844609550582231725359408128481 1174502841027019385211055596446229489549303820 Khai triển biểu thức toán học x99 + y99: Factor[x99 + y99] {(x+ y)(x2− xy + y2)(x6− x3y3 + y6)(x10− x9y + x8y2− x7y3 + x6y4 − x5y5 + x4y6− x3y7 +x2y8−xy9 + y10)(x20 +x19y−x17y3−x16y4 +x14y6 +x13y7−x11y9−x10y10−x9y11 + x7y13 + x6y14 − x4y16− x3y17 + xy19 + y20)(x60 + x57y3 − x51y9 − x48y12 + x42y18 + x39y21 − x33y27 − x30y30 − x27y33 + x21y39 + x18y42 − x12y48 − x9y51 + x3y57 + y60)} Đồng thời Mathematica cho phép sử dụng các thuật toán cho trước để đơn giản hoá biểu thức (dấu "%" là để chỉ tham chiếu đến kết quả vừa đưa ra ở dòng lệnh trước). KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 8 Simplify[%] x99 + y99 e. Các thuật toán trong Mathematica. - Khi chạy, Mathematica tự chọn các thuật toán thích hợp (trong các thuật toán sẵn có) cho mỗi tính toán gần đúng bằng số. Thí dụ như lệnh FindRoot (tìm nghiệm phương trình), NIntegrate (tính tích phân bằng số), NSolve (giải phương trình bằng số): FindRoot[Cos[x] == x + log[x], {x, 1}] {x → 0.840619} NIntegrate[Log[x+ Sin[x]], {x, 0, 2}] 0.555889 NSolve[x5− 6x3 + 8x + 1 == 0, x] {{x→ −2.05411}, {x → −1.2915}, {x → −0.126515}, {x → 1.55053}, {x → 1.9216}} Hình 1.5 - Mathematica là một công cụ dễ dàng để xử lý các ma trận. Có thể tạo ra một bảng hai chiều, biểu diễn nó dưới dạng ma trận, thực hiện các phép toán với nó. - Mathematica có thể dễ dàng giải các phương trình vi phân bằng cả lời giải đại số chính xác và cả lời giải gần đúng cho kết quả là một hàm nội suy, đồng thời biểu diễn đồ thị các lời giải. NDSolve[{x”[t] + x3[t] == Sin[t], x[0] == x′[0] == 0}, x, {t, 0, 50}] {{x→ InterpolatingFunction[{{0., 50.}}, ]}} Lời giải bằng hàm nội suy này được biểu diễn bằng đồ thị (hình 1.5) (ở đây ký tự "/." biểu thị cho phép thay x bằng nghiệm ở câu lệnh trước (%)). ParametricP lot[Evaluate[{x[t], x′[t]}/.%], {t, 0, 50}]; f. Mathematica là một cuốn bách khoa toàn thư về toán. - Mathematica có chứa sẵn hầu hết các hàm đặc biệt ở các dạng thuần tuý toán hoặc ở các dạng ứng dụng của nó. Thí dụ hàm Legendre: LegendreQ[3, x] 2 3 − 5x2 2 − 1 4 x(3− 5x2)Log[ (1+x) (1−x)] KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 9 - Mathematica cho phép tính toán một cách chính xác một số lượng lớn các tích phân kể cả tích phân đặc biệt.∫ √ xArctan[x]dx 1 6 (−8√x−2√2ArcTan[1−√2√x]+2√2ArcTan[1+√2√x]+4x 32ArcTan[x]−√2Log[−1+√ 2 √ x− x] +√2Log[1 +√2√x + x]) - Mathematica cũng cho phép tính toán chính xác các tổng và tích vô hạn. n∑ k=1 1 6 HarmonicNumber[n, 6] g. Các hiện ứng hình ảnh trong Mathematica. Mathematica có thể tạo ra các đồ thị tham số hoặc cho thấy sự vận động của quá trình bằng cách cho chạy một dãy các đồ thị tĩnh. Thí dụ để vận động hoạt hoạ một dãy đồ thị (hình 1.6): Table[P lot3D[Sin[2x]Sin[2y]Cos[t], {x,0,Π}, {y,0,Π}, P lotRange→ {−1, 1}, BoxRatios→ {1, 1, 1}, T icks→ None,DisplayFunction→ Indentity], {t,0,Π, Π 6 }]; Show[GraphicsArray[{%}, F rame→ True]]; Hình 1.6 2.2 Vẽ đồ thị hai chiều tĩnh và động. 2.2.1 Cú pháp. Lệnh Plot[f,{x, xmin, xmax}]; vẽ đồ thị hai chiều của hàm f(x) với x chạy từ xmin đến xmax (hình 2.1). Lệnh Plot[{f1, f2...}, {x, xmin, xmax}]; vẽ đồng thời đồ thị của các hàm {f1, f2...} với x chạy từ xmin đến xmax (dấu ";" được thêm vào ở cuối mỗi câu lệnh về đồ thị để không hiện ra câu thông báo về đối tượng Graphics) (hình 2.2). KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 10 P lot[Tan[x/2], {x,−2Π, 2Π}]; Hình 2.1 P lot[{Sin[x], Sin[2x], Sin[3x]}, {x,0, 2Π}]; Hình 2.2 Theo cách này, ứng với mỗi trị số của x tính trực tiếp được trị số của hàm f (bằng các thuật toán tính bằng số của Mathematica), ta có tương ứng mỗi cặp điểm trên đồ thị. Một trình tự khác là tính ra một hàm số (có thể chỉ là gần đúng) có biểu thức giải tích theo các biến chữ (gọi là hàm hiện) rồi mới thay giá trị x vào để tính giá trị cho f(x). Trình tự này thường được dùng cho các hàm nội suy, là các hàm không có biểu thức dạng giải tích. Nó được thể hiện bằng các lệnh: P lot[Evaluate[f ],{x, xmin, xmax}] và P lot[Evaluate[Table[{f1, f2...}]], {x, xmin, xmax}] (hình 2.3). P lot[Evaluate[Table[BesselJ [n, x], {n, 4}]],{x, 0, 10}]; Hình 2.3 Một lệnh theo loại này nữa thường được dùng cho vẽ đồ thị nghiệm các phương trình vi phân giải gần đúng (giải bằng số): P lot[y[x]/.nghiệm, {x,xmin, xmax}]. 2.2.2 Các tuỳ chọn của đồ thị hai chiều. a. Các tuỳ chọn mặc định của đồ thị hai chiều. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 11 Một lệnh vẽ đồ thị của Mathematica có rất nhiều các tuỳ chọn bổ sung và ta có thể thay thế giá trị mặc định. Để liệt kê các tuỳ chọn và các giá trị mặc định gán sẵn ta dùng lệnh Options[Plot]. Dạng tổng quát của nó là: Options[đối tượng] cho danh sách các tuỳ chọn và mặc định của đối tượng; hoặc Options[đối tượng,tuỳ chọn] cho danh sách đặt của tuỳ chọn trong đối tượng. Ngoài ra có thể dùng các lệnh: FullOptions[đối tượng,tuỳ chọn] cho mô tả tỷ mỷ nhất cách sắp đặt tuỳ chọn; SetOptions[đối tượng,options → value] đặt lại giá trị mặc định của lựa chọn options thành giá trị value (hình 2.4). Option[P lot](*mô tả danh sách các tuỳ chọn của lệnh Plot*) {AspectRatio→ 1 GoldenRatio , Axes→ Automatic,AxesLabel→ None, AxesOrigin→ Automatic,AxesStyle→ Automatic,Background→ Automatic, ColorOutput → Automatic, Compiled→ True,DefaultColor → Automatic, DefaultFont :→ $DefaultFont,DisplayFunction :→ $DisplayFunction, Epilog → {}, F ormatType :→ $FormatType, Frame→ False, FrameLabel→ None, FrameStyle→ Automatic, F rameTicks→ Automatic, GridLines → None, ImageSize→ Automatic,MaxBend→ 10., P lotDivision→ 30., P lotLabel → None, P lotPoints → 25, P lotRange → Automatic, P lotRegion→ Automatic, P lotStyle→ Automatic, P rolog → {}, RotateLabel→ True, TextStyle :→ $TextStyle,T icks→ Automatic} g = P lot[Sin[x], {x, 0, 2Π}]; Hình 2.4 Options[g, P lotRange] {P lotRange− > Automatic} FullOptions[g, P lotRange] {{−0.15708, 6.44026}, {−1.05, 1.05}} b. Các tuỳ chọn quan trọng. Mathematica cho ta nhiều tuỳ chọn, dưới đây chúng tôi xin giới thiệu một số tuỳ chọn quan trọng và cách đặt các tuỳ chọn của các lệnh vẽ đồ thị hai chiều. - Axes: là một tuỳ chọn của hàm vẽ đồ thị bao gồm có hay không các trục toạ độ. Các giá trị của tuỳ chọn này bao gồm: KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 12 Axes →True: Hiển thị các trục toạ độ. Axes →False: Không hiển thị các trục toạ độ. Axes → {False, True}: Hiển thị một trục toạ độ, trục còn lại không hiển thị. Giá trị mặc định của tuỳ chọn là Automatic (Xem hình 2.5). Show[Graphics[Circle[{0, 0}, 1], AspectRatio→ Automatic,Axes→ Automatic]]; Hình 2.5 - AxesLabel: Tuỳ chọn đặt nhãn cho các trục toạ độ. Các giá trị của tuỳ chọn này bao gồm: AxesLabel → None: Không đặt nhãn cho đồ thị. AxesLabel → label: Đặt nhãn label cho trục y đối tượng đồ thị hai chiều. AxesLabel → {"nhãn x","nhãn y"}: Đặt nhãn cho các trục toạ độ. Nhãn của các trục toạ độ sẽ được đánh ở cuối các trục. Giá trị mặc định của tuỳ chọn là None (Xem hình 2.6). P lot[Sin[x/2], {x, 0, 2Π}, AxesLabel→ {”Trục x", "Trục y"}]; Hình 2.6 - AxesOrigin: Lựa chọn trong đồ thị hai chiều để đặt điểm cắt hai trục toạ độ. Các giá trị của tuỳ chọn này bao gồm: AxesOrigin → {x, y}: Đặt điểm cắt hai trục toạ độ là điểm có toạ độ {x,y}. Giá trị mặc định của tuỳ chọn là điểm {0,0}. Đối với đồ thị đường viền và đồ thị mật độ, đặt AxesOrigin → Automatic thì điểm cắt của các trục toạ độ được đặt ở ngoài vùng đồ thị. Thí dụ để khảo sát tính đối xứng của hàm Sin[x] ta có thể thay đổi điểm cắt hai trục toạ độ để thấy rõ điều đó (hình 2.7): KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 13 P lot[Sin[x], {x, 0, 2Π}, AxesOrigin→ {Π, 0}]; Hình 2.7 - Frame: Là tuỳ chọn của đồ thị hai chiều, gồm có hay không có khung viền quanh đồ thị. Các giá trị của tuỳ chọn gồm: Frame → True: Có hiển thị khung viền. Frame → None: Không hiển thị khung viền. Giá trị mặc định của tuỳ chọn là None. Hình 2.8 Thí dụ trong lệnh vẽ đồ thị hàm Sin[x2], để đối chiếu các giá trị cực đại ta có thể sử dụng khung viền để thấy rõ (hình 2.8): P lot[Sin[x2], {x, 0, 3}, F rame→ True]; - GridLines: Đây là tuỳ chọn của đồ thị hai chiều bao gồm có hay không vẽ các đường lưới cho mỗi chỗ đánh dấu trên trục toạ độ của đồ thị. Các giá trị của tuỳ chọn bao gồm: Hình 2.9 KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 14 GridLines → None: Không hiển thị các đường lưới. GridLines → Automatic: Hiểu thị các đường lưới theo mặc định. Giá trị mặc định của tuỳ chọn này là None. Thí dụ để khảo sát chi tiết các khoảng đồ thị của hàm số Sin[x2] ta vẽ thêm các đường lưới (hình 2.9): P lot[Sin[x2], {x, 0, 3}, GridLines → Automatic]; - FrameLabel: Đây là tuỳ chọn của đồ thị hai chiều bao gồm có hay không có nhãn khung. Đặt các giá trị của tuỳ chọn: FrameLabel → None: Không có nhãn khung. FrameLabel → {nhãn 1,nhãn 2,nhãn 3,nhãn 4}: Có đặt nhãn và nhãn được đặt xung quanh 4 cạnh theo chiều kim đồng hồ từ dưới. Giá trị mặc định của tuỳ chọn là None (hình 2.10). P lot[Sin[x], {x, 0, 2Π}, F rame→ True, FrameLabel→ {Dưới, Trái, Trên, Phải}, RotateLabel→ False]; Hình 2.10 (Ở đây có bổ sung tuỳ chọn RotateLabel→ False để không xoay nhãn theo chiều của khung) - PlotLabel: Đây là tuỳ chọn của lệnh vẽ đồ thị với việc đặt nhãn cho đồ thị. Đặt các giá trị tuỳ chọn: Hình 2.11 KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 15 PlotLabel → None: Không có nhãn của đồ thị. PlotLabel → StyleForm["nhãn",dạng text,FontFamily → "font",FontSize → n]: Đặt nhãn cho đồ thị là nhãn với kiều dạng text, font chữ là font, cỡ chữ n. P lot[(Sin2(Θ))/(2 + Cos2(Θ)), {Θ, 0,Π}, P lotLabel → StyleForm[ " (Sin2(Θ))/(2 + Cos2(Θ)) " , F ontSize→ 12]]; (hình 2.11) - Ticks: Tuỳ chọn đánh dấu các điểm trên các trục toạ độ. Các giá trị của tuỳ chọn: Ticks → None: Không đánh dấu trên các trục. Ticks → Automatic: Tự động đánh dấu trên các trục. Ticks → {{xticks, ...},{yticks, ...}}: Tuỳ chọn đánh dấu trên các trục khác nhau (hình 2.12). P lot[Sin[x], {x, 0, 2Π}, T icks→ {{0,Π/2,Π, (3Π)/2, 2Π}, Automatic}]; Hình 2.12 - Plot Range: Tuỳ chọn của lệnh vẽ đồ thị cho khoảng toạ độ hiển thị. Các giá trị của tuỳ chọn: Plot Range → All: Hiển thị toàn bộ. Plot Range → Automatic: Tự động hiển thị đồ thị. Plot Range → {ymin, ymax}: Hiển thị đồ thị trong khoảng toạ độ từ ymin đến ymax. Plot Range → {{xmin, xmax}, {ymin, ymax}}: Tuỳ chọn khoảng đồ thị hiển thị với x chạy từ xmin đến xmax, y chạy từ ymin đến ymax. Giá trị mặc định của tuỳ chọn là All. Hình 2.13 KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 16 Thí dụ khi khảo sát hàm số Sin(x2) trong một khoảng toạ độ x → {0,2}, y → {0,1.2} (hình 2.13): P lot[Sin[x2], {x, 0, 4}, P lotRange→ {{0, 2}, {0, 1.2}}]; - PlotStyle: Tuỳ chọn kiểu vẽ của đồ thị bao gồm các hàm Graylevel[i] cho độ xám i của đồ thị, 0 ≤ i ≤ 1, 0 _ đen hoàn toàn, 1_ trắng; Thickness[r] cho độ dày r của đường đồ thị; Dashing[r1, r2 ...] cho độ dài của các đường vạch chấm kế tiếp nhau; RGBColor[r1, g1, b1] cho màu của đồ thị bằng hàm màu (ví dụ đỏ = RGBColor[1,0,0]); Hue[h] hoặc Hue[h,s,b] cho độ hoe (sắc sáng). Thí dụ khi ta vẽ đồng thời hai hoặc nhiều đồ thị trên một hệ trục toạ độ, khi đó thật khó để nhận biết các đồ thị khác nhau. Ta có thể chọn màu hoặc độ dày của các đường đồ thị khác nhau là khác nhau để dễ so sánh và nhận xét (hình 2.14). P lot[{Sin[x], Sin[2x]},{x, 0, 2Π}, P lotStyle→ {Thickness[0.004], Thickness[0.007]}]; Hình 2.14 - Background: Tuỳ chọn cho màu của nền đồ thị. Ta đặt giá trị tuỳ chọn bằng các hàm màu như RGBColor[r,g,b], GrayLevel[], hoặc Hue[]. Giá trị mặc định của tuỳ chọn này là Automatic. P lot[Sin[x], {x, 0, 2Π}, Background→ GrayLevel[0.5]]; Hình 2.15 - PlotPoints: Tuỳ chọn cho số điểm tối thiểu để lấy mẫu cho đồ thị. Giá trị mặc định của tuỳ chọn là 25 (hình 2.16a). Thí dụ xét đồ thị sau: KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 17 P lot[Cos[20t] + Cos[24t], {t,Π, 3Π}]; Hình 2.16a Trên đồ thị ta thấy, đoạn đầu tiên của đồ thị không được chính xác do số điểm lấy mẫu để vẽ đồ thị không đủ. Ta có thể khắc phục điều này với tuỳ chọn PlotPoints là 70 (hình 2.16b). P lot[Cos[20t] + Cos[24t], {t,Π, 3Π}, P lotPoints→ 70]; Hình 2.16b Trên đây là những tuỳ chọn quan trọng của các lệnh vẽ đồ thị hai chiều, ngoài ra còn có các tuỳ chọn khác như: Aspecratio: Tuỳ chọn cho tỷ lệ chiều cao/chiều rộng. Giá trị mặc định của nó là 1/GoldenRatio_ 2/(1 + √ 5). TextStyle: Kiểu mẫu cho text trong đồ thị gồm các dạng như: title, subtile, section, text..., mặc định là text thường. Đặt kiểu text bằng lệnh: TextStyle → dạng text. DisplayFunction: Tuỳ chọn về cách thể hiện đồ thị, Indentity là không hiển thị đồ thị ra. Prolog hoặc Epilog: Vẽ thêm vào đồ thị một đối tượng đồ thị đơn giản trước (hoặc sau) đồ thị chính với mục đích đánh dấu hoặc so sánh. Đó có thể là Box[], Rectange[], Circle[]... giá trị mặc định của nó là None... Các tuỳ chọn của các lệnh vẽ đồ thị có rất nhiều nhưng giá trị của các tuỳ chọn này chỉ giới hạn trong một số ít: Automatic_có sử dụng các thuật toán đã tích hợp sẵn, None_không bao gồm tuỳ chọn này, All_bao gồm tất cả các đặc tả, True_thực hiện mặc định đã đặt, False_không thực hiện tuỳ chọn. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 18 2.2.3 Đồ thị hai chiều nâng cao. Mathematica không chỉ hỗ trợ vẽ từng đồ thị của mỗi hàm số với những tuỳ chọn như trên, mà nó còn hỗ trợ thêm nhiều chức năng khác trong hiện ứng hình ảnh. Ta có thể vẽ nhiều đồ thị cùng một lúc, bố trí lại để phục vụ cho các mục đích khác, hoặc cũng có thể tìm nghiệm của một phương trình từ đồ thị mà nếu giải trực tiếp bằng thuật toán thì sẽ gặp nhiều khó khăn. a. Vẽ lại các đồ thị, vẽ chèn các đồ thị. Ta có thể vẽ lại một hay nhiều đồ thị mà đã thực hiện trước đó mà chưa được hiển thị ra hoặc bổ sung các tuỳ chọn. Để vẽ lại các đồ thị ta dùng lệnh: Show[{g1, g2, ...} , tuỳ chọn] Ví dụ (hình 2.17): P lot[Cos[20t] + Cos[24t], {t,Π, 3Π}, P lotPoints→ 70,DisplayFunction→ Identity]; Show[%, Background → GrayLevel[0.8]]; Hình 2.17 Tuỳ chọn DisplayFunction → Identity sẽ không hiển thị đồ thị ra màn hình. p1 = P lot[xSin[x], {x,−10, 10}, P lotStyle→ {Thickness[0.003]}, DisplayFunction→ Identity]; p2 = P lot[xCos[x], {x,−10, 10}, P lotStyle→ {Thickness[0.007]}, DisplayFunction→ Identity]; Show[p1, p2, F rame → True,DisplayFunction→ $DisplayFunction]; Hình 2.18 KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 19 Ta cũng có thể vẽ các đồ thị thành một dãy bằng các lệnh: Show[GraphicsArray[{g1, g2, ...}]]: hiển thị dãy đồ thị {g1, g2, ...} thành một hàng liên tục. Show[GraphicsArray[{{g1}, {g2}, ...}]]: hiển thị dãy đồ thị {g1, g2, ...} thành một cột. Show[GraphicsArray[{{g1, g2}, ...}...}]]: hiển thị dãy đồ thị {{g1, g2, ...}...} thành một bảng chữ nhật các đồ thị với tuỳ chọn GraphicsSpacing → {h,v} cho khoảng cách giữa các đồ thị: h_ khoảng dọc, v_ khoảng ngang. p1 = P lot[Sin[x], {x, 0, 2Π},DisplayFunction→ Identity]; p2 = P lot[Sin[2x], {x, 0, 2Π},DisplayFunction→ Identity]; Show[GraphicsArray[{p1, p2}]]; Hình 2.19 b. Đồ thị theo tham số. Khi xét phương trình chuyển động của một chất điểm chuyển động trong không gian ~r = ~r(t). Đây chính là phương trình quỹ đạo của chất điểm theo tham số t. Đồ thị của quỹ đạo là một đồ thị theo tham số. Lệnh vẽ đồ thị theo tham số: ParametricPlot[{fx, fy}, {t, tmin, tmax}] vẽ đồ thị cho bởi các toạ độ {fx(t), fy(t)}. ParametricPlot[{{fx, fy}, {gx, gy}...}, {t, tmin, tmax}] vẽ đồng thời một vài đồ thị trên hệ trục toạ độ. Hình 2.20 Thí dụ tia điện tử trong máy dao động ký gồm hai cuộn lái tia theo hai phương KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 20 vuông góc với nhau có điện trường thay đổi theo quy luật: x = AxCos(ωxt + ϕx) và y = AyCos(ωyt + ϕy). Tổng hợp của hai dao động vuông góc này cho ta một đường cong theo tham số t gọi là các đường Lissajous. Dưới đây là đồ thị của dao động tổng hợp khi xét trong một trường hợp cụ thể (hình 2.20): ParametricP lot[{Cos[t],Cos[3t− Π 4 ]}, {t, 0, 2Π}, AxesLabel→ {”x(A)”, ”y(A)”}, F rame → True,AspectRatio → Automatic, F rameLabel → {”Ax = Ay;ωx = ωy/3;ϕx = 0;ϕy = −Π/4]”, ””, ””, ””},DefaultFont → {”V nT ime”, 14}]; 2.2.4 Đồ thị dữ liệu hai chiều. Đồ thị dữ liệu biểu diễn các dữ liệu dạng bảng cho bởi Table[] hoặc Array[]..., hoặc các cặp toạ độ được đưa vào trực tiếp từ thực nghiệm. Đồ thị dữ liệu gồm các lệnh: ListPlot[{y1, y2, ...}] vẽ một dãy các giá trị y với x lần lượt là 0, 1, 2,... , n. ListPlot[{{x1, y1}, {x2, y2}, ...}] vẽ dãy các điểm toạ độ {xi, yi}. Ngoài các tuỳ chọn cho các lệnh đồ thị, đồ thị dữ liệu còn được bổ sung các tuỳ chọn: PlotJoined: Có nối các điểm lại hay không, giá trị mặc định của tuỳ chọn là False. PlotStyle: Cho cấu trúc của điểm dữ liệu hoặc đường nối các điểm được vẽ ra. Ví dụ PointSize[i] cho điểm tròn có bán kính i. Thí dụ ta vẽ đồ thị dữ liệu của bảng sau: data = Table[Sin[x] + Random[Real, {−0.1, 0.1}], {x, 0, 2Π, 0.1}]; ListP lot[data, P lotStyle→ PointSize[0.012]]; (hình 2.21a) ListP lot[data, P lotJoined→ True]; (hình 2.21b) Hình 2.21a Hình 2.21b Ta có thể tuỳ chọn cách hiển thị điểm dữ liệu trên đồ thị bằng lệnh Graphics[đồ hoạ, KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 21 tuỳ chọn]. Lệnh này hiển thị đối tượng đồ hoạ đơn giản với tuỳ chọn. Đối tượng này được hiển thị trên đồ thị bằng lệnh Show[]. Một số đối tượng đồ hoạ đơn giản như: Circle[{x, y},r] đường tròn tâm {x, y}, bán kính r; Disk[{x, y}, r] đường tròn có tô đen, tâm {x, y}, bán kính r; Line[{{x, y}... }] đường thẳng với các thăng giáng (bù đắp): Offset[dx, dy]; Point[{x, y}] điểm; Rectange[{xmin, ymin}, {xmax, ymax}] hình chữ nhật; Polygon[{{x1, y1},... }] hình đa giác; Text[expr,{x, y}] đoạn văn bản expr. Thí dụ: Show[Graphics[Table[Line[{{x,x2}, Offset[{0, 6}, {x, x2}]}], {x, 10}], F rame→ True]]; (hình 2.22a) Hình 2.22a Show[Graphics[Table[Circle[{x,x2}, Offset[{4, 4}]], {x, 10}], F rame→ True]]; (hình 2.22b) Hình 2.22b Để biểu diễn các dữ liệu thực nghiệm với các tuỳ chọn phong phú, có một chương trình dành riêng, một chương trình con: Graphics‘MultipleListPlot‘. Cấu trúc lệnh của nó như sau (sau khi đã gọi package này ra để sử dụng): MultipleListPlot[list1, list2,... , tuỳ chọn]; vẽ đồng thời đồ thị dữ liệu cho bởi các dãy toạ độ list1, list2, ... Với cấu trúc lệnh này có các tuỳ chọn: PlotJoined: Có (hay không) đường liên kết các điểm dữ liệu. Mặc định là False. PlotStyle: Định dạng (Style) cho đường liên kết bao gồm các hàm KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 22 2.2.5 Đồ thị hai chiều động. Mathematica cho phép thực hiện các hiện ứng hoạt hoạ trên màn hình bằng cách cho chạy một dãy các đối tượng đồ thị kế tiếp nhau. Để có hiện ứng hoạt hoạ động ta phải thực hiện các thao tác sau: - Trước hết ta phải có dữ liệu cho việc trình diễn "đoạn phim hoạt hoạ" bằng cách vẽ một dãy liên tiếp các đối tượng đồ thị này trên màn hình. - Khi đã có một dãy liên tiếp các đối tượng đồ thị ta chỉ cần click đúp chuột vào một đối tượng là có thể thấy được hiện ứng hoạt hoạ. Có thể tuỳ chọn cách trình diễn hoạt hoạ bằng cách sử dụng các tuỳ chọn thể hiện ở thanh công cụ bên dưới bao gồm: Backward trình diễn ngược trình tự thời gian, Cyclic trình diễn theo vòng lặp, Forward trình diễn theo trình tự thời gian, Pause dừng trình diễn, Slower làm chậm quá trình diễn hoạt, Faster làm nhanh quá trình diễn hoạt. Xét thí dụ sau: Table[P lot[{e[−16(x−1)2] + 1.5e[−(x+t)2], 1.5e[−(x+t)2] + 3, e[−16(x−t)2] + 5, {x,−3, 3}, P lotStyle→ {{Thickness[0.008]}, {Thickness[0.005]}, {Thickness[0.005]}}, P lotRange → {0, 6.25}, Axes → False, Frame→ True, FrameT icks→ None, P lotPoints → 40], {t,−2, 3.5, 1}]; Hình 2.23 2.3 Vẽ đồ thị ba chiều tĩnh và động. 2.3.1 Đồ thị mặt ba chiều. a. Cú pháp. Đồ thị mặt ba chiều được vẽ bằng lệnh:Plot3D[f(x,y),{x, xmin, xmax}, {y, ymin, ymax}] hoặc Plot3D[{f,s},{x, xmin, xmax}, {y, ymin, ymax}] vẽ đồ thị mặt f với độ bóng s thay đổi theo chiều cao; Plot3D[{f,Hue[s]},{x, xmin, xmax}, {y, ymin, ymax}] vẽ đồ thị mặt có ánh sắc thay đổi theo độ cao. P lot3D[{Sin[xy],Hue[.3]}, {x,0, 3}, {y, 0, 3}, AxesLabel−> {”x”, ”y”, ”z”}, KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 23 P lotLabel→ StyleForm[”f = Sin(xy)”, Section, FontFamily→ V nT ime, FontSize→ 14]]; Hình 3.1 b. Các tuỳ chọn của đồ thị mặt ba chiều. Đồ thị mặt ba chiều cũng có những tuỳ chọn như trong đồ thị hai chiều như: Axes- Label: đặt nhãn cho các trục toạ độ, PlotPoints: số điểm tối thiểu lấy mẫu cho đồ thị, Ticks: điểm đánh dấu trên đồ thị, ... Ta có thể liệt kê các tuỳ chọn và các giá trị mặc định gán sẵn cho các tuỳ chọn đó bằng lệnh: Options[Plot3D] hoặc có thể tìm hiểu chi tiết giá trị của tuỳ chọn của đối tượng đồ thị bằng lệnh Options[đối tượng,tuỳ chọn] hay tỷ mỉ hơn bằng lệnh FullOptions[đối tượng,tuỳ chọn]. Options[P lot3D] {AmbientLight→ GrayLevel[0], AspectRatio→ Automatic,Axes→ True, AxesEdge→ Automatic,AxesLabel→ None,AxesStyle→ Automatic, Background → Automatic,Boxed→ True,BoxRatios→ {1, 1, 0.4}, BoxStyle→ Automatic, ClipF ill→ Automatic, ColorFunction→ Automatic, ColorFunctionScaling → True,ColorOutput→ Automatic, Compiled→ True, DefaultColor → Automatic,DefaultFont :→ $DefaultFont, DisplayFunction :→ $DisplayFunction,Epilog → {}, FaceGrids→ None, FormatType :→ $FormatType,HiddenSurface→ True, ImageSize→ Automatic, Lighting → True, LightSources→ {{{1., 0., 1.}, RGBColor[1, 0, 0]}, {{1., 1., 1.}, RGBColor[0, 1, 0]}, {{0., 1., 1.}, RGBColor[0, 0, 1]}},Mesh → True, MeshStyle→ Automatic, P lot3Matrix→ Automatic, P lotLabel→ None, P lotPoints → 25, P lotRange → Automatic, P lotRegion→ Automatic, P rolog → {}, Shading → True, SphericalRegion→ False, T extStyle :→ $TextStyle,T icks→ Automatic, V iewCenter→ Automatic, V iewPoint → {1.3,−2.4, 2.}, V iewV ertical→ {0., 0., 1.}} g = P lot3D[Sin[x] + Cos[y], {x, 0, 10}, {y, 0, 10}, AxesLabel→ {"dai", "rong", "cao"},DefaultFont → {”V nT ime”, 14}, KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 24 Mesh → False]; Hình 3.2 Options[g,AxesLabel] {AxesLabel→ {dai, rong, cao}} FullOptions[g, P lotRange] {{0., 10.}, {0., 10.}, {−2.07857, 2.09747}} Các tuỳ chọn so với đồ thị hai chiều thì đồ thị ba chiều có bổ sung: - Boxed: Tuỳ chọn của đồ thị ba chiều gồm có hay không vẽ hộp ba chiều. Các giá trị của tuỳ chọn này bao gồm: True_ có vẽ hộp ba chiều, False_ không vẽ hộp ba chiều. Giá trị mặc định của tuỳ chọn là True. P lot3D[Sin[xy], {x, 0,Π}, {y, 0,Π},Boxed→ False]; Hình 3.3 - FaceGrids: Tuỳ chọn của đồ thị ba chiều gồm có (hay không) vẽ các đường lưới trên bề mặt. Đặt các giá trị của tuỳ chọn: FaceGrids → All: Vẽ đường lưới trên tất cả các hướng. FaceGrids → None: Không vẽ đường lưới. FaceGrids → {{dirx, diry, dirz}, ...}: Tuỳ chọn vẽ đường lưới trên từng mặt. Trong đó diri nhận một trong ba giá trị 0, -1, hoặc +1. Giá trị mặc định của tuỳ chọn là None. Thí dụ: P lot3D[Sin[x] + Cos[y], {x, 0, 10}, {y, 0, 10}, AxesLabel→ {”dai”, ”rong”, ”cao”}, DefaultFont→ {”V nT ime”, 14},Mesh→ False, KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 25 FaceGrids→ {{0, 0,−1}, {+1, 0, 0}, {0, 0,+1}}]; Hình 3.4 - Lighting: Là tuỳ chọn của đồ thị ba chiều cho màu cho đồ thị. Các giá trị của tuỳ chọn bao gồm: Lighting → True: Có tô màu cho đồ thị. Lighting → False: Bỏ tô màu cho đồ thị, chỉ có độ xám. Giá trị mặc định của tuỳ chọn là True. - ViewPoint: Tuỳ chọn của đồ thị ba chiều cho ta tuỳ chọn về điểm mà từ đó ta thấy đồ thị. Giá trị mặc định của tuỳ chọn là {1.3,-2.4,2}. Ta có thể đặt lại giá trị của tuỳ chọn bằng cách: ViewPoint → {x,y,z}. Thí dụ: nhìn từ mặt: {0,-2,0}, nhìn từ phía trước và trên xuống: {0.-2,2}, nhìn thẳng từ trên xuống: {0,0,2}, ... Có thể chọn điểm nhìn từ thước lệnh Input\3D View Point Selector. Thí dụ ta có thể thay đổi điểm nhìn đồ thị hàm Sin[x y] như sau: P lot3D[Sin[xy], {x, 0, 3}, {y, 0, 3}, V iewPoint→ {−4.159, 2.732, 2.247}]; Hình 3.5 2.3.2 Đồ thị tham số ba chiều Đồ thị tham số ba chiều được cho bởi các lệnh sau: - ParametricPlot3D[{fx, fy, fz}, {t, tmin, tmax}]: Vẽ đồ thị tham số một đường ba chiều. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 26 Thí dụ đường Lissajous ba chiều: ParametricP lot3D[{Cos[5t], Sin[3t], Sin[t]}, {t, 0, 2Π}]; Hình 3.6 - ParametricPlot3D[{fx, fy, fz}, {t, tmin, tmax}, {u, umin, umax}]: Vẽ đồ thị tham số một mặt ba chiều. ParametricP lot3D[{Sin[t], Cos[t], u},{t, 0, 2Π}, {u, 0, 4}]; Hình 3.7 Hình 3.8 KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 27 - ParametricPlot3D[{{fx, fy, fz}, {gx, gy, gz}, ...}]: Vẽ đồng thời một vài đồ thị trên cùng một hình. ParametricP lot3D[{{Sin[t], Cos[t], t/3}, {Cos[5t], Sin[3t], Sin[t]}},{t,0, 10}, V iewPoint → {1.484,−2.740, 1.319}]; (hình 3.8) 2.3.3 Đồ thị dữ liệu ba chiều. Để vẽ đồ thị dữ liệu ba chiều ta có các lệnh: ListPlot3D[array]: Cho đồ thị dữ liệu của mảng array. ListPlot3D[array,s]: Cho đồ thị dữ liệu của mảng array có độ bóng s. Thí dụ bề mặt g có nhiễu loạn: ListP lot3D[Table[Sin[xy] + Random[Real, {−0.15, 0.15}], {x, 0, (3Π)/2,Π/15}, {y, 0, (3Π)/2,Π/15}]]; Hình 3.9 2.3.4 Đồ thị ba chiều động. Để vẽ đồ thị ba chiều động thì có một chương trình con khác (trong nhóm chương trình con về đồ thị) Graphics‘Animation‘ cho phép thực hiện các khuôn hình "hoạt hoạ". Cácb lệnh của nó như sau: Hình 3.10 Animate[plot,{t, tmin, tmax, dt}]: Vẽ đồ thị hàm plot và thực hiện luôn trình chiếu các khuôn hình. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 28 Lệnh này có các tuỳ chọn: Frames số khuôn hình được vẽ, giá trị mặc định là 24; Closed giá trị mặc định là False. ShowAnimation[{g1, g2, ...}]: Trình chiếu các khuôn hình "hoạt hoạ" dãy {gi}. Trong nhóm này có nhiều dạng lệnh như SpinShow[graphics] gồm các tuỳ chọn như: Frames số khuôn hình được vẽ, mặc định là 24; SpinOrigin xác định điểm nhìn, giá trị mặc định là {0,0,1.5}; SpinRange góc quay đồ thị, giá trị mặc định là {0,360}, ... Thí dụ sau vẽ đồ thị tham số g với điểm nhìn mặc định sau đó quay toàn bộ trục toạ độ từ 0 độ đến 180 độ lấy 10 khuôn hình: << Graphics‘Animation‘ g = ParametricP lot3D[{x,Cos[t]Sin[x], Sin[t]Sin[x]}, {x,−Π,Π}, {t, 0, 2Π}, Axes → False,Boxed → False];SpinShow[g, Frames → 10, SpinRange → {0◦, 180◦}]; (hình 3.10) 2.4 Ứng dụng vẽ đồ thị vào giảng dạy và nghiên cứu vật lý. Mathematica là ngôn ngữ lập trình giải tích không chỉ được biết đến như là một ngôn ngữ có khả năng tính toán rất mạnh mẽ và giao diện thân thiện mà còn được biết đến nhờ phạm vi ứng dụng phong phú của nó. Mathematica cho phép ta có thể tính toán, mô phỏng các bài toán trong tất cả các lĩnh vực khoa học kể cả trong lĩnh vực tài chính. Với khả năng đồ thị siêu việt, việc ứng dụng phần mềm Mathematica vào giảng dạy và nghiên cứu vật lý là rất cần thiết. Sau đây ta sẽ xét một số ứng dụng của Mathematica trong lĩnh vực này. 2.4.1 Bài toán giao thoa sóng cơ học. Bài toán: Cho hai sóng cơ học có các phương trình sóng tương ứng. Hãy vẽ các sóng này và sóng tổng hợp của chúng trên cùng một giản đồ. Bài giải: Ta xét các sóng thành phần là các xung sóng Gauss chạy dọc theo một sợi dây từ hai đầu lại. Để giải bài toán này ta dùng ngôn ngữ lập trình Mathematica để vẽ hai sóng thành phần và sóng tổng hợp trên cùng một đồ thị (sóng tổng hợp sẽ có nét vẽ đậm hơn). Chương trình vẽ trên Mathematica: Hình 4.1 Table[P lot[{Exp[−16(x− 1)2] + 1.5Exp[−(x+ t)2], 1.5Exp[−(x+ t)2] + 3, KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 29 Exp[−16(x− t)2] + 5}, {x,−3, 3}, P lotStyle→ {{Thickness[0.008]}, {Thickness[0.005]}, {Thickness[0.005]}}, P lotRange→ {0, 6.25}, Axes→ False, Frame→ True, FrameT icks→ None, P lotPoints → 40], {t,−2, 3.5, 1}]; (hình 4.1) 2.4.2 Bài toán chuyển động của vật ném xiên. Bài toán: Một vật có khối lượng m được ném đi với tốc độ v0 hợp với phương nằm ngang một góc θ0. Hiệu ứng cản của không khí có thể được mô tả bằng lực cản ~FD. Lực này tỷ lệ với bình phương tốc độ, được biểu diễn bằng biểu thức: ~FD = −mkv~v Trong biểu thức trên v và ~v là tốc độ và vận tốc của vật, hằng số cản k = 5.2 × 10−3m−1. Hãy vẽ đồ thị mô tả chuyển động của vật trong trường hợp v0 = 45, θ0 = 60 (các đồ thị phải mô tả được quỹ đạo của vật khi không có lực cản của không khí). Bài giải: Phương trình chuyển động của vật được biểu diễn dưới dạng các phương trình vi phân sau: d2x dt2 = − √( d2x dt2 ) + ( d2y dt2 )( dx dt ) d2y dt2 = −k √( d2x dt2 ) + ( d2y dt2 )( dy dt ) − g trong đó x, y là các toạ độ tương ứng trên các trục, g là gia tốc trọng trường. Khi không tính đến sức cản của không khí, quỹ đạo của vật được xác định bằng hàm số: y = vy0 vx0 x− 1 2 g vx02 x2 trong đó vị trí ban đầu được chọn là gốc toạ độ và các thành phần vận tốc ban đầu được xác định: vx0 = v0cosθ0 vy0 = v0sinθ0 Tầm xa được xác định: R = 2vx0vy0 g Chương trình trên Mathematica: KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 30 Clear[vo, g, k,A, vxo, vyo,R,B, tmax, to, p, n, x, y]; k = 5.210−3; g = 9.81; vo = 45; A = Π/3; vxo = voCos[A]; vyo = voSin[A]; R = (2vxovyo)/g; B = ((vyo)2)/2g; to = (2vyo)/g; p = P lot[(vyo/vxo)x− 1/2g/(vxo2)x2, {x, 0, R}, P lotRange→ {0, B},DisplayFunction→ Identity]; n = NDSolve[{x′′[t] == −k √ (x′[t])2 + (y′[t])2x′[t], y′′[t] == −k √ (x′[t])2 + (y′[t])2y′[t]− g, x[0] == 0, y[0] == 0, x′[0] == vxo, y′[0] == vyo}, {x, y}, {t, 0, to}]; x[t_] = x[t]/.n[[1]]; y[t_] = y[t]/.n[[1]]; tmax = t/.F indRoot[y[t] == 0, {t, to}]; Do[Show[p,Graphics[{AbsolutePointSize[7], P oint[{x[(tmax/16)i], y[(tmax/16)i]}]}], ParametricP lot[{x[t], y[t]}, {t,0, (tmax/16)i+ 0.0001}, P lotStyle→ Dashing[{0.02, 0.02}],DisplayFunction→ Identity], P lotRange → {{−0.01, R}, {−0.01, 1.02B}}, Axes → True, AxesLabel→ {”x(t)”, ”y(t)”}, AspectRatio→ Automatic, DisplayFunction→ $DisplayFunction], {i, 0, 16}]; Hình 4.2 2.4.3 Ứng dụng nghiên cứu vật lý. a. Trong bài toán khảo sát cấu trúc vùng năng lượng của Silic trong vật lý chất rắn. Người ta thấy rằng vùng hoá trị của Silic có các vùng con chồng lên nhau. Nếu xét theo hai KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 31 phương [111] và [100] có ba nhánh với mặt đẳng năng có dạng (khi đã lấy trung bình theo góc): E1(k) = E(0) − ~ 2k2 2m [ A− √ B2 + C2 5 ] E2(k) = E(0)− ~ 2k2 2m [ A+ √ B2 + C2 5 ] E3(k) = E(0) −4ES − ~ 2k2 2m A trong đó A = 4.1; B = 1.6; C = 3.3; m = 9.1 10−31 kg. Ta vẽ được cấu trúc vùng năng lượng của Silic theo chương trình trên Mathematica: Clear[A,B,C1,~,m,E0,H1, E1, E2, E3, k]; A = 4.1; B = 1.6; ~ = 1.0610−34; m = 9.110−31; C1 = 3.3; 4Es = 0.035 ∗ 1.6 ∗ 10−19; E0 = 2.4 ∗ 10−19; E1 = ( E0− (~2)/(2m) ( A−√B2 + C12/5) (108k)2) /10−19; E2 = ( E0− (~2)/(2m) ( A + √ B2 + C12/5 ) (108k) 2 ) /10−19; E3 = ( E0−4ES − ~2/(2m)A(108k)2 ) /10−19; P lot[{E1, E2, E3}, {k,−15, 15}, P lotStyle→ {RGBColor[0, 0, 1], RGBColor[1, 0, 0], GrayLevel[0.2]}]; Hình 4.3 Từ đồ thị ta rút ra được nhận xét nhánh 1 và nhánh 2 có cực đại trùng nhau và nằm ở tâm vùng Brillouin, cực đại nhánh thứ 3 cũng ở tâm vùng Brillouin nhưng hạ thấp xuống một khoảng 4ES = 0.035 ev do tương tác Spin - quỹ đạo.[2] KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 32 b. Truyền sóng trong linh kiện bán dẫn. Sóng ánh sáng lan truyền trong linh kiện dẫn sóng quang với các mode quang học khác nhau. Mode quang học là cách thức phân bố theo không gian của năng lượng quang trong một hay nhiều toạ độ. Xét trong trường hợp sóng điện ngang (TE) là sóng bản phẳng truyền theo trục z ta có thể giả thiết Ex và Ez bằng không. Mặt khác Ey không phụ thuộc vào y và z vì theo các trục đó các lớp vật liệu là vô hạn nên không có sự phản xạ, không tạo ra sóng đứng. Thành phần Ey phụ thuộc vào x: Ey =  c′e−qx 0 ≤ x ≤ ∞ c′ [Cos(hx)− (q/h)Sin(hx)] −dg ≤ x ≤ 0 c′ [Cos(hdg) + (q/h)Sin(hdg)] ep(x+dg) −∞ ≤ x ≤ −dg Trong đó p, h, q được xác định: q = √ β2 − n12k2 h = √ k2n22 − β2 p = √ β2 − n32k2 k = ω c Nếu chọn bước sóng dg = λ0 = 8.10 −7 (m) thì ta có sự phụ thuộc năng lượng quang Ey vào x trong các mode khác nhau như sau: - Trường hợp 1: β < n1k ta chọn β = 0, 6.10 7 Thiết kế chương trình trên Mathematica: Clear[h, p, q, k, dg, n1, n2, n3, β,E1, E2, E3, P1, P2, P3]; dg = 810−7; n2 = 3.6; n3 = 3.59; k = (2Π)/dg; β = 0.6107; p = √−β2 + n32k2; h = √ k2n22 − β2; q = √−β2 + n12k2; E1 = Cos[10−7qx]; E2 = Cos[10−7hx]; E3 = Cos[hdg]Cos[p(10−7x + dg)]; P1 = P lot[E1, {x, 0, 10},DisplayFunction→ Identity]; P2 = P lot[E2, {x,−dg/10−7, 0},DisplayFunction→ Identity]; P3 = P lot[E3, {x,−15,−dg/10−7},DisplayFunction→ Identity]; Show[{P1, P2, P3}, AxesLabel → {”x”, ”E”},DisplayFunction → $DisplayFunction]; KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 33 Ta thu được đồ thị sự phụ thuộc Ey vào x (mode a) (hình 4.4): Hình 4.4 - Trường hợp 2: n1k < β < n3k ta chọn β = 10 7 Hình 4.5 Thiết kết chương trình trên Mathematica: Clear[h, p, q, k, dg, n1, n2, n3, β,E1, E2, E3, P1, P2, P3]; dg = 810−7; n2 = 3.6; n3 = 3.59; k = (2Π)/dg; β = 107; p = √−β2 + n32k2; h = √ k2n22 − β2; q = √ β2 − n12k2; E1 = e−10 −7qx; E2 = Cos[10−7hx]− (q/h)Sin[10−7hx]; E3 = (Cos[hdg] + (q/h)Sin[hdg])Cos[p(10−7x+ dg)]; P1 = P lot[E1, {x, 0, 10},DisplayFunction→ Identity]; KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 34 P2 = P lot[E2, {x,−dg/10−7, 0},DisplayFunction→ Identity]; P3 = P lot[E3, {x,−15,−dg/10−7},DisplayFunction→ Identity]; Show[{P1, P2, P3}, AxesLabel → {”x”, ”E”}, DisplayFunction→ $DisplayFunction]; Ta thu được đồ thị sự phụ thuộc Ey vào x (mode b) (hình 4.5): - Trường hợp 3: n3k < β < n2k ta chọn β = 2, 9.10 7 Thiết kết chương trình trên Mathematica: Clear[h, p, q, k, dg, n1, n2, n3, β,E1, E2, E3, P1, P2, P3]; dg = 810−7; n2 = 3.6; n3 = 3.59; k = (2Π)/dg; β = 2.9107; p = √ β2 − n32k2; h = √−k2n22 + β2; q = √ β2 − n12k2; E1 = e−10 −7qx; E2 = Cos[10−7hx]− (q/h)Sin[10−7hx]; E3 = (Cos[hdg] + (q/h)Sin[hdg])ep(10 −7x+dg); P1 = P lot[E1, {x, 0, 1},DisplayFunction→ Identity]; P2 = P lot[E2, {x,−dg/10−7, 0},DisplayFunction→ Identity]; P3 = P lot[E3, {x,−100,−dg/10−7},DisplayFunction→ Identity]; Show[{P1, P2, P3}, AxesLabel → {”x”, ”E”},DisplayFunction → $DisplayFunction]; Ta thu được đồ thị sự phụ thuộc Ey vào x (mode c) (hình 4.6): Hình 4.6 - Trường hợp 4: n2k < β ta chọn β = 2, 95.10 7 Thiết kết chương trình trên Mathematica: Clear[h, p, q, k, dg, n1, n2, n3, β,E1, E2, E3, P1, P2, P3]; dg = 810−7; KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 35 n2 = 3.6; n3 = 3.59; k = (2Π)/dg; β = 2.95107; p = √ β2 − n32k2; h = √ k2n22 − β2; q = √ β2 − n12k2; E1 = e−10 −7qx; E2 = Cos[10−7hx]− (q/h)Sin[10−7hx]; E3 = (Cos[hdg] + (q/h)Sin[hdg])ep(10 −7x+dg); P1 = P lot[E1, {x, 0, 1},DisplayFunction→ Identity]; P2 = P lot[E2, {x,−dg/10−7, 0},DisplayFunction→ Identity]; P3 = P lot[E3, {x,−12,−dg},DisplayFunction→ Identity]; Show[{P1, P2, P3}, AxesLabel → {”x”, ”E”},DisplayFunction → $DisplayFunction]; Ta thu được đồ thị sự phụ thuộc Ey vào x (mode d): Hình 4.7 Từ đồ thị, người ta rút ra được một số kết luận quan trọng làm tiền đề cho việc khảo sát quá trình truyền tín hiệu quang như: - Mode (d) trong trường hợp 4 không có ý nghĩa vật lý. - Mode (c) trong trường hợp 3 là sóng được dẫn truyền, là sóng ngang của điện trường bậc 0 và bậc 1. - Mode (b) trong trường hợp 2 giảm theo exp khi ra ngoài nhưng tồn tại theo hàm sin trong đế. Nó không có lợi trong việc truyền tín hiệu, nhưng rất lợi trong việc dùng để tiếp nối. - Mode (a) trong trường hợp 1không dẫn truyền được trong linh kiện sóng. Như vậy chỉ có những giá trị β nằm trong khoảng kn3 < β < kn2 mới ứng với các mode có thể dẫn truyền được trong linh kiện dẫn sóng.[1] c. Khảo sát các hàm phức tạp không thể mô tả dưới dạng các biểu thức giải tích tường KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 36 minh. Đối với các hàm loại này, ta khó có thể nhận diện được sự phụ thuộc của hàm vào một biến nào đó. Lúc này, việc vẽ đồ thị biểu diễn sự phụ thuộc của hàm số vào một biến sẽ là giải pháp tối ưu giúp ta thấy được mối quan hệ này. Ví dụ trong bài toán khảo sát độ nén biên độ trực giao bậc cao Hillery của biexciton Qϕ,k theo thời gian khi ban đầu exciton ở trạng thái kết hợp phi tuyến lẻ, photon ở trạng thái kết hợp: Qϕ,k = 2k 2r 2(k−1) m k!Lk(−r2m)− r2km × r {(r2x + sinh2(sx)) tanh(r) + 0, 5sinh(2sx)cos [2θx + χx + 2(k − 1)θm − 2ϕ] −r2xcos [2θγ + 2θx + 2(k − 1)θm − 2ϕ] } Ta khảo sát sự phụ thuộc của hàm Qϕ,k vào biến r (hình 4.8): Hình 4.8 Chương trình trên Mathematica: Clear[rx, r, sx,Θx,Θγ, ϕ, k,Θm,χx]; rx = 0.4; sx = 0.5; r; ϕ = Π/2; Θm = Θx = Θγ = χx = χγ = 0; rm = 2; k = 1; G = r((rx2 + Sinh[sx]2)Tanh[r] + 0.5Sinh[2sx]Cos[2Θx+ χx+ 2(k − 1)Θm − 2ϕ]− rx2Cos[2Θγ + 2Θx + 2(k − 1)Θm− 2ϕ]); Qϕk = [2k 2rm2(k−1)G]/[k!LaguerreL[k,−rm2]− rm2k]; S = Collect[Qϕk, r]; Print[StringForm[”rx = “; sx = “; k = “;ϕ = “;Θm = Θx = Θγ = χx = χγ = “; rm = “; ”, 0.4, 0.5, 1,Π/2, 0, 2]]; Fϕ[q] = P lot[N [S], {r, 0, 4}, AxesLabel→ {”r”, ”Qϕk”}, P lotStyle→ {{Thickness[0.01], GrayLevel[0.2]}}] KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 37 Như vậy từ đồ thị ta có thể thấy rõ được sự phụ thuộc của Qϕ,k vào r. Ta cũng có thể sử dụng chương trình này để khảo sát sự phụ thuộc của Qϕ,k vào các đại lượng khác như rx, sx... bằng một số thao tác thay đổi biến. 38 Phần 3 KẾT LUẬN Qua thời gian học tập, tìm tòi, nghiên cứu, tôi đã hoàn thành kháo luận tốt nghiệp theo đúng mục tiêu đã đề ra. Qua quá trình thực hiện đề tài khoá luận tốt nghiệp đã giúp tôi có được một số kết quả sau: - Hình thành cho bản thân một số kỹ năng vẽ đồ thị hai chiều, ba chiều, tĩnh, động bằng phần mềm Mathematica. Nắm vững các cú pháp để có thể vẽ đồ thị theo ý mình. - Đã có thể vận dụng các kỹ năng đó để vẽ được các đồ thị trong một số bài toán trong vật lý, đặc biệt là các hàm không thể mô tả rõ ràng mối liên hệ giữa các đại lượng vật lý bằng các biểu thức giải tích đơn giản. Khả năng ứng dụng việc vẽ đồ thị vào quá trình giảng dạy cũng như nghiên cứu vật lý là rất lớn. Tuy nhiên để đạt được hiệu quả cao thì cần phải tìm hiểu sâu hơn không chỉ khả năng vẽ đồ thị của Mathematica mà còn cần nghiên cứu các khả năng khác như tính toán với biến bằng chữ, biến bằng số, hoặc cao hơn là lập trình trên Mathematica. Do giới hạn về khả năng và thời gian không cho phép, tôi chỉ dừng lại ở việc nghiên cứu khả năng đồ hoạ của Mathematica. Nếu có thời gian và đủ điều kiện chúng tôi rất muốn được tìm hiểu sâu hơn về ngôn ngữ lập trình giải tích này. KLTN: Sử dụng phần mềm Mathematica để vẽ đồ thị Phạm Thị HạnhThảo 39 TÀI LIỆU THAM KHẢO [1]. Phùng Hồ, Giáo trình vật lý điện tử, Nhà xuất bản Khoa học và Kỹ thuật Hà Nội, 2001. [2]. Phùng Hồ, Phan Quốc Phô, Giáo trình vật lý bán dẫn, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội, 2001. [3]. Nguyễn Ngọc Dũng, Sử dụng ngôn ngữ lập trình Mathematica để tính toán tự động các quá trình vật lý trong điện động lực học lượng tử, Luận văn thạc sĩ khoa học, Huế, 2003. [4]. Vũ Ngọc Tước, Ngôn ngữ lập trình Mathematica 3.0, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội, 2001.

Các file đính kèm theo tài liệu này:

  • pdfmathematica.D.Hien.8381.PDF