Bản thân tôi đã được tiếp cận với những kiến thức chuyên sâu về các môn học trong toán ứng dụng, đặc biệt là những ứng dụng công nghệ thông tin để giải quyết các bài toán liên quan trong
Trang 1LỜI CẢM ƠN
Luận văn này là kết quả sau hai năm học tập và nghiên cứu tại Trường Đại học Bách Khoa Hà Nội Bản thân tôi đã được tiếp cận với những kiến thức chuyên sâu về các môn học trong toán ứng dụng, đặc biệt là những ứng dụng công nghệ thông tin để giải quyết các bài toán liên quan trong lý thuyết lẫn thực tiễn giảng dạy
Với tình cảm chân thành, tác giả xin bày tỏ lòng biết ơn đến quý thầy cô đã tham gia giảng dạy lớp cao học khóa 2013B Toán tin, cùng các phòng ban liên quan của Viện đào tạo sau đại học Bách Khoa Hà Nội, các đồng nghiệp, bạn bè và gia đình đã tận tình giúp đỡ, tạo điều kiện cho tác giả trong qua trình học tập nghiên cứu
Đặc biệt, tác giả xin bày tỏ lòng biết ơn sâu sắc tới GS TSKH Lê Hùng Sơn, người đã tận tình chỉ dẫn, giúp đỡ tác giả nghiên cứu và hoàn thành luận văn này
Mặc dù bản thân đã rất cố gắng, nhưng chắc chắn luận văn không thể tránh khỏi những thiết sót Tác giả rất mong nhận được những ý kiến đóng góp bổ sung của quý thầy cô giáo cũng như các đồng nghiệp để luận văn được hoàn thiện hơn nữa
Xin chân thành cảm ơn!
Hà Nội, ngày 10 tháng 03 năm 2016
Tác giả luận văn
Phạm Thái Hoàng
Trang 3MỤC LỤC
Trang
Lời cảm ơn 1
Danh mục các chữ viết tắt 2
MỞ ĐẦU 5
I Lý do chọn đề tài 5
II Mục đích, đối tượng, phạm vi nghiên cứu của luận văn 6
III Các luận điểm cơ bản và đóng góp mới của tác giả 6
IV Phương pháp nghiên cứu 7
CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM MATHEMATICA 8
1.1 Giới thiệu về phần mềm Mathematica 8
1.2 Các phép tính toán học với số, biểu thức và hàm 10
1.2.1 Tính toán số 10
1.2.2 Tính toán với biểu thức 13
1.2.2.1 Các phép tính đại số trên các biểu thức 13
1.2.2.2 Đặt tên và tính toán các biểu thức 14
1.2.3 Tính toán với hàm 20
1.2.3.1 Một số hàm số cơ bản có sẵn 20
1.2.3.2 Định nghĩa các hàm 21
1.3 Vẽ đồ thị các hàm, các biểu thức 24
CHƯƠNG 2: ỨNG DỤNG CỦA MATHEMATICA TRONG ĐẠI SỐ VÀ HÌNH HỌC 29
2.1 Số nguyên tố 29
2.2 Giải phương trình và hệ phương trình 30
2.2.1 Giải phương trình 30
2.2.2 Giải hệ phương trình 36
2.3 Phép tính tích phân 40
2.3.1 Phép tính giới hạn 40
Trang 42.3.2.1 Đạo hàm của hàm và biểu thức 41
2.3.2.2 Tiếp tuyến 43
2.3.2.3 Dùng đạo hàm để vẽ đồ thị hàm số 44
2.2.3 Phép tính tích phân 46
2.2.3.1 Tích phân bất định 46
2.2.3.2 Tích phân xác định 47
2.4 Vẽ đồ thị 49
2.4.1 Vẽ đồ thị trên mặt phẳng 49
2.4.1.1 Vẽ đồ thị hàm xác định từng khúc 51
2.4.1.2 Vẽ đồ thị hàm tham số 51
2.4.2 Vẽ đồ thị trong không gian ba chiều 53
2.4.2.1 Lệnh Plot3D 53
2.4.2.2 Lệnh ListPlot3D 55
2.4.3 Vẽ đồ thị dạng f(x,y) = 0 và f(x,y,z) = 0 55
2.4.4 Vẽ miền đúng của bất đẳng thức 59
CHƯƠNG 3: GIẢI MỘT SỐ BÀI TOÁN VỀ SỐ NGUYÊN TỐ VỚI SỰ TRỢ GIÚP CỦA PHẦN MỀM MATHEMATICA 62
3.1 Kiến thức cơ bản về số nguyên tố 62
3.1.1 Định nghĩa 62
3.1.2 Tính chất 62
3.1.3 Cách nhận biết một số nguyên tố 62
3.1.4 Phân tích một số ra thừa số nguyên tố 62
3.1.5 Số các ước số và tổng các ước số của một số 62
3.1.6 Số nguyên tố cùng nhau 63
3.1.7 Sàng Ơ-RA-TÔ-XTEN (Euratosthène) 63
3.2 Giải một số bài toán về số nguyên tố thường gặp trong chương trình THCS với sự trợ giúp của Mathematica 64
KẾT LUẬN VÀ KIẾN NGHỊ 79
TÀI LIỆU THAM KHẢO 81
Trang 5PHẦN MỞ ĐẦU
I Lý do chọn đề tài:
Đổi mới phương pháp dạy học đã và đang là yêu cầu trọng tâm và thường xuyên của các cơ sở giáo dục trong hệ thống giáo dục nước ta Phương pháp dạy học được đổi mới theo định hướng: “lấy học sinh làm trung tâm, tích cực hoá năng lực hoạt động học tập của học sinh”
Để đáp ứng nhu cầu của tình hình mới, thực hiện có hiệu quả công tác giảng dạy; người giáo viên không ngừng nghiên cứu học hỏi và vận dụng vào thực tế Đặc biệt với sự phát triển nhanh chóng của công nghệ thông tin (CNTT) đã và đang được ứng dụng sâu rộng vào tất cả các lĩnh vực trong cuộc sống Đặc biệt, đối với ngành giáo dục và đào tạo, CNTT có tác dụng mạnh mẽ, làm thay đổi nội dung, phương pháp dạy và học CNTT là phương tiện để tiến tới “xã hội học tập” CNTT trở thành công cụ hỗ trợ đắc lực cho công tác dạy học nhất là theo định hướng đổi mới hiện nay
Là một giáo viên dạy Toán của trường THCS Minh Khai, tôi nhận thấy chương trình toán THCS đã giúp HS giải quyết nhiều vấn đề cơ bản trong thực tế Trong chương trình toán THCS nhiều dạng toán cơ bản mang tính áp dụng cao, nó là cơ sở
để ứng dụng giải quyết các bài toán liên quan Trong đó có mô ̣t da ̣ng toán liên quan đến số nguyên tố có thể nói là rất khó đối với ho ̣c sinh THCS Trên thực tế kiến thức
về số nguyên tố chỉ dừng la ̣i ở khái niê ̣m chứ không đi sâu vì thế khi gă ̣p mô ̣t bài toán khó về số nguyên tố nhất là đối tượng HS giỏi la ̣i gă ̣p rất nhiều thì HS không có phương hướng để giải quyết
Qua nhiều năm giảng dạy, bản thân tôi cũng đã không khỏi trăn trở làm thế nào để HS có thể hiểu được và nắm vững các da ̣ng toán liên quan đến số nguyên tố
để có phương pháp giải quyết Tôi nhận thức được rằng, việc ứng dụng CNTT phục
vụ cho việc đổi mới phương pháp dạy học là một trong những phương pháp tích cực nhất, hiệu quả nhất trong việc đổi mới phương pháp dạy học và chắc chắn sẽ được sử dụng rộng rãi trong nhà trường phổ thông trong một vài năm tới Vì vậy, tôi đã mạnh
Trang 6Trong rất nhiều các phần mềm được sử dụng nhiều như: lập trình Pascal, lập trình C, C#, Visual Basic, Java, đều được đưa vào giảng dạy trong các nhà trường Tuy nhiên, tôi lựa chọn một phần mềm mà nó có trợ giúp rất lớn trong nhiều lĩnh vực khác nhau nhưng chưa được phổ biến hiện nay ở nước ta, đó là phần mềm toán học Mathematica
Hiện nay, Mathematica là một ngôn ngữ lập trình cấp cao đang dần được sử dụng và giảng dạy tại nhiều trường học, là công cụ hỗ trợ trong việc đổi mới phương pháp giảng dạy ở nhiều môn học: Toán học, Vật lý, Hóa học, Sinh học, Công nghệ, Toán kinh tế, Tối ưu hóa, Bảo mật thông tin,
Một khó khăn đối với nghiên cứu phần mềm này là số đầu sách viết bằng Tiếng Việt về Mathematica còn hạn chế, ít có trên thị trường tạo khó khăn khi nghiên cứu
và học tập
II Mục đích, đối tượng, phạm vi nghiên cứu của luận văn
Luận văn sẽ tập trung giới thiệu, nghiên cứu các khái niệm cơ bản và ứng dụng của Mathematica để giải quyết những bài toán về số nguyên tố cơ bản nằm trong chương trình THCS
Những khái niệm trong toán học cơ bản như các phép tính số học đối với biểu thức và hàm số, giải phương trình và bất phương trình, giải hệ phương trình, rất hay gặp nhưng trong thực tế có những trường hợp ta mất rất nhiều thời gian và công sức để giải quyết, thậm chí khó có thể ra được kết quả Tuy nhiên, phần mềm toán học Mathematica sẽ cho ta đáp án nhanh nhất và chính xác nhất có thể
Ngoài ra, khi chuẩn bị bài tập về số nguyên tố để học sinh THCS có thể rèn luyện kỹ năng thì Mathematica là một công cụ hỗ trợ đắc lực cho giáo viên khi chuẩn
bị đề bài và kiểm tra kết quả Với ứng dụng này thì Mathematica là một trợ giúp không hề nhỏ cho giáo viên trong công tác giảng dạy
III Các luận điểm cơ bản và đóng góp mới của tác giả
Trên thực tế, luận văn chỉ trình bày các dạng bài toán quen thuộc về số nguyên
tố và ứng dụng của Mathematica khi giải quyết các bài toán đó Tuy nhiên, tác giả
Trang 7cũng chỉ ra được thêm các phương pháp để xử lý nhanh các bài toán liên quan và để Mathematica là công cụ đắc lực khi thay đổi đề toán
IV Phương pháp nghiên cứu
- Tham khảo và dịch các tài liệu tiếng Anh
- Tìm hiểu giáo trình cơ bản được học
- Tìm hiểu qua thực tế giảng dạy ở trường THCS Minh Khai, Quận Bắc Từ Liêm, Hà Nội
- Sáng tác các bài tập và xây dựng giáo án giảng dạy
- Tổng hợp và trình bày
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM MATHEMATICA
1.1 GIỚI THIỆU VỀ PHẦN MỀM MATHEMATICA
Phần mềm tính toán Mathematica lần đầu tiên được hãng Wolfram Research phát hành vào năm 1988 Đây là một hệ thống phần mềm làm toán nhờ máy tính, nó bao gồm các tính toán bằng ký hiệu, tính toán bằng số, vẽ đồ thị và là ngôn ngữ lập trình Lần đầu tiên khi version 1 của Mathematica được phát hành, mục đích chính của phần mềm này là đưa vào sử dụng cho các ngành khoa học vật lý, công nghệ và toán học, nhưng cùng với thời gian Mathematica trở thành phần mềm quan trọng trong nhiều lĩnh vực khoa học khác
Ngày nay Mathematica không những được sử dụng trong các ngành khoa học
tự nhiên như vật lý, sinh học, toán học, hóa học, công nghệ mà nó đã trở thành một phần mềm quan trọng của các ngành khoa học xã hội cũng như kinh tế Trong công nghệ ngày nay người ta đã sử dụng Mathematica trong công tác thiết kế Trong kinh
tế Mathematica lại là công cụ mạnh để tiến hành mô hình hóa các bài toán kinh tế phức tạp Mathematica cũng là một trong các công cụ quan trọng trong khoa học máy tính (computẻ science) cũng như trong lĩnh vực phát triển phần mềm Tuy phần quan trọng của Mathematica nằm trong lĩnh vực khoa học kỹ thuật nhưng nó cũng là một công cụ mạnh trong lĩnh vực giáo dục đào tạo Trong số hơn 100.000 người sử dụng Mathematica có 28% là các kỹ sư, 21% các nhà khoa học, 20% các nhà vật lý, 12% các nhà toán học, 12% các nhà doanh nghiệp, các nhà khoa học xã hội và nhân văn
Số người sử dụng Mathematica ngày càng tăng Theo số liệu gần đây tất cả các công
ty có trong Fortune 50, hầu hết 15 bộ chủ chốt của chính phủ Hoa Kỳ và 50 trường đại học lớn nhất thế giới sử dụng Mathematica Có nhiều xuất bản định kỳ và khoảng
200 quyển sách liên quan đến Mathematica đã được công bố
Bản thân Mathematica được coi là một hệ thống đại số máy tính tiện lợi cho nhiều đối tượng sử dụng khác nhau Mathematica có nhiều version do liên tục được cải tiến và hoàn thiện: 1.2, 2.0, 2.2, 3.0, 4.0, … và đến nay thì phiên bản 10.0 đã ra đời nhưng phiên bản 8.0 và 9.0 vẫn được sử dụng nhiều
Một số quy tắc cơ bản khi sử dụng phần mềm Mathematica:
Trang 9- Mathematica phân biệt chữ hoa chữ thường, các hàm của nó đều bắt đầu bằng chữ hoa
- Các biến đi theo hàm đều được đặt trong ngoặc vuông, cú pháp hình thức như sau:
Hàm[expr]
Ví dụ: Cos[x], Sin[x]
- Để thực hiện một câu lệnh, ta dùng tổ hợp phím “Shift + Enter”
- Để kết thúc một câu lệnh ta đặt dấu chấm phẩy (;), nếu không có dấu (;) thì kết
quả sẽ được hiển thị bên dưới
- Cần phân biệt các dấu [], [[]], {}, ()
+ Cặp ngoặc () dùng để ngoặc các biểu thức toán học
+ Cặp ngoặc [] dùng để chứa các đối số, biến số của lệnh, của hàm
+ Cặp ngoặc {} dùng để liệt kê các miền cho đối số, liệt kê các công việc dùng cho các mảng hoặc ma trận
- Lệnh N[expr] dùng để hiện thị kết quả thành số thập phân Ví dụ: nếu bạn
gõ Cos[1] thì kết quả hiển thị chỉ là Cos[1], nếu bạn gõ N[Cos[1],6] thì kết quả sẽ
là 0.540302
- Không được chạy nhiều chương trình cùng một lúc vì các biến vẫn còn lưu giá trị của nó, khi đó kết quả của bạn sẽ bị sai, để khắc phục, bạn chỉnh lại như
sau Evaluation/Quit Kernel/Local
- Cách đặt biến bình thường như a, b, c, x, y, z, …, không được đặt XY_a, XY-a,
không được dùng các chữ cái sau để đặt tên biến C, D, E, I, N
- Tổ hợp Ctrl + K để tìm các hàm có tên giống nhau ở phần đầu
- Lệnh ?Int* để tìm tất cả các hàm bắt đầu bằng “Int”, tương tự với ?*Q hay ?*Int*
- Cần phân biệt List và Matrix trong Mathematica Nếu viết {1,2,3,4} thì đây là một List gồm 4 phần tử, còn nếu viết {{1},{2},{3},{4}} thì đây là một matrix 4 dòng 1 cột, đối với 1 List thì không thể dùng hàm chuyển vị Transpose được, tuy nhiên bạn có
thể sử dụng các phép toán ma trận giữa Matrix và List, kết quả vẫn đúng như khi tính toán giữa các ma trận
Trang 10Ví dụ:
x:=1 là lệnh gán giá trị 1 cho hằng số x
x=1 là lệnh gán giá trị 1 cho biến x (x có thể thay đổi giá trị trong khi thực hiện chương trình)
x==1 là so sánh giữa các giá trị vế trái x có bằng giá trị vế phải là 1 hay không
1.2 Các phép tính toán học với số, biểu thức và hàm
- Thực hiện cùng lúc phép tính nhân, chia, và lũy thừa:
In[2]:= 2.9/8.4^2 Out[2]= 0.0410998
Dấu cách (space) trong Mathematica cũng được sử dụng như dấu nhân
Ví dụ: Int[3]:= 2 4 5
Out[3]= 40
Trang 11- Cho kết quả chính xác nếu dùng dấu ngoặc đơn để biểu diễn biểu thức số học
In[4]= (3 + 5) ^ 2 – 3 (2 + 1) Out[4]= 55
b) Các toán tử logic: Mathematica cho phép sử dụng các phép so sánh như trong
toán học Khi so sánh Mathematica sẽ trả lời đúng (True) hay sai (False)
Các toán tử And và Or được sử dụng như sau:
Or[bt1,bt2,…] hoặc(bt1|| bt2||…): Cho True nếu một trong các biểu thức
cóTrue, False nếu tất cả các biểu thức đềuFalse
And[bt1, bt2,…] hoặc(bt1&& bt2&& ): Cho True nếu tất cả các biểu
thức đềuTrue, False nếu một trong các biểu thứcFalse
Xor[bt1, bt2,…]: Cho True nếu có một số lẻ các biểu thứcTrue, False
nếu có một số chẵn các biểuthức True
If[test, t, f]: Cho giá trị là t nếu test nhận giá trịTrue, ngược lại cho giá
trị f
LogicalExpand[btL]: Khai triển biểu thức Logic
Trang 12ta sẽ nhận được kết quả 3.66666666666666…Đối với Mathematica, khi nói về số hữu
tỷ là nói về phân số Do đó, kết quả sau các phép tính trong Mathematica vẫn là số hữu tỷ
Vậy, chúng ta sử dụng lệnh N[…] hay //N trong những trường hợp
Mathematica cho ta kết quả mà trong những phần mềm khác không thể tính được
Trang 131 2.2 Tính toán với biểu thức
Một điểm mạnh của Mathematica là thực hiện biểu diễn các phép tính đại số đối với một biểu thức, chẳng hạn như: khai triển, phân tích…
1.2.2.1 Các phép tính đại số trên các biểu thức
/ hoặc // : thế giá trị
Expand[biểu thức]: Khai triển biểu thức
ExpandAll[biểu thức]: Khai triển tất cả các biểu thức con trong biểu thức ExpandDenominator[biểu thức]: Khai triển mẫu thức
ExpandNumerator[biểu thức]: Khai triển tử thức
Denominator[biểu thức]: Cho giá trị của mẫu thức
Numerator[biểu thức]: Cho giá trị của tử thức
Apart[biểu thức]: Cho phân thức đơn giản của biểu thức hữu tỷ
Cancel[biểu thức]: Giản ước thừa số chung trong biểu thức
Collect[biểu thức, x]: Cho đa thức theo biến x
Factor[đa thức]: Phân tích đa thức thành nhân tử trên trường số hữu tỷ Short[đa thức]: Hình thức viết gọn của đa thức
1 + 𝑥3+ 𝑥2(3 − 3𝑦) − 3𝑦 + 3𝑦2− 𝑦3+ 𝑥(3 − 6𝑦 + 3𝑦2) Short[2 + 5𝑥^2 − 3𝑥^3 + 4𝑥^2 − 2𝑥 − 𝑥^3 + 6𝑥^5]
2 − 2𝑥 + 9𝑥2− 4𝑥3+ 6𝑥5Factor[𝑥^3 − 4𝑥^2 − 12𝑥 + 27]
(3 + 𝑥)(9 − 7𝑥 + 𝑥2)
Trang 141.2.2.2 Đặt tên và tính toán các biểu thức
Trong Mathematica, để đơn giản hóa các đối tượng toán học trong quá trình lập trình, ta có thể đặt tên cho các đối tượng đó nhằm tránh tình trạng nhắc đi, nhắc lại nhiều lần một biểu thức toán học, mà chỉ cần nhắc tên của nó là được
−8 + 4𝑥 + 𝑥3(−2 + 𝑥)(−1 + 𝑥)
Trang 15Ví dụ 2: Cho biểu thức:
2 2
2
2
13
2
11
x x
x x
- Khai triển mẫu thức
- Khai triển cả biểu thức
Bài giải Viết lệnh:
𝐴 = (1 + 𝑥)^2 (1 − 𝑥)⁄ + 3 𝑥^2 (1 + 𝑥)^2⁄ + (2 − 𝑥)^2
(2 − 𝑥)2+ 3𝑥
2(1 + 𝑥)2+(1 + 𝑥)
𝐵 = (𝑥^(1 2⁄ ) − 1) 𝑥^(1 2⁄ ⁄ )+ (2𝑥^(1 2⁄ ) + 1) (𝑥 + 𝑥^(1 2⁄ ⁄ ))
Trang 16x x
với x4; x 4Bài giải
Viết lệnh:
𝑄 = (𝑥^(1 2⁄ ) − 1) (𝑥^(1 2⁄ ⁄ ) + 2)+ (5𝑥^(1 2⁄ ) − 2) (𝑥 − 4)⁄Simplify[𝑄]
1 − 4𝑥 + 2𝑥2+ 4𝑥3+ 𝑥4Length[%]
5 Factor[%%]
(−1 + 2𝑥 + 𝑥2)2Expand[(𝑥 ∗ 𝑦 ∗ 𝑧)^(1 10⁄ )]
(𝑥𝑦𝑧)1 10 ⁄
Trang 17PowerExpand[(𝑥 ∗ 𝑦 ∗ 𝑧)^(1 10⁄ )]
𝑥1 10⁄ 𝑦1 10⁄ 𝑧1 10⁄
Giải thích ví dụ 1:
Đầu tiên ta đưa vào một biểu thức đại số, Mathematica tự động thay đổi ví trí
2 số hạng theo cách riêng của nó Lệnh Expand khai triển biếu thức mới nhập vào,
hay nói đúng hơn là “phá ngoặc” Chúng ta có thể đếm số hạng của một biểu thức
bằng lệnh Length, và một lần nữa chúng ta lại bắt gặp kí hiệu % - tương ứng với kết
quả kề ngay trước nó Nếu muốn phân tích thành nhân tử của một biểu thức ta dùng
lệnh Factor, kí hiệu %% - tương ứng với kết quả nằm trước kết quả kề nó Từ ví dụ trên ta nhận thấy rằng Expand không phân phối các lũy thừa hữu tỉ trên tích, thay vào đó chúng ta có lệnh PowerExpand
Ví dụ 2:
exp = ((𝑥 − 1)^2(2 + 𝑥)) ((1 + 𝑥)(𝑥 − 3)^2)⁄
(−1 + 𝑥)2(2 + 𝑥)(−3 + 𝑥)2(1 + 𝑥)Expand[exp]
2(−3 + 𝑥)2(1 + 𝑥)−
3𝑥(−3 + 𝑥)2(1 + 𝑥)+
𝑥3(−3 + 𝑥)2(1 + 𝑥)ExpandAll[exp]
2 − 3𝑥 + 𝑥3(−3 + 𝑥)2(1 + 𝑥)Apart[exp]
(−3 + 𝑥)2+ 19
4(−3 + 𝑥)+
14(1 + 𝑥)Factor[%]
Trang 18(−1 + 𝑥)2(2 + 𝑥)(−3 + 𝑥)2(1 + 𝑥)Simplify[exp]
(−1 + 𝑥)2(2 + 𝑥)(−3 + 𝑥)2(1 + 𝑥)FullSimplify[exp]
(−1 + 𝑥)2(2 + 𝑥)(−3 + 𝑥)2(1 + 𝑥)Numerator[exp]
(−1 + 𝑥)2(2 + 𝑥) Denominator[exp]
(−3 + 𝑥)2(1 + 𝑥)
Giải thích ví dụ 2:
Đầu tiên chúng ta nhập vào một biểu thức dạng phân số exp, chúng ta xem
lệnh Expand thực hiện như thế nào Các bạn có thể thấy rằng, lệnh này chỉ thực hiện
“phá ngoặc” đối với tử số, còn ở mẫu số thì ngoặc vẫn còn nguyên Muốn phá hết
ngoặc trong biểu thức ta dùng lệnh ExpandAll, nó có thể khai triển tất cả các biểu
thức ngay cả ở trong Căn bậc hai hay trong các hàm lượng giác Sin, Cos …
Lệnh Together thực hiện phép cộng các phân số theo một mẫu số chung Lệnh Apart viết lại biểu thức ban đầu về dạng tổng của các phân số với mẫu
số tối tiểu Việc phân tích đa thức thành nhân tử sẽ được thực hiện bằng lệnh Factor
Về lệnh Simplify, nó tìm tất cả các phương án có thể để viết exp và nó trả về
một phương án được cho là đơn giản nhất trong số chúng
Riêng lệnh FullSimplify, nó cố gắng biến đổi trong phạm vi rộng bao gồm cả
các hàm cơ bản và hàm đặc biệt
Nếu muốn đưa ra biểu thức trên tử hay dưới mẫu một cách riêng biệt, hãy dùng
lệnh Numerator và Denominator như trong ví dụ
Trang 193
Giải thích ví dụ 3:
Trong ví dụ này, chúng ta nhập vào một biểu thức mới với tên là A
Lệnh Collect[exp, var] thử viết exp như là một đa thức theo biến var mà các
hệ số của nó là những biểu thức của một vài biến khác Việc sắp xếp kết
quả Out[2] không được đẹp mắt lắm, vì kết quả không được sắp xếp theo chiều tăng
lũy thừa của biến x, mặc dù số mũ của y trong các hệ số lại được sắp xếp tăng dần
Cơ bản là, biểu thức A ban đầu không được sắp xếp theo lũy thừa của x Tuy nhiên, nếu chúng ta tập hợp các hệ số theo biến y thì việc sắp xếp sẽ được thực hiện như
chúng ta mong muốn, theo kết quả Out[3]
Lệnh Collect cũng có thể sử dụng để tập hợp 2 biến một lúc, nhưng trong
trường hợp này, không có điều gì khác xảy ra
Có thể đưa ra các hệ số một các riêng lẽ bằng lệnh Coefficient và tìm lũy thừa cao nhất của một biến bằng lệnh Exponent
Trang 20arcsin x ArcSin[x] arccos x ArcCos[x]
arctgx ArcTan[x] arccotgx ArcCot[x]
x
Ta sẽ tìm hiểu các hàm đơn giản có sẵn thông qua các ví dụ sau:
Trang 21Ví dụ 3: Tính sin
6
bằng các lệnh đơn giản và tính giá trị dưới dạng số thập phân
Sau khi định nghĩa, để tính giá trị của hàm số tại x = 1 ta dùng lệnh sau:
𝑓[𝑥]/ 𝑥 → 1 hoặc 𝑓[1 ] ta được kết quả 5
Chú ý: không được quên dấu “_” ở vế trái của dấu bằng trong mỗi định nghĩa hàm
Mathematica có thể tính phép tính ký hiệu và nhân nhiều hàm
Trang 22𝑔[x_, y_] = 𝑥 ∗ (Sin[𝑥^2 + 𝑦^2])^3 − Tan[𝑥^2 − 𝑦^2]
Ta được: 𝑥Sin[𝑥2+ 𝑦2]3− Tan[𝑥2− 𝑦2]
Sau khi định nghĩa, để tính giá trị của hàm số tại x = 2, y = 1 ta dùng lệnh sau:
Trang 23ta được: −ⅇxyz+ 𝑥2cot[𝑦 + 2𝑧]
Sau khi định nghĩa, để tính giá trị của hàm số tại x = 2, y = 1, z=3 ta dùng lệnh sau:
ℎ[2,1,3] hoặc ℎ[𝑥, 𝑦, 𝑧]/ {𝑥 → 2, 𝑦 → 1, 𝑧 → 3} ta được:
−ⅇ6+ 4cot[7]
Còn nếu dùng lệnh ℎ[2 ,1 ,3 ] hoặc ℎ[𝑥, 𝑦, 𝑧]/ {𝑥 → 2, 𝑦 → 1, 𝑧 → 3}//𝑁 ta được: −403.4287934927351 + 4 cot[7 ]
c) Định nghĩa hàm vectơ một biến:
Ví dụ: định nghĩa hàm giá trị vectơ f x x; 2 sin x Tính giá trị f
Bài giải Viết lệnh:
𝐹[x_, y_] = {(𝑥^2) ∗ tan(𝑦 + 2 ∗ 𝑥 ∗ 𝑦), sin[𝑥 + 𝑦] ∗ Log[𝑥]}
Ta được: {𝑥2tan(𝑦 + 2𝑥𝑦), Log[𝑥]sin[𝑥 + 𝑦]}
Trang 24(1 −𝜋
5
32)3
Composition[𝑔, Sin][𝑥]//Simplify
1 − Sin[𝑥]5
1.3 Vẽ đồ thị các hàm, các biểu thức
Để vẽ đồ thị hàm một biến, chúng ta sử dụng lệnh:
Plot[f[x],{x,xmin,xmax}]: Vẽ đồ thị của hàm f(x) trên khoảng [xmin, xmax]
Plot[{f 1 [x],f 2 [x],…},{x,xmin,xmax}]: Vẽ đồ thị của nhiều hàm
Trang 25Để vẽ đồ thị f(x) có nhiều màu khác nhau, ta dùng lệnh:
Plot[f[x],{x,xmin,xmax},PlotStyle ->GrayLevel[w]] trong đó w là 0 hoặc 1
PlotStyle->GrayLevel[0]: hiển thị màu đen
PlotStyle->GrayLevel[1]: hiển thị màu trắng
Muốn vẽ nhiều màu hơn nữa, có thể dùng lệnh
Plot[f[x],{x,xmin,xmax},PlotStyle ->RGBColor[r, g, b]]: trong đó r, g, b
là các giá trị 0 hoặc 1
Chẳng hạn RGBColor[1, 0, 0] cho màu đỏ
RGBColor[0, 1, 0] cho màu xanh lá cây RGBColor[0, 0, 1] cho màu xanh nước biển
Ví dụ 2: Vẽ đồ thị của hàm số 3 2
g x x x x trên [-7,7]
Bài giải Viết lệnh:
𝑔[x_] = 𝑥^3 + 3𝑥^2 − 𝑥 + 1
Plot[𝑔[𝑥], {𝑥, −7,7}, PlotStyle → RGBColor[1,0,0]]
50 100 150 200 250
Trang 26100 200 300 400
50 100
Trang 27Show[graph1,graph2,…]: lệnh hiển thị nhiều đồ thị trên cùng một hệ trục tọa độ
Ví dụ 4: Vẽ các đồ thị hàm số 2 3 2
f x x g x x x h x x trên cùng một hệ trục tọa độ
Bài giải Viết lệnh:
Clear[f,g,h]
𝑓[x_] = 𝑥^2 + 1
𝑔[x_] = 𝑥^3 + 3𝑥^2 + 2
ℎ[x_] = 𝑥 + 1
Plotf = Plot[𝑓[𝑥], {𝑥, −10,10}, PlotStyle → RGBColor[1,0,0]]
Plotg = Plot[𝑔[𝑥], {𝑥, −10,10}, PlotStyle → RGBColor[0,0,1]]
Ploth = Plot[ℎ[𝑥], {𝑥, −10,10}, PlotStyle → Dashing[0.01], PlotStyle
→ RGBColor[1,1,1]]
Show[Plotf, Plotg, Ploth]
AspectRatio->số: Cho tỉ số giữa độ dài trục hoành x và trục tung y Giá trị
1 5
20 40 60 80 100
Trang 28AxesLable->{“tên trục x”, “tên trục y”}: đặt tên mới cho trục x và y
PlotLable->{“tên”}: Đặt tên cho đồ thị
AxesOrigin->{x-coordinate, y- coordinate}: Xác định giao điểm của trục x
và trục y tại điểm có tọa độ là {x-coordinate, y- coordinate}
PlotRange->{y-min, y-max}: Xác định khoảng trên và dưới đồ thị sẽ được
hiển thị
PlotRange->{{x-min,x-max},{y-min,y-max}}: hiển thị đồ thị giới hạn trong hình chữ nhật {{x-min,x-max},{y-min,y-max}}
Trang 29CHƯƠNG 2: ỨNG DỤNG CỦA MATHEMATICA TRONG ĐẠI SỐ VÀ
{{2,7}, {5,2}, {733,1}}
Lệnh FactorInteger[…] viết các thừa số nguyên tố của một số tự nhiên theo
dạng một list của từng cặp Thành phần đầu tiên của mỗi cặp là thừa số nguyên tố, thành phần thứ hai là số lũy thừa của số nguyên tố đó
Lệnh PrimeQ[…]: kiểm tra 1 số có phải số nguyên tố hay không
Lệnh Prime[n]: tìm số nguyên thứ n
Lệnh Table[Prime[n],{n,m}]: liệt kê các số nguyên tố từ số nguyên tố đầu
tiên đền số nguyên tố thứ m
Lệnh NextPrime[n]: tìm số nguyên tố liền sau số n
Lệnh NextPrime[n,-1]: tìm số nguyên tố liền trước số n
Ví dụ 2: kiểm tra số 541 có phải số nguyên tố hay không
Trang 30Ví dụ 4: Tìm tất cả 100 số nguyên tố đầu tiên
Bài giải Table[Prime[𝑛], {𝑛, 100}
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,127,131,137,139,149,151,157, 163,167,173,179,181,191,193,197,199,211,223,227,229,233, 239,241,251,257,263,269,271,277,281,283,293,307,311,313, 317,331,337,347,349,353,359,367,373,379,383,389,397,401, 409,419,421,431,433,439,443,449,457,461,463,467,479,487, 491,499,503,509,521,523,541}
Ví dụ 4: Tìm số nguyên tố liền trước và liền sau số 109
Bài giải NextPrime[10^9]
1000000007 NextPrime[10^9, −1]
999999937
2.2 Giải phương trình và hệ phương trình
Mathematica có thể tìm được nghiệm đúng các phương trình và hệ phương trình có bậc không quá 4 (do các phương trình bậc 4 trở xuống đều có công thức nghiệm chính xác được xây dựng từ các hệ số) Ngoài ra, Mathematica còn tìm được các nghiệm gần đúng của các phương trình bậc cao hoặc không có khả năng giải được
Mặt khác, việc vẽ đồ thị của các hàm cũng giúp ta tìm được các nghiệm nhờ vào tìm giao điểm của các đồ thị
2.2.1 Giải phương trình:
Để tìm một nghiệm của phương trình, ta dùng lệnh:
Solve[equation, variable]
Trang 31Ví dụ 1: Giải các phương trình sau:
Trang 32Solve[(𝑥^2 − 1 4⁄ + (𝑥^2 + 𝑥 + 1 4⁄ )^(1 2⁄ ))^(1 2⁄ ) == 1 2⁄ (2𝑥^3 +𝑥^2 + 2𝑥 + 1)]
{{𝑥 → 0, 𝑦 → 1}, {𝑥 → 1, 𝑦 → 0},
{𝑥 →1
2(−2 − ⅈ√2), 𝑦 → 1
2(−2 + ⅈ√2)}, {𝑥 → 1
Trang 33Theo Galois, đối với các phương trình bậc 5 trở lên, chúng ta lại không có những công thức nghiệm như thế Và Mathematica sẽ không đánh giá các phương trình bậc 5 trở lên (các phương trình không thể phân tích thành nhân tử), tất nhiên có
thể tìm tất cả các nghiệm của một phương trình đa thức bằng phương pháp số thông
𝑁[Solve[4𝑥^3 + 5𝑥^2 − 1 == 0]] ta được:
{{𝑥 → −1 }, {𝑥 → −0.6403882032022076}, {𝑥 → 0.3903882032022076}} 𝑁[Solve[𝑥^4 − 3𝑥^2 == −1 − 2𝑥]] ta được:
Trang 34Trong hai phương trình này, ta phải dùng lệnh giải gần đúng vì nếu sử dụng
lệnh giải đúng nghiệm của phương trình thì kết quả sẽ rất cồng kềnh:
Solve[𝑥^4 − 3𝑥^2 == −1 − 2𝑥] ta được nghiệm:
Trang 35Ví dụ 7: Giải phương trình sau: 4x72x6 x5 8x3 1 0
Bài giải Nếu sử dụng lệnh Solve[4𝑥^7 − 2𝑥^6 + 𝑥^5 + 8𝑥^3 + 1 == 0]
thì ta có kết quả:
{{𝑥 →1
4(1 − ⅈ√3)}, {𝑥 →1
4(1 + ⅈ√3)}, {𝑥 → Root[1 + 2#1 + #15&,1]}, {𝑥 → Root[1 + 2#1 + #15&,2]}, {𝑥 → Root[1 + 2#1 + #15&,3]}, {𝑥 → Root[1 + 2#1 + #15&,4]}, {𝑥 → Root[1 + 2#1 + #15&,5]}}
Chính vì vậy, nên ta dùng lệnh: NSolve[4𝑥^7 − 2𝑥^6 + 𝑥^5 + 8𝑥^3 + 1 == 0]
để có kết quả đẹp hơn:
{{𝑥 → −0.7018735688558619 − 0.879697197929824ⅈ}, {𝑥 → −0.7018735688558619 + 0.879697197929824ⅈ}, {𝑥 → −0.48638903593454297},
{𝑥 → 0.24999999999999997 − 0.4330127018922193ⅈ}, {𝑥 → 0.24999999999999997 + 0.4330127018922193ⅈ}, {𝑥 → 0.9450680868231334 − 0.8545175144390459ⅈ}, {𝑥 → 0.9450680868231334 + 0.8545175144390459ⅈ}}
Mặt khác, trong Mathematica có những lệnh chuyên dùng để giải những
phương trình không thực tế hoặc không có khả năng giải được như FindRoot và Nroots, Nsolve
Lệnh NRoots[vế trái == vế phải, biến] cho phép xấp xỉ nghiệm của đa thức Lệnh FindRoot[vế trái == vế phải, {x,x 0 }]: Tìm nghiệm của vế trái == vế phải bắt đầu với x = x0 Một trong những cách để tìm x0 là vẽ đồ thị của cả hai vế, tìm giao điểm của chúng rồi đánh giá hoành độ đó Nếu phương trình có nhiều nghiệm
thì FindRoot phải dùng nhiều lần
Trang 36Ví dụ 8: Xấp xỉ nghiệm của phương trình: 5x53x4 4x3 x 2 0
Bài giải Viết lệnh:
Lệnh NRoots có thể tìm được nghiệm xấp xỉ của đa thức, nhưng lệnh này chỉ
có điểm mạnh đối với đa thức Với những phương trình khác đa thức, chúng ta phải
a Solve[{𝑥 + 𝑦 == 5, 𝑥 − 𝑦 == 3}]
Trang 37Ví dụ 2 (Đề thi vào lớp 10 Hà Nội từ 2013 đến năm 2015):
Giải các hệ phương trình sau:
11
a Solve[{2(𝑥 + 𝑦) + (𝑥 + 1)^(1 2⁄ ) == 4, 𝑥 + 𝑦 − 3(𝑥 + 1)^(1 2⁄ ) == −5}, {𝑥, 𝑦}]
{{𝑥 → 3, 𝑦 → −2}} tức là hệ phương trình có nghiệm 3
2
x y
Trang 38Ví dụ 3 (Đề thi vào lớp 10 Phú Thọ năm học 2012 – 2013):
Giải hệ phương trình sau:
x y
Tương tự như giải phương trình, ta có thể dùng lệnh NRoots hoặc FindRoot
để xấp xỉ nghiệm của một hệ phương trình
Ta sẽ dùng lệnh FindRoot để xấp xỉ Trước tiên ta vẽ đồ thị của mỗi phương
trình trên để tìm nghiệm xấp xỉ ban đầu
Trang 39Từ kết quả đồ thị trên thì ta thấy hệ trên có 4 nghiệm, trong đó 2 nghiệm khả
{𝑥 → 0 , 𝑦 → 1.9999999999998357}}
Trang 402 3 Phép tính vi tích phân
2.3.1 Phép tính giới hạn
Để tính giới hạn trong Mathematica, ta dùng lệnh: Limit[exp,x->a] để tìm giới
hạn của exp khi x -> a (a có thể là hữu hạn hoặc vô hạn)
Ví dụ 1: Tính các giới hạn sau:
a
3
2 2
a Limit[(3𝑥^3 + 5𝑥 − 3) (−7𝑥^2 + 4)⁄ , 𝑥 → 2]
−3124