CHƯƠNG 1. CƠ SỞ LÝ THUYẾT VỀ PHẦN MỀM MATHEMATICA 1. Giới thiệu chung về phần mềm Mathematica 1. Lịch sử ra đời Trong các môn học ứng dụng cần giải quyết các bài toán cụ thể với thời gian nhanh nhất là điều cấp thiết.
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 giải bài toán năng lượng cao. Nhược điểm của chúng là định hướng chạy trên các máy tính lớn. Thế hệ tiếp theo là Maple, Mathab, 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 khi chạy trên các máy tính cá nhân.
Nổi bật lên là phần mềm Mathematica với ưu điểm vượt trội về giao diện thân thiện, khả năng vẽ đồ thị siêu việt và khả năng tính toán không kém gì các ngôn ngữ khác. Mathematica là một ngôn ngữ lập trình mạnh hơn với hơn 700 hàm có sẵn trong thư viện hàm, điều đó sẽ giải quyết các vấn đề nêu trên. Mathematica là môi trường ngôn ngữ tích hợp đầy đủ nhất cho các tính toán kỹ thuật. Được sử dụng trong khoa học, kỹ thuật, toán học và các lĩnh vực khác của kỹ thuật máy tính.
Mathematica là thế hệ thứ 3 của dạng ngôn ngữ dựa trên nguyên lý xử lý các dữ liệu tượng trưng [2]. Tác giả của Mathematica là Stephen Wolfram, người được xem là nhà sáng tạo quan trọng nhất trong lĩnh vực tính toán khoa học và kỹ thuật ngày nay. Ông sinh năm 1959 tại London và học tại các trường Eton, Oxford và Caltech. Ông xuất bản các công trình khoa học đầu tiên của mình ở tuổi 15 và năm 20 tuổi đã bảo vệ thành công học vị PhD về vật lí tại trường đại học Caltech.
Ông bắt đầu phát triển Mathematica vào năm 1986. Phiên bản đầu tiên được phát hành vào ngày 26/06/1988. Giao diện của phần mềm Mathematica 11 1. Giao diện tương tác của phần mềm Mathematica Hình 1.
Giao diện tương tác của phần mềm Mathematica 11 Mathematica đưa ra một giao diện thân thiện với người dùng được gọi là note book hay còn gọi là bảng ghi. Các bảng ghi được thiết kế là một 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ảng ghi và được ghi lại dưới dạng file riêng của Mathematica có đuôi là “*. Các bảng ghi được tổ chức thành các ô một cách 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 ô đó.
5 Ngoài ra, Mathematica còn đưa ra các giao diện phụ như Basic Math Assistant hay Classroom Assistant được tìm thấy trong nút lệnh Palettes và các nút lệnh Button. Với những giao diện phụ này thì người dùng đơn giãn hóa hơn khi giải toán bằng cách sử dụng các lệnh có sẵn để thực hiện công việc. Những lưu ý khi sử dụng phần mềm - Mathematica phân biệt giữa chữ hoa và chữ thường. Do đó, chữ cái nào viết hoa thì 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 tổ hợp phím Shift + Enter. - Vai trò của 3 cặp dấu 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. - 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 thì 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, I, N. - 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 chữ 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 x:=1, x=1 và x==1 + 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ị 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 x là 1 hay không [5] [6] [7].
Các phép toán và các lệnh của phần mềm Mathematica 1. Các phép toán và các hàm cơ bản Một số hàm cơ bản trong Mathematica [3] Bảng 1. Một số công cụ tính toán đơn giản của phần mềm Mathematica 11 6 Trong Mathematica Trong tính toán thông thường Sqrt[x] √x Log[x] ln(x) Sin[x] sin(x) Cos[x] cos(x) Tan[x] tan(x) Log[a,b] Logab Arcsin[x] arcsin(x) Exp[x] ex Factoria[n], n! n! Mod[n,m] Số dư của n/m FactorInteger Phân tích ra thừa số nguyên tố của n Abs[x] Giá trị tuyệt đối của x xy xy Sinh[x] Hàm Hype sin Cosh[x] Hàm Hype cos Tanh[x] Hàm Hype tang Pi Số π Limit[f(x),x → x0] Tính giới hạn D[f(x),x] Tính đạo hàm Intergrate[f(x),x] Tính nguyên hàm Intergrate[f(x),{x,a,b}] Tính tích phân xác định Solve[f(x) == 0,x] Giải phương trình Solve[{f1 == 0,f2 == 0},{x,y}] Giải hệ phương trình Simplify[f(x),x] Đơn giản biểu thức Plot[f(x),{x,a,b}] Vẽ đồ thị Ngoài ra ta có thể sử dụng bảng công cụ Basic Math Assistant có sẵn để sử dụng nhanh hơn. Cú pháp là Palettes → Basic Math Assistant.
7 Bảng công cụ có dạng như sau Hình 1. Bảng công cụ Basic Math Assistant Hộp thoại Calculator có dạng Hình 1. Hộp thoại Calculator Tại hộp thoại Calculator chúng ta sẽ có hai sự lựa chọn đó là Baisic và Advanced. 8 + Khi lựa chọn Basic, chúng ta sẽ có thể sử dụng các công cụ tính toán cơ bản như cộng, trừ, nhân, chia đến các phép toán thập phân hay là số mũ.
Ngoài ra ở đây còn cho chúng ta sử dụng các hằng số như số e, hằng số Pi hoặc là số phức. + Khi lựa chọn Advanced, chúng ta sẽ thấy được rằng Advanced chứa cả Basic trong đó. Ngoài những công cụ trong hộp thoại Basic thì chúng ta có thể sử dụng thêm các công cụ lượng giác, tích phân và đạo hàm. Hộp thoại Basic Commands được hiển thị là Hình 1.
Hộp thoại Basic Commands Ở hộp thoại này, chúng ta sẽ được sử dụng các hàm lượng giác, hàm số mũ, hàm số logaric… Các hằng số như số Pi, số e cũng được hiển thị để sử dụng trong hộp thoại này. Ở những mục khác sẽ cho chúng ta các công cụ để tính tích phân, đạo hàm. Mục 2D và 3D sẽ là các hàm và công cụ để sử dụng khi vẽ đồ thị. 9 Hộp thoại Typesetting sẽ có dạng Hình 1.
Hộp thoại Typesetting Hộp thoại này sẽ cho chúng ta các công cụ để trình những công thức toán học hàm số mũ, căn thức các bậc, những phép tính tích phân và đạo hàm. Ở mục thứ hai là các ký hiệu toán học, mục thứ 3 là các phép tính. Chúng ta có thể sử dụng hầu hết các công cụ tính toán trong hộp thoại Typesetting này. Các lệnh thường được sử dụng [5] [6] • Lệnh trong Mathematica là các Cell gồm In[n]:=Nhập lệnh.
Ship + Enter là tổ hợp phím dùng để kết thúc công việc và cho ra kết quả. Out[n]:=Trả về kết quả. Trong đó n là số thứ tự câu lệnh. Lệnh trong Mathematica có thể sử dụng trực tiếp.
Để tính 5 + 6 ta nhập In[1]:=5+6 sẽ cho kết quả là Out[1]:=11 Kí hiệu % dùng để lấy kết quả Cell liền kề trước đó: Ví dụ: In[2]:=% +2 10 Out[2]:=13 Trong Mathematica ta có thể gắn kết quả cho một tên Ví dụ. In[4]:=x=5 Out[4]:=5 • Câu lệnh điều kiện If[điều kiện, công việc 1, công việc 2] Khi gặp câu lệnh này, Mathematica sẽ kiểm tra điều kiện. Nếu điều kiện đúng, sẽ thực hiện công việc 1, nếu điều kiện sai thì sẽ thực hiện công việc 2. Chú ý, công việc 2 có thể không có.
Khi đó điều kiện sai thì Mathematica sẽ bỏ qua câu lệnh này. • Câu lệnh lặp với số lần biết trước Thực hiện một công việc n lần Do[dãy công việc, {n}] Nếu trong dãy công việc thực hiện có phụ thuộc vào một tham số i với i chạy từ m đến n, dùng lệnh Do[dãy công việc, {i,m,n}] 1 1 1 Ví dụ. Tính tổng 1+ + + ⋯+ , dùng lệnh như sau 1! 2! 10! S=1 Do[S=S+1/i!,{i,1,10}] Chú ý, Dãy công việc bao gồm k công việc thực hiện liên tiếp nhau, có thể khai báo như sau {công việc 1, công việc 2,…,công việc k} hoặc công việc 1; công việc 2;…; công việc k • Câu lệnh lặp với số lần không biết trước While[điều kiện,dãy công việc] Khi gặp câu lệnh này, Mathematica sẽ kiểm tra điều kiện. Nếu điều kiện đúng thì thực hiện dãy công việc, nếu điều kiện sai thì Mathematica sẽ kết thúc lệnh này và chuyển sang lệnh tiếp theo.
• Lệnh Root Root[f, k] tìm nghiệm thứ k của phương trình đa thức f[x] == 0 Root[poly, x, k] tìm nghiệm thứ k của đa thức poly theo biến x • Lệnh FindRoot 11 FindRoot[f,{x,x0}] tìm nghiệm số của đa thức f bắt đầu từ điểm x0. FindRoot[lhs==rhs,{x,x0}] tìm nghiệm số của phương trình lhs==rhs. FindRoot[{f1, f2, …},{{x, x0},{y, y0}, …}] tìm nghiệm số đồng thời của tất cả các đa thức fi. FindRoot[{eqn1, eqn2, …}, {{x, x0}, {y, y0}, …}] tìm nghiệm số đồng thời của tất cả các phương trình eqni.
• Lệnh Quiet Quiet[expr] thực hiện đánh giá expr bỏ qua các thông báo nếu có. Quiet[expr,{s1::t1,s2::t2,…}] chỉ bỏ qua các thông báo đặc biệt trong khi đánh giá expr. • Lệnh Off Off[symbol::tag] tắt một thông báo để hạn chế việc in các kết quả một cách dài dòng. • Lệnh On On[symbol::tag] Mở thông báo để nó có thể in ra màn hình.
• Lệnh Check Check[expr,failexpr] đánh giá expr và trả về kết quả nếu không có các thông báo xuất hiện, trong trường hợp có thông báo câu lệnh sẽ trả vềfailexpr. Check[expr,failexpr,{s1::t1,s2::t2,…}] chỉ kiểm tra một vào thông báo đặc biệt. Vẽ đồ thị với Mathematica • Vẽ đồ thị hàm một biến f[x] ta dùng lệnh Plot[f[x],{x,a,b}]: Vẽ đồ thị hàm f[x] trong khoảng a,b. Ví dụ Định nghĩa các hàm f, g, h Clear[f,g,h] f[x_]=4x^3+6x^2-9x+2 g[x_]=12x^2+12x-9 h[x_]=24x+12 Vẽ đồ thị hàm f[x] ta sẽ có câu lệnh là Plot[f[x],{x,-3,3}] 12 y 60 40 20 x 3 2 1 1 2 3 20 Hình 1.
Đồ thị hàm số 1 biến f(x) = 4x^3+6x^2-9x+2 • Ta có thể vẽ đồng thời ba đồ thị trên cùng một hệ trục tọa độ với câu lệnh như sau Plot[{f[x],g[x],h[x]},{x,-3,2}].