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 15 tháng 03 năm 2016
Tác giả luận văn
Thịnh Văn Nghĩa
Trang 2MỤC LỤC
Trang
LỜI CẢM ƠN 1
MỞ ĐẦU 1
I Lý do chọn đề tài 1
II Mục đích, đối tượng, phạm vi nghiên cứu của luận văn 2
III Các luận điểm cơ bản và đóng góp mới của tác giả 2
IV Phương pháp nghiên cứu 2
CHƯƠNG I: TỔNG QUAN VỀ MATLAB 1 Tổng quan 3
2 Tổ chức trong Matlab 3
2.1 Biến 3
2.2 Số và các toán tử 3
2.3 Biểu thức 4
2.4 Hàm 5
2.5 Vectơ 6
2.6 Ma trận 8
2.7 Các hàm giải phương trình 11
2.8 Các hàm số học 13
2.9 Các hàm lượng giác 14
2.10 Các hàm giải tích 14
2.11 Đồ thị 16
CHƯƠNG II : Lập trình trong Matlab 1 Chương trình trong Matlab 20
2 Các dòng lệnh, các lệnh truy xuất 20
2.1 Các dòng lệnh 20
2.2 Câu lệnh chú thích 20
2.3 Lệnh gán 21
2.4 Câu lệnh vào/ra dữ liệu 21
Trang 33 Cấu trúc điều khiển 23
3.1 If elseif else 23
3.2 Câu lệnh swich-case 24
3.3 Câu lệnh for 25
3.4 Câu lệnh while 25
CHƯƠNG III : Các phương trình và hệ phương trình cơ bản 1 Các loại phương trình 27
1.1 Các loại phương trình giải gần đúng 27
1.1.1 Giải phương trình theo phương pháp dây cung 27
1.1.2 Giải phương trình theo phương pháp chia đôi 28
1.1.3 Giải phương trình theo phương pháp pháp tuyến 31
1.2 Các loại phương trình giải đúng 33
1.2.1 Phương trình bậc nhất 33
1.2.2 Phương trình bậc hai 34
1.2.3 Phương trình bậc ba 35
2 Các loại hệ phương trình 37
2.1 Giải hệ phương trình tuyến tính theo phương pháp Cramer 37
2.2 Giải hệ phương trình tuyến tính theo phương pháp Gauss 40
CHƯƠNG IV : Ứng dụng matlab để giải một số bài toán giải phương trình và hệ phương trình trong Toán THPT 1 Giải phương trình 46
2 Giải hệ phương trình 58
KẾT LUẬN 68
TÀI LIỆU THAM KHẢO 70
Trang 4Hiện nay, ngoài khai thác các ứng dụng trong soạn thảo văn bản và một số phần mềm ứng dụng trong quản lý giáo dục, thì việc sử dụng các phần mềm để hỗ trợ giải quyết các bài toán thường gặp chưa được đầu tư nghiên cứu và sử dụng đúng mức Chính vì vậy tôi quyết định chọn nghiên cứu về phần mềm hỗ trợ cho giảng dạy và học tập Có rất nhiều các phần mềm được sử dụng hiện nay như lập trình Pascal, lập trình C,lập trình C#, fortran Tuy nhiên có một phần mềm mà nó
có trợ giúp trực quan các bài toán trong nhiều lĩnh vực cũng như trong chương trình Toán THPT, đó là phần mêm Matlab
Hiện nay, Matlab là phần mềm được sử dụng và giảng dạy tại nhiều trường đại học, là công cụ hỗ trợ trong đổi mới phương pháp giảng dạy ở nhiều môn học : Toán phổ thông, Toán cao cấp, Vật lý phổ thông, Vật lý đại cương, Toán kinh tế, Xác suất thống kê
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ề Matlab còn hạn chế, nên để có một lượng kiến thức phong phú trong luận văn này, tác giả gặp không ít khó khăn
II Mục đích, đối tƣợng, phạm vi nghiên cứu của luận văn
Trang 5
III Các luận điểm cơ bản và đóng góp mới của tác giả
Về lý thuyết, 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, xây dựng một bài giảng cho giáo viên dạy Toán THPT Nhưng bên cạnh đó, tác giả cũng chỉ ra thêm các phương pháp, hướng đi để giải quyết một
số dạng bài toán liên quan, nhất là các bài toán giải bằng phương pháp hàm số, sử dụng đồ thị
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 qua giáo trình cơ bản được học
- Tìm hiểu qua thực tế giảng dạy THPT
- Tổng hợp và trình bày
Trang 6dưới dạng các ký hiệu toán học quen thuộc kỹ thuật như
- Quy tắc đặt tên biến
Tên biến là dãy ký tự (31 ký tự), (không chứa dấu cách)
Tên biến gồm chữ cái, chữ số, dấu gạch dưới (bắt đầu bằng chữ cái)
Tên biến phân biệt chữ hoa và chữ thường
Trang 74
- MatLab sử dụng ký hiệu thập phân theo qui ước với số chữ số tùy chọn và các dấu +,- cho các số Ký hiệu khoa học sử dụng chữ cái e cho lũy thừa của 10 Số phức sử dụng các chữ i hoặc j cho đơn vị ảo
- Chỉ dùng dấu ngoặc trong để xác định trình tự thực hiện của các phép toán
- Viết lần lượt từ trái qua phải
- Không được bỏ qua dấu * trong tích
- Thứ tự ưu tiên phép toán :
+ Tính đại lượng trong ngoặc + Tính phép toán lũy thừa + Tính phép toán *, /, thực hiện từ trái qua phải + Tính phép toán +, - , thực hiện từ trái qua phải
Trang 85
2.3.2 Biểu thức quan hệ
Hai biểu thức cùng kiểu liên kết với nhau bởi phép toán quan hệ cho một biểu thức quan hệ
- Dạng của biểu thức quan hệ
<Biểu thức 1> <Phép toán quan hệ> <Biểu thức 2>
Ví dụ
X<6
A +2 > = 4+B
- Sự thực hiện của biểu thức quan hệ:
+ Tính giá trị của biểu thức 1, biểu thức 2 + Thực hiện phép toán quan hệ
- Kết quả của biểu thức quan hệ là Đúng (1) hoặc Sai (0)
NaN hoặc nan Dùng để chỉ số không xác đinh như kết quả 0/0
Trang 96
Realmin Số nhỏ nhất có thể được của số thực
Realmax Số lớn nhất có thể được của số thực
+ Hàm linspace tạo ra một vector với khoảng cách tuyến tính Nó tương
tự như toán tử hai chấm ":", nhưng xác định trước số điểm chia n
+ hàm y = linspace(a,b) tạo ra một vecto hàng với 100 điểm cách đều nhau bao gồm cả a và b
- Hàm logspace
*Cú pháp : y = logspace(a,b)
y = logspace(a,b,n)
Trang 107
y= logspace(a,pi)
*Giải thích
+ Hàm logspace tạo một vectơ vơi khoảng cách logarit
+ Hàm y = logspace(a,b) tạo ra một vectơ hàng gồm 50 điểm trong
Trang 118
- Các phép toán trên vectơ
a.*b : nhân từng từ
a.^b : trả về vectơ dạng (a_1^{b_1}, ,a_n^{b_n})
a.^n : lũy thừa từng từ
a.\b : chia trái
a./b : chia phải
a & b : không nhầm lẫn với &&
a | b : không nhầm lẫn với ||
~a : phủ định
arrayfun(fn,a) : tính giá trị hàm fn tại từng thành phần của a
isequal(a,b) : Đúng nếu a, b giống nhau
ismember(a,b) : Đúng khi mọi phần tử của a đều là phần tử của b
intersect(a,b) : Các phần tử chung của a và b (phép giao 2 tập hợp)
union(a,b) : Tất cả các phần tử thuộc a hoặc b (phép hợp 2 tập hợp)
setdiff(a,b) : Các phần tử thuộc a mà không thuộc b (hiệu 2 tập hợp)
setxor(a,b) : Các phần tử không thuộc phần chung của a và b
2.6 Ma trận
Trong Matlab, ma trận được khởi tạo rất đơn giản Cũng giống như vectơ,
ma trận tạo bằng cách nhập các phần tử của ma trận trong dấu [], mỗi hàng được phân cách bởi dấu “;”
Trang 129
1 Phép toán giữa ma trận với số đơn
Matlab thực hiện phép toán giữa số đơn với ma trận bằng cách thực hiện phép toán đó với lần lượt các phần tử của ma trận Các phép toán đơn giản gồm có phép cộng, phép trừ, phép nhân, phép chia
Thực hiện các phép toán giữa các ma trận không đơn giản như trên, mà còn
bị phụ thuộc vào các điều kiện số hàng của ma trận trước bằng số cột ma trân sau
Trang 142.7 Các hàm giải phương trình
a/ Hàm conv
Công dụng : Dùng để nhân hai đa thức
Cú pháp :
>>y1=[an an-1 a0] %nhập hệ số của đa thức y1
>>y2=[bn bn-1 b0] %nhập hệ số của đa thức y2
Trang 1512
0 -2 -4 9 57 38 45
62 96 59 28 38 14
Kết quả : y3(x) = 0x12 –2x11 –4x10 +9x9 +57x8 +38x7 +45x6 +62x5 +96x4 +59x3 +28x2+38x1 +14x
b/ Hàm deconv
Công dụng : Chia hai đa thức
Cú pháp :
>>y1=[an an-1 a0] %nhập hệ số của đa thức y1
>>y2=[bn bn-1 b0] %nhập hệ số của đa thức y2
Trang 1916
>>df=diff(f) >>diff(f,2) %tính đạo hàm cấp 2 của f(x)
Ví dụ : tính đạo hàm của hàm y = sin2x
- Hàm int(f) sẽ tìm một tích phân theo các biến độc lập mặc định
- Hàm int(f,s) sẽ tìm lấy tích phân theo biến đặc trưng s
- Hàm int(f,a,b) tìm tích phân theo biến độc lập mặc định theo cận từ a đến b
- Hàm int(f,s,a,b) tìm tích phân theo biến đặc trưng s lấy cận từ a đến b
Trang 2017
>>plot(x,y,‟linetype‟) Trong đó : linetype là kiểu phần tử tạo nét, bao gồm 3 thành phần
Trang 2118
c Để vẽ nhiều đồ thị trong một cửa sổ, sử dụng lệnh
>> subplot(m, n, p) Lệnh này sẽ tạo ra một ma trận m hàng, n cột chứa m x n đồ thị, p là vị trí từng đồ thị, thứ tự từ trên xuống dưới
2.11.2 : Đồ thị 3D
a Cú pháp : >> plot3(x, y, z) Trong plot3 ta cần xác định các vecto (x, y, z) Để vẽ mặt z=f(x,y) sử dụng lệnh >> meshgrid(x,y)
Trang 2219
Trang 2320
Chương II : Lập trình trong Matlab
1 Chương trình trong Matlab
Một chương trình Matlab thường được soạn thảo trong các M-File, script file (các file có đuôi m)
Để thực hiện các dòng lệnh trong file abc.m nào đó, ta vào cửa số làm việc
và gõ lệnh abc và gõ Enter
Lưu ý: Lúc này đường dẫn tới thư mục chứa file abc.m (và các file liên quan) phải được khai báo trong Current Dierctory của Matlab Khi khởi động thư mục này mặc định là Work trong phần cài đặt Matlab (thường là C:\Matlab\Work)
2.Các dòng lệnh, các lệnh truy xuất
2.1 Các dòng lệnh
Giống như các ngôn ngữ lâp trình khác, trong Matlab nhiều dòng lệnh có thể đặt trên cùng một hàng và cách nhau bởi dấu phẩy (,) hoặc dấu chấm phẩy (;) Trong đó :
- Dấu phẩy (,) yêu cầu Matlab thể hiện kết quả ra màn hình
- Dấu chấm phẩy (;) không cho phép hiện kết quả ra màn hình
Trang 242.4 Câu lệnh vào/ra dữ liệu
2.4.1 Lệnh đƣa dữ liệu vào
Để đưa dữ liệu vào ta sử dụng lệnh input
a Công dụng: Dùng để nhập vào một giá trị
b Cú pháp:
tên_biến=input(„promt‟) tên_biến=input(„promt‟,‟s‟)
c Giải thích
tên_biến: là nơi chứa dữ liệu nhập vào
„promt‟ : Chuỗi ký tự muốn nhập vào
„s‟: Cho biết giá trị nhập vào bao nhiêu ký tự
Trang 2522
Ví dụ :
>> a=input('nhap gia tri cua a : ')
nhap gia tri cua a : 2016
a =
2016
2.4.2 Lệnh đƣa dữ liệu ra màn hình
Để đưa dữ liệu ra màn hình ta sử dụng lệnh Disp
a Công dụng: trình bày nội dung của biến x ra màn hình
Trang 2623
- Hàm M_file không được nhập vào từ cửa sổ lệnh mà thong qua một trình soạn thảo văn bản từ ngoài
- Khi Matlab thực hiện lần đầu hàm M_file, nó sẽ mở file văn bản tương ứng
và dịch các dòng lệnh của file đó ra một dạng mã lưu trong bộ nhớ nhằm mục đích tăng tốc độ thực hiện các lời gọi tiếp theo Nếu trong hàm có chứa lời gọi M_file khác thì các hàm đó cũng được dịch vào bộ nhớ
- Mỗi hàm có một không gian làm việc riêng tách biệt so với môi trường Matlab, mối quan hệ duy nhất giữa các biến trong hàm với môi trường Matlab là các biến vào và ra của hàm đó
3.Cấu trúc điều khiển
3.1 if elseif else
a Công dụng : Thực hiện khi thỏa mãn điều kiện
b Cú pháp:
if biểu thức điều kiện 1
thực hiện công việc 1 elseif biểu thức điều kiện 2
thực hiện công việc 2 else
thực hiện công việc 3 end
Trang 2724
Khi biểu thức điều kiện 1 nhận giá trị sai thì kiểm tra biểu thức điều kiện 2 nếu đúng thì thực hiện công việc 2 rồi kết thúc, ngược lại thực hiện công việc 3 rồi kết thúc
3.2 Câu lệnh swich- case
a Công dụng: Khi một chuỗi các lệnh đánh giá dựa trên một biểu thức hoặc
biểu thức điều kiện với nhiều giá trị thử khác nhau
- Biểu thức điều kiện: Phải dạng số hoặc chuỗi
- Giá trị thứ 1,… giá trị thứ n: Phải dạng chuỗi hoặc số
d Nguyên lý hoạt động
Khi gặp câu lệnh swich – case thì lệnh case sẽ so sánh giá trị của biểu thức điều kiện với giá trị thứ I nếu đúng thì thực hiện khối lệnh I rồi kết thúc câu lệnh swich – case Ngược lại lệnh case sẽ so sánh với giá trị thử i+1
Trang 2825
Nếu trong các giá trị thử sau từ khóa case không có giá trị nào thỏa mãn giá trị của biểu thức điều kiện thì sẽ đi thực hiện khối lệnh n+1( sau otherwise) rồi thoát
for biến điều khiển= giá trị đầu: giá trị cuối
thực hiện công việc;
a Công dụng: Dùng để thực hiện một công việc cần lặp đi lặp lại theo 1 quy
luật nào đó với bước lặp không xác định, phụ thuộc vào biểu thức điều kiện
Trang 2926
Thực hiện công việc : là các lệnh cần thi hành, có thể có nhiều lệnh, kết thúc lệnh phải có dấu chấm phẩy
d Nguyên lý hoạt động:
Bước 1: Kiểm tra biểu thức điều kiện
Bước 2: Nếu biểu thức điều kiện có giá trị sai thì thoát khỏi while
Bước 3: Thực hiện công việc
Bước 4: Quay lại bước 1
Trang 3027
Chương III : Các phương trình và hệ phương trình cơ bản
1 Các loại phương trình
1.1 Các loại phương trình giải gần đúng
1.1.1 Giải phương trình theo phương pháp dây cung
a Điều kiện hội tụ
1) f và f‟ liên tục trên [a,b]
2) f‟ và f‟‟ không đổi dấu trên [a,b];
err=x2-x1;
iteration=[it_count x1 fx1 err]
Trang 3128
pause x0=x1; x1=x2; fx0=fx1;
end
if it_count>maxiter
disp(‘ ……… ’) disp(‘ ……… ’) disp(‘ ……… ’) else
format long root=x2;
format short e err
format short it_count end
end
1.1.2 Giải phương trình theo phương pháp chia đôi
a Nội dung phương pháp
Giả sử (a,b) là khoảng cách ly nghiệm của phương trình (3.1) Nội dung của phương pháp chia đôi như sau:
Chia đôi khoảng (a,b)
mà tại hai nút của khoảng hàm số f(x) có khác dấu nhau, làm khoảng cách ly
nghiệm mới Ta gọi khoảng này là (a1,b1), có độ dài là: 1 1 1( )
2
Lại chia đôi khoảng (a1,b1) và tiếp tục làm lại như trên
Trang 3229
b Sự hội tụ của phương pháp
Nếu thực hiện vô số lần phương pháp chia đôi với khoảng (a,b) thì hoặc tại một lần nào đó, điểm giữa của khoảng là nghiệm đúng của phương trình (3.1) hoặc
ta nhận được một dãy vô hạn các khoảng chồng lên nhau và thu nhỏ dần (a1,b1), (a2,b2), sao cho f(an)f(bn) <0 (3.2)
% tham so root: Nghiem sai so
% tham so ep: sai so cho phep
% tham so max_iterate: la so lan lap cho truoc (toi da)
% tham so index_f: xac dinh motj ham cuj the nao do
ma ham nay duoc dinh nghia trong chuong trinh tao ham ban dau
Trang 3431
Value=x-exp(-x) Case 3
% tao file ctchiadoi1.m de chay chuong trinh
Clear all,clc
A0=1; b0=2; exp=0.0001; max_iterate=10; index_f=1; Root=chiadoi1(a0,b0,ep,max_iterate,index_f);
1.1.3 Giải phương trình theo phương pháp pháp tuyến
a Điều kiện hội tụ
- f, f‟ liên tục trên [a,b]
- f, f‟ không đổi dấu trên [a,b]
- Chọn xấp xỉ đầu x0[ , ]a b sao cho f(x0).f‟‟>0
b Tính nghiệm gần đúng x n (n là số lần lặp cho trước)
- Chọn xấp xỉ ban đầu x0=a nếu f(a).f‟‟> 0 ngược lại chọn x0=b
1 1
Trang 351 1
Trang 3633
else
format long root=x1;
format sort e err
format short it_count end
- Nếu a b 0: phương trình có vô số nghiệm
- Nếu a 0; b 0 : phương trình vô nghiệm
- Nếu a 0 : phương trình có nghiệm duy nhất b
x a
if b~=0
disp('ptvn') else
disp('ptvsn')
Trang 3734
end end
- Nếu 0: phương trình vô nghiệm thực
- Nếu 0: phương trình có nghiệm kép
2
b x