BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------NGUYỄN ĐÌNH ĐẠI
ÁP DỤNG MATHEMATICA ĐỂ XÂY DỰNG PHẦN MỀM
TRỢ GIÚP VIỆC DẠY VÀ HỌC
Chuyên ngành : Toán tin
Mã đề tài: TOÁN-VINH04
LUẬN VĂN THẠC SĨ KỸ THUẬT
TOÁN TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC
GS-TSKH Lê Hùng Sơn
Hà Nội – Năm 2014
1
LỜI CẢM ƠN
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à biết được cách áp dụng công nghệ thông tin để giải
quyết các bài toán liên quan, từ đó đưa vào ứng dụng trong thực tiễn.
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ô giáo
đã tham gia giảng dạy lớp cao học khoá 12A Toán- Tin Vinh. Các phòng ban liên
quan của Viện Đào tạo sau đại học, Viện Toán tin trường Đạ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 quá trình học tập và hoàn thành đề tài luận văn này.
Đặc biệt tác giả xin bày tỏ lòng biết ơn sâu sắc đến GS-TSKH Lê Hùng Sơn,
LỜI CẢM ƠN .............................................................................................................2
LỜI CAM ĐOAN .......................................................................................................3
MỞ ĐẦU.....................................................................................................................7
1. Lý do chọn đề tài.....................................................................................................7
2. Mục đích, đối tượng, phạm vi nghiên cứu của luận văn:........................................8
3. Các luận điểm cơ bản và đóng góp mới của tác giả................................................9
4. Phương pháp nghiên cứu.........................................................................................9
CHƯƠNG I: TỔNG QUAN VỀ PHẦN MỀM MATHEMATICA .........................10
1. Giới thiệu phần mềm Mathematica.......................................................................10
2. Các phép tính toán học đối với số, biểu thức và hàm ...........................................11
2.1. Tính toán số: ...................................................................................................11
2.2. Tính toán với biểu thức...................................................................................13
2.3. Tính toán với hàm...........................................................................................15
3. Vẽ đồ thị các hàm, các biểu thức ..........................................................................20
CHƯƠNG II. MỘT SỐ ỨNG DỤNG MATHEMATICA TRONG ĐẠI SỐ VÀ
HÌNH HỌC ...............................................................................................................22
1. Giải phương trình và h ệ phương trình...................................................................22
1.1. Giải phương trình............................................................................................22
1.2. Giải hệ phương trình .......................................................................................24
2. Phép tính vi tích phân...........................................................................................25
2.1. Tính giới hạn...................................................................................................25
2.2 Phép tính vi phân .............................................................................................27
2.2.1. Đạo hàm của hàm và biểu thức ................................................................27
2.2.2 Tiếp tuyến.................................................................................................28
2.2.3. Dùng đạo hàm để vẽ đồ thị hàm số ..........................................................29
2.3. Phép tính tích phân ........................................................................................32
2.3.1 Tích phân bất định.....................................................................................32
4
5
3.6. Cấu trúc điều kiện ...........................................................................................68
3.7. Cấu trúc lặp.....................................................................................................68
4. Xây dựng các gói chương trình tr ợ giúp dạy và học............................................69
4.1. Một số gói chương trình cơ b ản:...................................................................69
4.2. Xây dựng chương trình cho bài gi ảng khảo sát hàm số.................................71
4.3. Giải đề thi Đại học năm 2013 khối A .............................................................88
KẾT LUẬN VÀ KIẾN NGHỊ...................................................................................92
1. Kết luận .................................................................................................................92
2. Kiến nghị:..............................................................................................................93
TÀI LIỆU THAM KHẢO.........................................................................................94
6
MỞ ĐẦU
1. Lý do chọn đề tài
Tỉnh Hà Tĩnh đang đ ầu tư nhiều dự án trọng điểm về phát triển kinh tế xã hội
như: Khu kinh tế Vũng Áng, khu kinh t ế của khẩu quốc tế Cầu treo, dự án khai thác
mỏ sắt Thạch Khê, dự án thủy lợi Ngàn trươi Cẩm Trang,… thu hút hàng ngàn lao
động kỹ thuật, do vậy việc đào tạo nghề cung ứng cho các doanh nghiệp là nhiệm
vụ trọng tâm của các cơ sở dạy nghề trong địa bàn tỉnh. Để đào tạo nguồn nhân lực
kỹ thuật cao đòi hỏi các cơ sở dạy nghề phải đổi mới phương pháp giảng dạy, áp
dụng các phương pháp mới, khoa học kỹ thuật hiện đại vào giảng dạy. Việc áp dụng
công nghệ thông tin vào giảng dạy đã được các cơ sở dạy nghề áp dụng từ nhiều
năm trước, nhưng chủ yếu là để hỗ trợ cho việc giảng dạy, thay phần viết bảng của
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 cơ bản mà ở chương trình học
phổ thông thường gặp.
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, hệ phương trình, các bài toán vi tích phân,...
nghe rất quen thuộc nhưng trong thực tế có những trường hợp ta mất rất nhiều thời
gian để giải quyết, thậm chí tìm ra được kết quả là cả một vấn đề. Tuy nhiên
Mathematica cho ta đáp án nhanh nhất và chính xác nhất có thể.
Luận văn sẽ trình bày ứng dụng của phần mềm trong dạy học và học tập
những bài toán về giải phương trình, h ệ phương trình, các bài toán vi tích phân, v ẽ
các đồ thị trong không gian hai chiều và ba chiều, bên cạnh đó sẽ là những kiến
thức cơ bản về lý thuyết danh sách, ứng dụng của nó để giải quyết một số bài toán
liên quan.
Từ những khái niệm cơ bản tìm hiếu đó thì tác giả sẽ xây dựng một số
chương trình đ ể giải quyết các bài toán, trong đó có chương trình đư ợc xây dựng để
giải các bài toán khảo sát hàm số, vẽ đồ thị tiếp tuyến trong chương trình THPT,
một trong những dạng toán thường xuyên gặp nhất trong toán học. Với ứng dụng
này thì các học sinh phổ thông có thể sử dụng để tìm được kết quả một cách nhanh
nhất, trợ giúp giải đề thi cho các thầy cô giáo trong công tác giảng dạy.
8
3. Các luận điểm cơ bản và đóng góp mới của tác giả
Về mặt lý thuyết thì luận văn chỉ trình bày các dạng bài toán quen thuộc
và ứng dụng giải quyết các bài toán đó, nhưng cũng chính nh ờ những khái niệm cơ
bản đó mà tác giả đã chỉ ra được thêm các phương pháp để xử lý nhanh các bài toán
liên quan, bên cạnh đó thì các gói chương trình đư ợc tác giả xây dựng sẽ cho kết
quả nhanh nhất, chính xác nhất khi gặp các bài toán về khảo sát hàm số, vẽ các đồ
thị cơ bản.
Một số quy tắc cơ bản khi sử dụng phần mềm Mathematica:
- Mathematica phân biệt giữa chữ hoa và chữ thường. Do đó, chữ cái nào
viết hoa cần phải viết hoa chữ cái đó.
- Những lệnh, hàm, các ký hiệu, các biến có sẵn trong Mathematica luôn đợc
bắt đầu bằng chữ in hoa.
- Để thực hiện một lệnh trong Mathematica, ấn đồng thời hai phím Shift +
Enter
- Các hàm, các biến tự khai báo không cần viết hoa chữ cái đầu tiên nhưng
khai báo thế nào khi dùng phải dùng đúng như vậy.
- Các chữ cái không được dùng để đặt tên: C, D, E, I, N
- Vai trò của 3 cặp ngoặc ( ), [ ], { }
+ 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.
10
- Tên của các biến, các hàm tự khai báo bao gồm các chữ cái và chữ số, bắt
đầu bằng một chữ cái, có thể là chữ thường hoặc hoa. Tên này phải khác với tên các
lệnh, các hàm đã có s ẵn trong chương trình.
- Phân biệt giữa các ký hiệu := , = và ==
Ví 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 giá trị vế trái x có bằng giá trị vế phải là 1 hay
không.
2. Các phép tính toán học đối với số, biểu thức và hàm
học.
In[4]:= (5+8)^2-12 (1+6)
Out[4]= 85
b. Kết quả gần đúng và chính xác
Khi làm việc với số nguyên, Mathematica luôn hiển thị kết quả chính xác và
đầy đủ trên màn hình, ngay cả khi tính toán với những số lớn
Ví dụ 2:
12^35
59066822915424320448445358917464096768
Đối với phép toán thực hiện với số hữu tỷ thì thông thường khi sử dụng máy
tính hay các phần mềm khác ta chỉ nhận được kết quả xấp xỉ, chẳng hạn khi tính 8/3
ta sẽ nhận được kết quả là:2.6666666666666666666666
Đố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ỷ.
8/3
8
3
Nếu ta sử dụng N[…] hay //N để tính toán thì sẽ cho kết quả gọn ở dạng
khoa học.
Ví dụ: Tính (-9)100
- Nếu ta gõ lệnh: (-9)^100 thì sẽ được kết quả:
2656139888758747693387813220357796268292334526533944959745749
12
61739092490901302182994384699044001
- Nếu ta gõ lệnh : N[ (-9)^100] thì sẽ được kết quả
2.656139888758748 × 10
Short[Đa thức]: Hình thức viết gọn của đa thức.
Simplify [Đa thức]: Rút gọn expr đa thức.
Together[ biểu thức]: Viết biểu thức dưới dạng một phân thức.
13
Ví dụ 3:
In[14]:=Expand[(1+3x+2y)^2]
Out[14]=1+6 x+9 x2+4 y+12 x y+4 y2
In[15]:=ExpandAll[(x+3y)^3]
Out[15]=x3+9 x2 y+27 x y2+27 y3
Int[16]:=ExpandDenominator[15/(2x+3y)^3]
Out[16]=15/(8 x3+36 x2 y+54 x y2+27 y3)
Int[17]:=ExpandNumerator[(2x+3y)^3/(15x+2y)]
Out[17]=(8 x3+36 x2 y+54 x y2+27 y3)/(15 x+2 y)
In[2]:=
Out[2]= 1 + 8
In[3]:=
+ )^ , ]
+3 +3
[ +
Out[3]= −1 +
In[4]:=
[( +
Đơn giản biểu thức
-
Phân tích thành tổng các phân thức
-
Viết biểu thức trên dưới dạng một phân thức.
Giải:
In[1]:= u=(4x^2-4x)/(2x^2-x)+(2x^2+3x-4)/(2x^2-1)
Out[1]=
-
+
Đơn giản biểu thức:
14
[ ]
In[2]:=
(
Out[2]=
-
(
thức
)(
)
= (4 + 3 )^2/(1 − 2 ) + 4 ^2/(1 + 3 )^2 + (1 −
-
Khai triển tử thức
-
Khai triển mẫu thức
-
Khai triển cả biểu thức.
Giải:
In[1]:= = (4 + 3 )^2/(1 − 2 ) + 4 ^2/(1 + 3 )^2 + (1 − 2 )^2
-
Out[1]= (1 − 2 ) +
-
2.3. Tính toán với hàm.
(
[ ]
)
−4 +
)
+
+
+4
+
+
Đối với các hàm ta có thể định nghĩa đ ể giải quyết một bài toán giống như
đối với biểu thức. Ngoài ra trong Mathematica còn có hơn 700 hàm có sẵn.
15
a. Một số các hàm số cơ bản có sẵn:
Hàm số cơ bản
cot g x
Cot[x]
arcsin x
ArcSin[x]
arccos x
ArcCos[x]
arctgx
ArcTan[x]
arccotgx
ArcCot[x]
log a x
Log[a,x]
ln x
Log[x]
ax
1.4649735207179269
bắng các lệnh đơn giản và tính giâ trị dưới dạng số thập
phân.
Giải:
Viết lệnh Cos[Pi/3]
16
ta được
Viết lệnh Cos[Pi/3] //N
ta được 0.5
b. Định nghĩa các hàm.
Các hàm trong Mathematica đều bắt đầu bằng chữ hoa, còn các hàm hoặc
các biểu thức có thể đặt tên bắt đầu bằng chữ thường. Để tránh tình trạng tên hàm
đã đư ợc dùng định nghĩa trước đó mà ta vẫn dùng thì phải dùng lệnh Clear[…] để
xóa tất cả định nghĩa nghĩa nếu có về hàm đó.
Ta sẽ tìm hiểu cách định nghĩa các hàm qua các ví dụ sau đây:
- Định nghĩa hàm một biến
Ví dụ 9: Muốn định nghĩa hàm f ( x ) x 2 .log 2 (sin 2 (2 x 1) e 3 x ) ln 3 x ta
2
định nghĩa như sau:
Clear[f]
f[x_]=2x^2*Log[2,(Sin[2*x+3]^2+E^(3*x^2))]-Log[x]^4
ta được
−Log[ ] +
( )
17
d. Tính và giản ước
(
)
( )
Giải:
Clear[f]
f[x_]=x^2
được
x2
a. Viết lệnh f[a-b]
(a-b)2
b. Expand[f[a-b]]
−2
+
c. (f[x+h]-f[x])/h
(
lệnh sau:
h[x_,y_,z_]=x*Cos[y+z] - E^(x^2+y*z)
−
+ Cos[ + ]
- Định nghĩa hàm vectơ một biến.
Ví dụ 13: Định nghĩa hàm giá trị vectơ f(x)=(x2,1+sinx), tính giá trị f(π)
18
Giải :
Viết lệnh :
Clear[f]
f[x_]={x^2,1+Sin[x]}
{
, 1 + Sin[ ]}
{
, 1}
f[Pi]
- Định nghĩa hàm vectơ nhiều biến.
x 2 arctg ( y 2 2 xy )
(fog)(x).
-
(gof)( )
-
g(sinx)
Giải:
Ta định nghĩa lần lượt các hàm
Clear[f,g]
19
f[x_]=x^2;
g[x_]=1-x^2;
- Composition[f,g][x]
(1 −
)
- Composition[g,f][Pi/2]
1−
- Composition[g,Sin][x]//Simplify
Cos[ ]
Ở đây ta sử dụng hàm Simplify bởi vì kết quả là biểu thức lượng giác có thể
5
10
15
Hình 1.1 - đồ thị hàm một biến
Vẽ đồ thị f(x) có nhiều màu khác nhau, ta dùng lệnh
Plot [f[x],{x, xmin, xmax}, PlotstyleGrayLevel[w]], trong đó w là 0 hoặc
1.
PlotstyleGrayLevel[0] hiển thị màu đen, còn PlotstyleGrayLevel[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},
PlotstyleRGBColor[r, g, b] trong đó r, g, b là 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[1,0,0] cho màu xanh nước biển.
PlotstyleDashing[{n1, n2, n3,…}]: đồ thị ghép nối.
AspectRatio số: Cho tỉ số giữa độ dài trục hoành x và trục tung y. Giá trị
mặc định là tỉ số vàng
1 5
1, 61803 .
2
AxesLable {“tên trục x”, “tên trục y”}: Đặt tên mới cho trục x và trục 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à y tại điểm có tọa độ là {x-coordinate, y-coordinate}.
3
Solve[(x^2-4)/(x-2)==0]
{{ → −2}}
Solve[x^3-2x^2-x+2==0]
{{ → −1}, { → 1}, { → 2}}
Solve[Cos[x]^2+2Cos[x]+1==0,x]
{{ → − }, { → }}
Trong trường hợp này nếu đánh lệnh Solve[Cos[x]2+2Cos[x]+1==0] thì
Mathematica sẽ giải phương trình đ ối với Cos[x], cụ thể là:
22
Solve[Cos[x]^2+2Cos[x]+1==0]
{{Cos[ ] → −1}, {Cos[ ] → −1}}
Chú ý rằng, không phải tất các phương trình đa thức đều có nghiệm chính
xác. Theo lý thuyết phương trình thì 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ố. Tuy nhiên, theo 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 qua lệnh N[].
Solve[x^4-3x^2==1-2x] thì sẽ thấy được giá trị của việc giải gần đúng nghiệm.
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.
23
FindRoot [vế trái= = vế phải, {x,x0}]: 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 vế trái và vế
phải, 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 dung nhiều lần.
Ví dụ 19: Xấp xỉ nghiệm của đa thức
a. x2+3x=2
b. 2x5+3x4-4x3-x+1=0
Giải:
a. FindRoot[ x^2+3 x= =2,{x,1}]
{x→0.561553}
b. NRoots[2x^5+3x^4-4x^3-x+1==0,x]
x→-2.38913||x→-0.276541-0.572595 i||
x→-0.276541+0.572595 i||x→0.672008||x→0.770209
Như vậy lệnh FindRoot có thể tìm được cả xấp xỉ nghiệm của đa thức,
nhưng điểm mạnh là đối với những phương trình khác đa th ức.
1.2. Giải hệ phương trình
Ta có thể dung lệnh Solve để giải hệ các phương trình tuyến tính.
Solve[{lhs1 = rhs1, lhs2= lhs2,…}, var]
Solve [lhs1 = rhs1 && lhs2 =rhs2 &&…, var]
Solve [{lhs1, lhs2,…}= = {rhs1, rhs2,…},var]
phân. Trong Mathematica thì các lệnh để thực thi các yêu cầu của các phép tính vi
tích phân rất phong phú.
2.1. Tính giới hạn
Để tính giới hạn trong Mathematica dung lệnh Limit[exp,x→a] để tìm lim
của exp khi x →a (a có thể là hữu hạn hoặc vô hạn).
Ví dụ 20:
Tính :
. lim
→
. lim
→
3
+5 −3
−7 + 4
. lim
→
. lim 1 +
→
−
e. lim
Giải:
^ −
− ),
→ ∞]