Các ứng dụng tiêu biểu của Matlab bao gồm: hỗ trợ toán học và tính toán; phát triển thuật toán; mô hình mô phỏng; phân tích, khảo sát và hiển thị số liệu; đồ họa khoa học và kỹ thuật; ph
Trang 1MỤC LỤC
MỞ ĐẦU 5
CHƯƠNG 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ MATLAB 7
1.1 Giới thiệu chung và cách sử dụng môi trường Matlab 7
1.1.1 Khả năng và ứng dụng của matlab 7
1.1.2 Đặc điểm của Matlab 7
1.1.3 Không gian làm việc của Matlab 8
1.2 Các khái niệm cơ bản 11
1.2.1 Hằng 11
1.2.2 Biến 12
1.2.3 Kiểu dữ liệu 12
1.2.4 Các phép toán đơn giản 13
1.2.5 Biểu thức 14
1.2.6 Số phức 16
1.2.7 Tập lệnh cơ bản của Matlab 16
1.2.8 Các phép toán đối với mảng và các thao tác với mảng 22
1.3 Các hàm số học 33
1.4 Các hàm giải tích 35
1.4.1 Một số hàm cơ bản 35
1.4.2 Tính đạo hàm 36
1.4.3 Tìm giới hạn 39
1.4.4 Tính tích phân 41
1.5 Các hàm đại số 42
1.6 Đồ họa trong Matlab 47
1.6.1 Đồ hoạ trong hệ toạn độ phẳng: 47
1.6.2 Đồ hoạ trong không gian ba chiều 55
Trang 2CHƯƠNG 2 LẬP TRÌNH TRONG MATLAB 59
2.1 Cách tổ chức chương trình trong Matlab 59
2.1.1 Chương trình 59
2.1.2 Dòng lệnh 59
2.1.3 Câu giải thích (chú thích) 59
2.2 Câu lệnh gán 60
2.3 Các lệnh vào/ra dữ liệu 60
2.3.1 Lệnh đưa dữ liệu vào 60
2.3.2 Lệnh đưa dữ liệu ra màn hình 61
2.4 Các cấu trúc điều khiển 62
2.4.1 Lệnh if elseif else 62
2.4.2 Câu lệnh swich – case 63
2.4.3 Câu lệnh for 64
2.4.4 Lệnh while 65
2.4.5 Lệnh function 66
2.4.6 Các lệnh break, return, error và pause 67
CHƯƠNG 3 MỘT SỐ BÀI TOÁN GIẢI TÍCH SỐ 68
3.1 Giải gần đúng phương trình 68
3.1.1 Bài toán giải gần đúng phương trình 68
3.1.2 Phương pháp chia đôi 68
3.1.3 Phương pháp lặp 70
3.1.4 Phương pháp dây cung 70
3.1.5 Phương pháp tiếp tuyến 71
3.2 Giải gần đúng hệ phương trình đại số tuyến tính 72
3.2.1 Bài toán giải gần đúng hệ phương trình đại số tuyến tính 72
3.2.2 Phương pháp lặp Jacobi 73
3.2.3 Phương pháp lặp Seidel 76
3.3 Xấp xỉ hàm bằng phương pháp nội suy 77
Trang 33.3.1 Bài toán nội suy 77
3.3.2 Đa thức nội suy Lagrange 77
3.3.3 Đa thức nội suy Newton 78
3.4 Tìm hàm thực nghiệm bằng phương pháp bình phương tối thiểu 78
3.4.1 Bài toán 78
3.4.2 Tìm hàm thực nghiệm dạng tuyến tính 79
3.4.3 Tìm hàm thực nghiệm dạng phi tuyến 80
3.5 Giải gần đúng phương trình vi phân thường cấp 1 81
3.5.1 Bài toán Cauchy đối với phương trình vi phân thường cấp 1 81
3.5.2 Phương pháp Euler 82
3.5.3 Phương pháp Euler cải tiến 82
3.5.4 Phương pháp Runge−Kutta cấp 4 83
CHƯƠNG 4 VẬN DỤNG MATLAB GIẢI MỘT SỐ BÀI TOÁN GIẢI TÍCH SỐ 85
4.1 Giải gần đúng phương trình 85
4.1.1 Phương pháp chia đôi 85
4.1.2 Phương pháp lặp 89
4.1.3 Phương pháp tiếp tuyến 91
4.1.4 Phương pháp dây cung 95
4.2 Giải gần đúng hệ phương trình đại số tuyến tính 98
4.2.1 Phương pháp lặp 98
4.2.2 Phương pháp lặp Seidel 101
4.3 Xấp xỉ hàm bằng phương pháp nội suy 103
4.3.1 Đa thức nội suy Lagrange 103
4.3.2 Đa thức nội suy Newton tiến 105
4.3.3 Đa thức nội suy Newton lùi 109
4.4 Tìm hàm thực nghiệm bằng phương pháp bình phương tối thiểu 113
Trang 44.4.1 Chương trình tìm hàm thực nghiệm theo một số dạng tuyến
tính 113
4.4.2 Chương trình tìm hàm thực nghiệm theo một số dạng phi tuyến 113
4.5 Giải gần đúng phương trình vi phân thường cấp 1 114
4.5.1 Phương pháp Euler 114
4.5.2 Phương pháp Euler cải tiến 117
4.5.3 Phương pháp Runge−Kutta cấp 4 119
KẾT LUẬN 122
TÀI LIỆU THAM KHẢO 123
Trang 5MỞ ĐẦU
1 Lý do chọn đề tài
Giải tích số hiện đang phát triển mạnh và càng mạnh hơn với sự phát triển nhanh của tin học Công nghệ thông tin và giải tích số có vai trò rất quan trọng trong nhiều lĩnh vực
Thực tế hiện nay, đã có nhiều tài liệu về giải tích số song còn ít tài liệu giới thiệu các phần mềm tính toán (Maple, Matlab, .) và chương trình máy tính giải quyết các bài toán số Trong khi đó Matlab là phần mềm nổi tiếng của công ty MathWorks, là một ngôn ngữ hiệu năng cao cho tính toán kỹ thuật Nó tích hợp tính toán, hiển thị và lập trình trong môi trường dễ sử dụng Các ứng dụng tiêu biểu của Matlab bao gồm: hỗ trợ toán học và tính toán; phát triển thuật toán; mô hình mô phỏng; phân tích, khảo sát và hiển thị số liệu; đồ họa khoa học và kỹ thuật; phát triển ứng dụng với giao diện đồ họa, …
Ngoài ra Matlab cơ bản với các khả năng rất phong phú, phần mềm Matlab còn có trang bị thêm các ToolBox – các gói chương trình (thư viên) cho các ứng dụng rất đa dạng như xử lý tín hiệu, nhận dạng hệ thống, xử lý ảnh, mạng nơ ron, logic mờ, tài chính, tối ưu hóa, phương trình đạo hàm riêng, … Đây là các tập mã nguồn viết bằng chính Matlab dựa theo các thuật toán mới, hữu hiệu mà người dùng
có thể chỉnh sửa hoặc bổ sung thêm các hàm mới Matlab được thiết kế để giải bài toán bằng số chứ không nhằm mục đích chính là tính toán ký hiệu như Mathematica
và Maple Tuy nhiên trong Matlab cũng có thể tính toán ký hiệu được nhờ các hàm trong Symbolic Math ToolBox
Hiện nay có rất nhiều trường đại học trong nước cũng như nước ngoài, nhất
là những trường kỹ thuật đã đưa Matlab vào giảng dạy và nghiên cứu
Với ưu thế về tính toán số trị Matlab rất thích hợp cho việc giảng dạy môn học thuộc lĩnh vực giải tích số - môn học quan trọng đối với sinh viên các ngành kỹ thuật và khoa học tự nhiên Việc sử dụng Matlab để lập trình các thuật toán của môn học này có thuận lợi là đơn giản, dễ dàng vẽ các đồ thị để hiển thị kết quả và kiểm
Trang 6tra kết quả, thư viện phong phú các hàm toán học đã được cài đặt sẵn Dùng Matlab
để thiết kế phần mềm trợ giúp đối với các môn Toán, đặc biệt là môn Giải tích số,
có ý nghĩa thiết thực nhằm nâng cao chất lượng dạy và học
2 Mục tiêu nghiên cứu
Sử dụng ngôn ngữ lập trình trong Matlab để xây dựng các phần mềm trợ giúp giải quyết các bài toán giải tích số nhằm nâng cao hiệu quả giảng dạy và học tập môn học này
3 Nhiệm vụ và phạm vi nghiên cứu
- Tìm hiểu về phần mềm toán học Matlab
- Nghiên cứu nội dung môn phương pháp tính thuộc lĩnh vực giải tích số, theo chương trình giảng dạy tại trường đại học Bách Khoa Hà Nội
- Sử dụng phần mềm Matlab xây dựng các chương trình giải các bài toán số
4 Phương pháp nghiên cứu
- Nghiên cứu tài liệu hướng dẫn sử dụng và lập trình trong phần mềm Toán học Matlab
- Nghiên cứu nội dung môn học phương pháp tính, từ đó thiết kế thuật toán cho các phương pháp giải gần đúng các bài toán số
- Cài đặt thuật toán thành phần mềm tính toán nhằm minh họa và giải quyết các bài toán số trong môn học phương pháp tính
5 Cấu trúc luận văn
Ngoài phần mở đầu, kết luận, tài liệu tham khảo và phụ lục, luận văn gồm 4 chương:
Chương 1 Một số kiến thức cơ bản về Matlab
Chương 2 Lập trình trong Matlab
Chương 3 Một số bài toán giải tích số
Chương 4 Vận dụng Matlab giải một số bài toán giải tích số
Trang 7CHƯƠNG 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ MATLAB
1.1 Giới thiệu chung và cách sử dụng môi trường Matlab
1.1.1 Khả năng và ứng dụng của matlab
- Một trong những tính năng tuyệt với nhất của Matlab nhìn từ góc độ những nhà khoa học tính toán là thư viện dựng sẵn rất phong phú các chương trình tính toán và các công cụ hiển thị đồ hoạ
- Matlab cho phép người dùng tiến hành rất nhiều các nhiệm vụ thông thường liên quan tới việc xử lý tính toán số với tốc độ nhanh, độ chính xác cao Các tính toán rất mạnh có thể được thực hiện chỉ với một hoặc hai câu lệnh
- Người dùng có thể xây dựng riêng cho mình những hàm toán học trong những ứng dụng đặc biệt
- Matlab có giao diện đồ hoạ đẹp, sinh động, các hình từ Matlab có thể đem chèn vào các phần mềm soạn thảo văn bản như LATEX , WORD,
1.1.2 Đặc điểm của Matlab
Chương trình trong Matlab được xây dựng tương tự như trong các ngôn ngữ lập trình có cấu trúc thông thường Đặc điểm ưu thế của chương trình Matlab là đơn giản, ngắn gọn hơn nhờ việc tận dụng thư viện đầy đủ các hàm đã được lập sẵn và
có thể mô tả các cấu trúc toán học cũng như thể hiện các tính toán một cách tự nhiên
Để minh hoạ điều này, ta xét một ví dụ đơn giản: So sánh hai phép cộng véctơ trong ngôn ngữ lập trình Pascal và Matlab
Sử dụng Pascal:
Var
A: Array[1 5] of Integer = (3, 7, 4, 2, 0);
A: Array[1 5] of Integer = (-2, 4, 8, 5, 1) A: Array[1 5] of Integer;
i: byte;
Begin
for i:= 1 to 5 do C[i]:=A[i] + B[i];
for i:= 1 to 5 do write(c[i], „ „);
Trang 8Một đặc điểm nữa là tất cả các biến dùng trong Pascal đều phải được khai báo Trong Matlab các biến sẽ tự động hình thành trong mỗi câu lệnh gán
1.1.3 Không gian làm việc của Matlab
- Về cơ bản không gian làm việc của Matlab gồm có các phần sau:
+ Cửa sổ trợ giúp (Help Windon) + Nút Start
+ Cửa sổ nhập lệnh (Command Windon) + Cửa sổ không gian làm việc (Workspace Windon) + Cửa sổ quá trình lệnh (Command History Windon) + Cửa sổ biên tập mảng, véctơ, ma trận (Array editor Windon) + Cửa sổ địa chỉ thư mục hiện thời (Current directory Windon)
- Nút ở góc trên bên phải mỗi cửa sổ dùng để đóng chúng Hiển thị lại cửa sổ bằng cách tích vào tên của sổ tương ứng trong menu Desktop
- Nút bên cạnh nút dùng để tách của sổ làm việc trong cửa sổ chính Matlab thành cửa sổ con độc lập Ấn nút này một lần nữa sẽ nhập một cửa sổ độc lập về cửa sổ chính của Matlab
- Nút Start ở góc dưới bên trái của màn hình Matlab cho phép ta chạy các ứng dụng mẫu (demos), các công cụ và cửa sổ chưa hiển thị khi khởi động Matlab Bằng cách đánh dấu lệnh „demo‟ ta có thể tiếp cận với một tập rất nhiều những file trình diễn giá trị cao
Trang 9Ví dụ: Thử chạy Start -> Matlab –> Demos và chạy một ứng dụng mẫu trong cửa sổ Demo (s)
Lưu ý: Lệnh này sẽ xoá tất cả các giá trị của các biến hiện có
1.1.3.1 Cửa sổ lệnh
Đây là cửa sổ chính của Matlab, tại đây thực hiện toàn bộ việc nhập dữ liệu
và xuất kết quả tính toán Dấu nhắc >> để gõ các lệnh
Matlab là một môi trường tương tác, khi một câu lệnh được đưa ra Matlab thực thi nó ngay lập tức trước khi đòi hỏi một lệnh tiếp theo
Các diễn giải có cấu trúc như sau:
>> diễn giải
hoặc có thể lưu lại kết quả tính toán vào biến:
>> Biến = diễn giải
Trong đó, các diễn giải thường được soạn bằng các toán tử, các hàm, và tên các biến, và được hiển thị trên màn hình sau khi nhấn Enter Các câu lệnh có dạng
“tên biến = diễn giải” thì diễn giải đó sẽ được gán cho biến sử dụng sau này Khi tên biến và dấu bằng được bỏ đi thì kết quả của “diễn giải” sẽ được tự động gán cho biến có tên „ans‟ (hay answer - câu trả lời) và hiển thị trên màn hình
Một số lệnh tổng quát liên quan đến cửa sổ này:
+ cls: Xóa cửa sổ lệnh
+ Home: Di chuyển con trỏ lên góc trên trái của cửa sổ (khi chạy chương trình)
+ Help: Trợ giúp thông tin về một mục nào đó
+ echo, echo on/ off: Tắt mở hiển thị các dòng của file m khi chạy chương trình + edit: Gọi chương trình soạn file *.m
+ type tên_file: Đọc nội dung file *.m
+ demo: Gọi chương trình demo
+ quit, exit: Thoát chương trình Matlab
Trang 10Một số phím hỗ trợ thao tác:
Gọi lại hàng trước end Về cuối hàng
Tới một ký tự Delete Xoá ký tự ở con trở
Lùi lại một ký tự Backspace Xoá ký tự ở trước con trỏ Ctrl Qua phải một từ Ctrl K Xóa đến cuối hàng
Ctrl Qua trái một từ Shift Home Đánh dấu đến đầu hàng
Home Về đầu hàng Shift End Đánh dấu đến cuối hàng
1.1.3.2 Cửa sổ lịch sử lệnh Command History
Liệt kê các lệnh đã sử dụng trước đó kèm thời gian bắt đầu Có thể lặp lại lệnh cũ bằng cách nhắp chuột kép vào lệnh đó Cũng có thể cắt, sao hoặc xoá cả nhóm lệnh hoặc từng lệnh riêng rẻ
1.1.3.3 Cửa sổ không gian làm việc
Các biến và dữ liệu mà ta nhập vào hoặc tính toán ra sẽ được Matlab lưu trong một phần gọi là “Không gian làm việc” Tất cả các biến ngoại trừ những biến cục bộ thuộc về một M- file, sẽ được hiển thị trong không gian làm việc
+ Lệnh who hay lệnh whos liệt kê các biến trong không gian làm việc
Ví dụ: Đánh lệnh „whos‟ vào cửa sổ lệnh, ta sẽ thấy một danh sách các biến hiện có cùng kiểu và kích cỡ của chúng
+ Để biết giá trị hiện tại của một biến, ta đánh vào tên biến ở cửa sổ lệnh và nhấn Enter
+ Để xoá một hàm hay một biến khỏi không gian làm việc ta sử dụng lệnh clear
Trang 11Ví dụ: Cho ma trận M, hãy thử click và thay đổi nó, thay đổi các phần tử, thay đổi kích thước ma trận Quay lại cửa sổ lệnh và gõ „M‟ rồi nhấn Enter, xem ma trận M sau khi đã thay đổi
Ta cũng có thể biên tập lại ma trận M bằng cách đánh lệnh
>> openvar („C‟)
1.1.3.5 Cửa sổ địa chỉ thư mục hiện thời
Thư mục hiện thời là nơi chương trình Matlab sẽ tìm các M-file, và các file không gian làm việc (.mat file) mà ta đã Load và Save
1.2 Các khái niệm cơ bản
Eps Số nhỏ nhất, như vậy dùng cộng với 1 để được số
nhỏ nhất lớn hơn 1 (hay Sai số 2-52) Flops Số phép chia toàn số thực
Trang 121.2.2 Biến
- Biến là đại lượng được đặt tên, giá trị của biến có thể thay đổi trong suốt quá trình hoạt động của chương trình
- Quy tắc đặt tên biến:
+ Tên biến phải là một từ (không chứa dấu cách)
+ Tên biến gồm các chữ cái, chữ số và dấu gạch dưới
+ Tên biến có phân biệt chữ hoa với chữ thường
+ Tên biến có thể chứa nhiều nhất 31 kí tự, còn các ký tự sau kí tự thứ 31 bị bỏ đi + Tên biến bắt đầu bằng chữ cái tiếp theo có thể là chữ số hặc dấu gạch dưới
- Ví dụ: Items, items, x1, x2, den_ta,
1.2.3 Kiểu dữ liệu
- Matlab có đầy đủ các kiểu dữ liệu đơn giản như:
+ Số nguyên gồm có: int8; int16; int32; int64; uint8; uint16; uint32; uint64; single + Số thực: double
+ Kí tự: char
+ Logic: boolean
- Chuỗi kí tự được đặt trong dấu nháy đơn hoặc nháy kép, chẳng hạn „Viet Nam‟
- Kiểu dãy (sequence) có dạng:
dau:buoc:cuoi bao gồm một véc-tơ gồm các phần tử bắt đầu từ số đầu “dau” tăng dần theo từng bước “buoc” cho đến bằng (không vượt quá) số cuối “cuoi” Kết quả cho ra một véc-tơ hàng:
+ 1.2:0.2:1.7 % chú thích: Tương đương với [1.2 1.4 1.6]
+ 1.2:0.2:1.8 % chú thích: Tương đương với [1.2 1.4 1.6 1.8]
- Kiểu ma trận đóng vai trò trung tâm trong Matlab Ví dụ một ma trận hai hàng ba cột như sau (hết một hàng cần dấu chấm phẩy để phân tách, nhưng không nhất thiết xuống dòng):
[ -3 4 5.2 ;
2.1 -8 7.6 ]
- Matlab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell, kiểu struct (bản ghi)
Trang 13- Khuôn dạng hiển thị số:
format short e 5 số với số mũ 5.0833e+01
format long e 16 số với số mũ 50.88333333333334 e+01 format short g Chính xác hơn format short
hoặc format short e format long g Chính xác hơn format long
hoặc format long e format + Dương, âm hoặc bằng không +
1.2.4 Các phép toán đơn giản
1.2.4.1 Các phép toán số học cơ bản của Matlab
Trang 14Biểu thức số học là một biến kiểu số hoặc một hằng số hoặc các biến kiểu số
và các hằng số liên kết với nhau bởi một số hữu hạn các phép toán, các dấu ngoặc tròn ( và ) tạo thành một biểu thức có dạng tương tự như cách viết trong toán học với những quy tắc sau:
- Chỉ dùng cặp ngoặc tròn để xác định trình tự thực hiện phép toán trong trường hợp cần thiết
- Viết lần lượt từ trái qua phải
- Không được bỏ qua dấu nhân (*) trong tích
Thứ tự ưu tiên thực hiện tính toán một biểu thức trong Matlab như sau:
1 Tính đại lượng trong ngoặc đơn
2 Tính phép toán Luỹ thừa
3 Tính phép toán nhân (*), chia (/), thực hiện từ trái qua phải
4 Tính phép toán công (+), trừ (-), thực hiện từ trái qua phải
Ví dụ : Matlab tính theo thứ tự sau biểu thức 2+3^2+20/(4*5)*3-5
1 Tính đại lượng trong ngoặc đơn nghĩa là tính 4*5=20
2 Tính luỹ thừa nghĩa là tính 3^2=9
Trang 15- Thực hiện phép toán quan hệ
Kết quả của biểu thức quan hệ là giá trị lôgic: 1 (true – Đúng) hoặc 0 (false – Sai) Trong ví dụ trên, nếu x có giá trị là 3 thì biểu thức x<5 có giá trị là 1 (đúng) Nếu i có giá trị là 2 và j có giá trị là 3 thì biểu thức i+1 >= 2*j cho giá trị là 0 (sai)
1.2.5.3 Biểu thức logic
Biểu thức logic đơn giản là một biến logic
Biểu thức logic là các biểu thức logic đơn giản, các biểu thức quan hệ
liên kết với nhau bởi các phép toán logic Giá trị biểu thức logic là 1 (true –
Đúng) hoặc 0 (false – Sai)
Biểu thức logic với các toán tử tổ hợp đƣợc xác đinh theo quy luật sau:
Giả thiết các biến A và B là những biến logic để dễ hiểu, ta sẽ kí hiệu giá trị logic 1
là true và 0 là False Khí đó, kết quả của các phép toán logic ~A, A | B và A & B đƣợc xác định trong bảng sau:
Trang 16Đôi khi gặp nhiểu biểu thức logic phức tạp chứa cả toán tử & lẫn | thì Matlab
sẽ có quy luật về trình tự xử lý nhƣ sau:
Đầu tiên là xử lý các tính toán số học Sau đó, các toán tử logic đƣợc xem xét
từ trái sang phải
* Chú ý: Khi làm việc với số phức cần phân biệt 2 cách viết ví dụ:
y=7/2*i và x=7/2i hai cách viết này cho kết quả khác nhau
Trang 17b Giải thích (Description): Khi thực hiện một lệnh nào đó mà chƣa có biến kết quả, thì Matlab lấy biến ans làm biến chứa kết quả đó
clear: Xoá tất cả các biến khỏi vùng làm việc
clear name: Xoá các biến hay hàm đƣợc chỉ ra trong name
Trang 18clear function: Xoá tất cả các hàm trong bộ nhớ
clear variables: Xoá tất cả các biến ra khỏi bộ nhớ
clear mex: Xoá tất cả các tập tin mex ra khỏi bộ nhớ
clear all: Xoá tất cả các biến, hàm, và các tập tin mex khỏi bộ nhớ Lệnh này làm cho bộ nhớ trống hoàn toàn
filename: Tập tin cần xoá
N: Biến chứa đối tƣợng đồ hoạ cần xoá Nếu đối tƣợng là một cửa sổ thì cửa
Trang 19short: Hiển thị 4 con số sau dấu chấm
long: Hiển thị 14 co số sau dấu chấm
rat: Hiển thị dạng phân số của phần nguyên nhỏ nhất
+: Hiển thị số dương hay âm
l: Biến chứa chiều dài của vectơ
d Ví dụ 1.5 Tính chiều dài của vectơ x
Trang 20d: Tên vectơ hai phần tử, phần tử thứ nhất là số dòng, phần tử còn lại là số cột
m, n: Biến m chứa số dòng, biến n chứa số cột
Trang 21what: Liệt kê tên các tập tin m, mat, mex có trong thƣ mục hiện hành
Dirname: Tên thƣ mục cần liệt kê
Trang 22who global
whos global
c Giải thích:
who: Liệt kê tất cả các tên biến đang tồn tại trong bộ nhớ
Whos: Liệt kê tên biến, kích thước, số phần tử và xét các phần ảo có khác không Who global và whos global: Liệt kê các biến trong vùng làm việc chung
1.2.8 Các phép toán đối với mảng và các thao tác với mảng
1.2.8.1 Các pháp toán với mảng:
a Các mảng đơn giản:
Giả sử ta xét hàm y=sin(x) trong một nữa chu kỳ ( x 0) trong khoảng này số điểm giá trị của x là vô tận, nhưng ta chỉ xét những điểm cách nhau một khoảng giá trị 0.1 như vậy số giá trị của x là đếm được Từ đó ta có mảng các giá trị cho x là:
Trong mảng y chứa các phần tử y1, y2, , y11
Trong Matlab để tạo những mảng này rất đơn giản:
Ví dụ 1.7 Để tạo hai mảng x, y trên ta đánh các lệnh sau vào dấu nhắc của Matlab
>> x=[0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi]
Trang 23Để tạo mảng, ta đặt các phần tử của mảng vào giữa cặp dấu ngoặc vuông
“[ ]”; giữa hai phần tử của mảng có thể là dấu cách hoặc dấu phẩy “,”
b Địa chỉ của mảng
+ Để đến phần tử của mảng ta dùng các chỉ số thứ tự của phần tử đó trong mảng
Ví dụ 1.8 Ta xét mảng x nêu trên, ta viết x(1) là phân tử thứ nhất của mảng
x, x(2) là phần tử thứ 2 của mảng,
>>x(2) % phần tử thứ hai của mảng
ans=
0.3142 + Để truy cập đến nhiều phần tử của mảng, ví dụ ta truy cấp từ phần tử thứ nhất đến phần tử thứ năm của mảng x: Tại dấu nhắc ta gõ
>>x(1:4)
ans=
0 0.3142 0.6283 0.9425 + Để truy cập thừ phần tử thứ 9 đến phần tử cuối cùng của mảng y
>>y(9:end)
ans=
0.5878 0.3090 0.0000 + Truy câp từ phân tử thứ 3 đến phần tử thứ nhất của mảng y
>>y(3:-1:1)
ans=
0.5878 0.3090 0 Trong ví dụ trên 3 là phần tử thứ 3, 1 là phần tử đầu tiên, con -1 là giá trị công (vị trí phần tử sau bằng vị trí của phần tử trước cộng với -1)
Trang 24Ví dụ: 1.9: Truy nhập đến các phần tử trong khoảng từ phần tử thứ 2, đến phần tử thứ 7, vị trí của phần tử sau bằng vị trí của phần tử trước cộng với 2, của mảng x)
+ Tạo một bảng bắt đầu là phần tử 0, sau bằng phần tử trước cộng 0.1, phần
tử cuối là 1 Cú pháp của cách này như sau: x=(0:0.1:1)
2.1991 2.5133 2.8274 3.1416 + Tạo mảng bằng hàm linspace Cú pháp của hàm này như sau:
linspace(giá trị phần tử đầu, giá trị phần tử cuối, số các phần tử)
Ví dụ 1.11 Tạo mảng x nêu trên
>>x=linspace(0,pi,11)
x=
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2508 1.8850 Columns 8 through 11
2.1991 2.5133 2.8274 3.1416
Trang 25+ Ngoài các mảng trên, Matlab còn cung cấp một số cấu trúc khác như:
x=first:last Tạo vector hàng x bắt đầu tại first, phần tử sau
bằng phần tử trước cộng 1, kết thúc là phần tử
có giá trị bằng hoặc nhỏ hơn last x=first: increment:last Tạo vector hàng x bắt đầu tại first, giá trị cộng
là increment, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last
x=logspace(first,last,n) Tạo vector hàng không gian logarihm x bắt đầu
tại 10first, kết thúc tại 10last, có n phần tử
Ví dụ 1.12
>>a=1:5, b=1:2:9, logspace(0,2,11)
a=
1 2 3 4 5 b=
1 3 5 7 9 ans=
Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489 Columns 8 thổugh 11
25.1189 39.8107 63.0957 100.0000
d Vector hàng và vector cột
Trong các ví dụ trước, mảng chứa một hàng và nhiều cột Người ta thường gọi là vector hàng Ngoài ra ta còn có mảng là vector cột, tức là mảng có một cột và nhiều hàng, trong trường hợp này tất cả mọi thao tác và tính toán đối với mảng như
ở trên là không thay đổi
Từ các hàm tạo mảng minh hoạ ở phần trước (tất cả đều là vector hàng), có nhiều cách để tạo vector cột
d1 Cách trực tiếp tạo vector cột
* Xét trong mảng một chiều
Trang 26Khác với trước là ta dùng dấu cách hay dấu phẩy để phân cách giữa hai cột của một vector hàng Còn cách này ta dùng dấu chấm phẩy để phân cách giữa hai hàng của vector cột
* Xét trong mảng nhiều chiều (hay còn gọi là ma trận)
Đối với mảng nhiều chiều thì ta dùng dấu cách để vào các phần tử trong hàng
và dấu chấm phẩy (;) để tạo hai hàng
Lưu ý: Khi nhập vào ma trận thì giữa các hàng số phần tử phải bằng nhau nếu
không chương trình sẽ bị báo lỗi
d2 Cách dùng phương pháp chuyển vị
Matlab dùng toán tử chuyển vị là (‟) hoặc (.‟) để chuyển từ vector hàng thành vector cột và ngược lại Trong đó toán tử chuyển vị (.‟) khác với toán tử chuyển vị (‟) là: Khi các phần tử của mảng là số phức, tức là từ một vector nguồn với các phần
tử là số phức, toán tử (‟) tạo ra vector phức liên hợp chuyển vị, còn toán tử (.‟) tạo
ra vector chuyển vị
Ví dụ 1.15
>>a=1:3 a=
1 2 3
Trang 27>>e = d.‟
e =
1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i
>>f = d‟
f=
1.0000-1.0000i 2.0000-2.0000i 3.0000-3.0000i
1.2.8.2 Các phép toán đối với mảng
a Các phép toán đối với mảng – vô hướng (Các phép cộng, trừ, nhân, chia từng
phần tử với hằng số)
Trang 28Ta thực hiện tương tự đối với các phép toán trừ, nhân và chia
b Các phép toán đối với mảng - mảng
2n 22 21
1n 12 11
ccc
ccc
ccc
2n 22 21
1n 12 11
dd
d
ddd
ddd
Trang 32cm1^dm1 cm2^dm2 cmn^dmn
Trang 34a Công dụng: Cho phần dƣ của phép chia
b Cú pháp: r = rem(a,b)
c Ví dụ 1.23
>> r = rem(5,3)
r = 2 1.3.5 Hàm round
a Công dụng: Làm tròn số sao cho gần số nguyên nhất
a Công dụng: Làm tròn số về phía số nguyên nhỏ hơn
b Cú pháp: y = floor(x)
c Ví dụ 1.25
>> x=-1.9000 -0.2000 3.4000 5.6000 7.000
>> y=floor(x) y=-2 -1 3 5 7
Trang 361.4.2 Tính đạo hàm
1.4.2.1 Sử dụng hàm polyder
Tính đạo hàm của đa thức
0 1
1
n n
c Ví dụ 1.28 Tính đạo hàm của đa thức y = x3
Trang 37Trong đó:
+ polyder: Là hàm dùng để tính đạo hàm
+ y1, y2: Các ma trận hàng + q:Tử số
+ r: Mẩu số
c Ví dụ 1.29 Tính đạo hàm của phân thức
1 2
Ví dụ 1.30 Tính đạo hàm của hàm f(x)=sim(a*x)
>> syns a x % Tạo các biến đặc trƣng
>> f=sin(a*x); % Tạo biểu thức chữ
>> df=diff(f) % Tính đạo hàm của hàm f(x) theo biến x
f‟=n.xn-1
f=x^n diff(f) hay diff(f,x) g=sin(at+b)
g‟=a.cos(at+b)
g=sin(a*t+b) diff(g) hay diff(g,t)
Để tính đạo hàm bậc 2 của f trên theo x và a ta viết:
>> diff(f,2) % Đạo hàm bậc 2 của f theo x
ans=
-sin(a*x)*a^2
Trang 38>> diff(f,a,2)
ans=
-sin(a*x)*x^2 Hàm diff có thể dùng đối số là ma trận Trong trường hợp này đạo hàm được thực hiện trên từng phần tử
sin cos
cos cos
Để tính ma trận Jacobi J của phép biến đổi này ta dùng hàm jacobian Định
nghĩa toán học của J là:
) , , (
) , , (
r
z y x J
Trang 39J=
[cos(l)*cos(f), -r*sin(l)*cos(f), -r*cos(l)*sin(f)]
[cos(l)*sin(f), -r*sin(l)*sin(f), r*cos(l)*cos(f) ] [sin(l), r*cos(l), 0]
>>detf=simple(det(j))
detf=
-cos(l)*r^2 Chú ý: Là đối số thứ nhất của hàm jacobian phải là vectơ cột và đối số thứ hai là vectơ hàng Hơn nữa do định thức của ma trận Jacobian là biểu thức lƣợng giác khá phức tạp nên ta dùng lệnh simple để thay thế và rút gọn
) , (
) , (
v u
t r J
f
h
) ( ) ( lim )
Trang 400
cho 3 kết quả khác nhau: Không xác định, -∞ và +∞ Trong trường hợp không tồn tại giới hạn Symbolic Math Toolbox trả về kết quả NaN
Bảng sau cho các giới hạn
Hàm toán học Lệnh Matlab
)(lim
0 f x