Tập tin loại này có thể lưu nhiều hơn một biến nhưng nó chỉ được sư dụng trong ứng dụng Matlab và không chia sẽ được với những chương trình khác.. Ta cũng có thể tham chiếu đến các phần
Trang 1Matlab ứng dụng
trong kỹ thuật
Trang 2Chương I
MATLAB CƠ BẢN
I TỔNG QUAN MÔI TRƯỜNG LÀM VIỆC CỦA MATLAB:
1 Khởi động và thoát khỏi Matlab
Khởi động Matlab:
Trên cửa sổ Window nhấp đúp lên biểu tượng của Matlab
Vào Start -> All Programs -> Matlab release 12 -> Matlab 12
Sau khi khởi động ứng dụng Matlab sẽ được mở, giao diện chính của Matlab như hình
Thoát khỏi Matlab:
Để thoát khỏi ứng dụng Matlab có thể chọn Exit Matlab từ menu File trên Desktop hoặc nhập quit trong Command Window
exit, quit Thoát khỏi Matlab finish Kết thúc Mfile
2 Giới thiệu môi trường làm việc và các công cụ của Matlab
Giới thiệu khái quát giao diện làm việc chính của Matlab
Khi khởi động Matlab giao diện chính sẽ mở ra, giao diện này chứa các công cụ (giao tiếp người dùng) để quản lý các tập tin, biến và các ứng dụng phụ trợ khác
Sử dụng Matlab như một máy tính
Khi dấu nhắc “>>” nhấp nháy trong Command Window chỉ ra rằng Matlab đã sẳn sàng cho việc nhập dữ liệu Khi nhìn thấy dấu nhắc “>>” lúc đó bạn có thể nhập vào một biến hoặc chạy một hàm nào đó
Bạn chỉ cần nhập vào biểu thức bạn muốn tính Ví dụ ta muốn tính biểu thức
1 2 3 bạn nhập biểu thức sau dấu nháy “>>” như sau
Nếu không nhập vào biến để lấy giá trị ra, Matlab sử dụng biến mặc định ans
(answer) để nhận giá trị của phép tính vừa thực hiện ans cũng như các biến khác,
Trang 3bạn có quyền tham chiếu đến nó khi cần thiết Trong trường hợp bạn muốn dùng biến để lấy giá trị đầu ra, bạn chỉ cần nhập
Tên biến cũng được sử dụng để tham chiếu đến kết quả của phép tính trước Khi
ta cần tính 4 x ta chỉ cần nhập
Kết thúc mỗi dòng lệnh, nhấn <Enter> nếu bạn muốn kiểm tra kết quả của
việc thực thi dòng lệnh ngay lập tức Ngược lại, nhập dấu “;” trước khi nhấn
<Enter> kết quả thực thi của dòng lệnh vừa nhập sẽ không hiển thị trên màn hình
Ta có thể nhập nhiều biểu thức trên cùng một dòng
3 Biểu thức ( EXPRESSION)
Cũng giống như hầu hết các ngôn ngữ lập trình khác, MATLAB cũng cung cấp những biểu thức toán học, nhưng không giống các ngôn ngữ lập trình khác, hầu hết các biểu thức này đều liên quan đến ma trận
Biến số ( variables)
Trang 4Biến chỉ sử được tối đa 31 ký tự có nghĩa, biến phân biệt giữa chữ hoa và chữ thường
Biến bắt đầu bằng một từ theo sau là từ hay số hoặc dấu gạch chân (_)
Có hai loại biến:
Biến toàn cục: có tác dụng trong toàn bộ chương trình
Biến cục bộ: chỉ có tác dụng trong phạm vi khai báo (nội trong hàm)
Ngoài ra MATLAB còn cung cấp một số biến đặc biệt ví dụ như pi, i, j, ans … Dùng các lệnh who và whos để kiểm tra biến, lệnh clear và clear all để xóa
biến đã sử dụng
Ví dụ:
3.2 Số (Numbers):
MATLAB sử dụng các quy ước thập phân Sử dụng ghi chú khoa học (
scientific notation) e và số ảo ( imaginary Numbers) để biểu diển giá trị số
Tất cả những con số đều được lưu kiểu định dạng (format)
Dùng hàm format để định dạng kiểu số:
Lệnh sử dụng Kết quả Ví dụ: số pi
format long 16 con số sau dấu chấm 3.14159265358979
format long e 16 con số có dấu 3.141592653589793e+00 format short 5 con số sau dấu chấm 3.1416
format short e 5 con số có dấu 3.1416e+00
format bank Thập phân hai chữ số 3.14
Ví dụ:
Trang 5
MATLAB cung cấp một lượng lớn các hàm toán học cơ bản bao gồm abs,
sqrt, exp, sin,… Trong MATLAB có hai loại hàm:
Các hàm build-in là những hàm chúng ta chỉ được sử dụng chứ không
được hiệu chỉnh
Các hàm M-file chúng ta có thể xem và hiệu chỉnh nội dung của hàm
Một vài hàm đặc biệt, cho giá trị là hằng số:
pi: 3.141759…
i,j: đơn vị ảo i,j = 1
eps: điểm chấm động có quan hệ đến độ chính xác, 2-52
realmin: Số chấm động nhỏ nhất, 2-1022 realmax: Số điểm chấm động lớn nhất, 21023
NaN: Not a number( Không phải là một con số)
Inf: Infinity( Số vô cùng lơn, không xác định)
4 Nhập và xuất dữ liệu thông qua tập tin
Matlab sử dụng hai dạng tập tin dữ liệu
Dạng thứ nhất mat-file là tập tin được định dạng kiểu nhị phân, tập tin loại này có phần mở rộng *.mat Tập tin loại này có thể lưu nhiều hơn một biến nhưng nó chỉ được sư dụng trong ứng dụng Matlab và không chia sẽ được với những chương trình khác
Dạng thứ hai dat-file là tập tin được định dạng kiểu ASCII, tập tin loại này có phần mở rộng *.mat dat-file có thể được chia sẽ với các ứng dụng khác, tuy nhiên nó chỉ có thể lưu được một biến duy nhất
Để lưu và tải tập tin ta sử dụng hàm save và load
Ví dụ lưu tập tin dữ liệu mat-file trong thư mục hiện hành và lấy dữ liệu trở lại từ mat-file
Trang 6Nếu muốn lưu dữ liệu này vào tập tin dat-file trong thư mục hiện hành ta làm như sau:
Ngoài ra ta còn có thể tạo một tin dữ liệu có phần mở rộng *.m
5 Nhập và xuất dữ liệu bằng bàn phím
Trang 7Lệnh ‘input’ yêu cầu người dùng nhập dữ liệu từ phím
Để thể hiện giá trị của một biến và chuỗi trên màn hình ta sử dụng hai lệnh
‘disp()’ và ‘fprintf’
6 Lưu và tải tập tin có phần mở rộng *.txt
6.1 Lưu tập tin *.txt
6.2 Tải tập tin *.txt
Trang 8II CÁC HÀM TOÁN HỌC
Có rất nhiều hàm chuẩn được xây dựng trong Matlab để hổ trợ việc tính toán cho người sử dụng
Những hàm toán học cơ bản trong Matlab
cos(x) Tính cos của x cos(2)
sin(x) Tính sin của x cos(10)
tan(x) Tính tang của x sin(7)
acos(x) Tính acos của x tan(2)
asin(x) Tính asin của x acos(5)
atan(x) Tính atan của x asin(4)
exp(x) x
log(x) Lấy logarit cơ số e sqrt(8)
log10(x) Lấy logarit cơ số 10 log(4)
abs(x) Trị tuyệt đối của x log10(10)
sign(x) Lấy dấu của x sign([1 -1 5]) = [1 -1 1]
max(x) Lấy giá trị lớn nhất max([1 -1 5]) = 5
min(x) Lấy giá trị nhỏ nhất min([1 -1 5]) = -1
ceil(x) Làm tròn về dương vô cùng ceil([1.25, -4.54, 6.5, -7.1 ])
1 Tạo ma trận
Bạn có thể tạo ma trận theo nhiều cách khác nhau:
Xây dựng ma trận bằng việc nhập từng phần tử một
Tải một file dữ liệu từ bên ngoài
Xây dựng các ma trận nhờ các hàm build-in
Tạo một ma trận bằng hàm do ta tạo ra
Một vài nguyên tắc cơ bản để xây dựng ma trận là:
Trang 9 Phân biệt giữa các phần tử trong hàng là khoảng trắng hoặc dấu phẩy
Sử dụng dấu chấm phẩy (;) để ngăn cách giữa các hàng
Bao quanh một ma trận là cặp dấu: “ [ ] ”
Ví dụ: cần khai báo một ma trận như sau:
Khi ta không nhập một biến lấy dữ liệu ra, Matlab tự động sử dụng biến ans
để gán kết quả của phép tính Và biến này cũng được sử dụng như những biến khác
Vec tơ hàng là ma trận 1 x n gồm 1 hàng và n cột
Vec tơ cột là một ma trận cỡ m x1, gồm một cột và m hàng
Sử dụng dấu “ ’ ” để chuyển đổi qua lại giữa các vec tơ hàng và vectơ cột
Ma trận số phức
Trang 102 Chỉ số ma trận
Phần tử ở dòng i cột j của ma trận A được kí hiệu A(i,j) Ví dụ A(4,2) là phần tử ở dòng bốn, cột hai của ma trận A
Ta cũng có thể tham chiếu đến các phần tử của một ma trận bằng một chỉ số duy nhất A(k), cách này thường dùng để tham chiếu đến các phần tử của vector hàng hoặc cột Tuy nhiên ta cũng có thể áp dụng cho các ma trận hai chiều, trong trường hợp này chỉ số là vị trí của phần tử trong ma trận
Nếu ta truy xuất vào phần tử ở bên ngoài ma trận Matlab sẽ báo lỗi
Ngược lại, nếu ta gán một giá trị cho một phần tử ở bên ngoài ma trận thì kích thước ma trận sẽ tự động tăng lên để cung cấp vị trí cho các phần tử mới
Truy xuất vào hàng thứ i, cột bất kì của ma trận A ta thực hiện A(i ,: ) Ngược lại khi cần truy xuất vào hàng bất kì, cột j của ma trận A ta thực hiện A(:,j)
Ma trận Phần tử hàng của ma Phần tử cột của ma
Trang 11trận trận
Toán tử “ : ” đây là một trong những toán tử quan trọng nhất của Matlab, nó
xuất hiện trong các dạng khác nhau
Biểu thức
Với khai báo như trên ta thu được một vactor có một hàng, năm cột với bước nhảy mặc định là một
Để định giá trị bước nhảy ta khai báo như sau:
Khai báo chỉ số phần tử của ma trận A(1:k,j) nghĩa là lấy các phần tử ở dòng một đến dòng k và cột j của ma trận A
Trang 12Nếu muốn truy xuất vào phần tử cuối của hàng hoặc cột trong một ma trận ta có thể thực hiện như sau:
Xóa một hàng hoặc một cột của một ma trận thực hiện phép gán hàng hoặc
cột cần xoá bỏ bằng [ ]
Thêm vào một ma trận một hàng hoặc một cột ta thực hiện như sau:
Ghép chuỗi: là quá trình xử lý lắp ghép nhiều ma trận con (nhỏ) thành một ma trận lớn, yêu cầu của phép ghép là các ma trận con phải có kích thước phù hợp
3 Các hàm liên quan đến xử lý ma trận
clear all; clc
A1=[1 2;5 6], A2=[3 4;7 8], A3=[9 10 11 12;13 14 15 16],
A=[A1 A2;A3]
Trang 13size Cho biết kích thướt của ma trận
median: Tính giá trị trung bình của ma trận
max Tìm phần tử lớn nhất trong ma trận
min Tìm phần tử nhỏ nhất trong ma trận
mean Tính giá trị trung bình của dãy
length Hàm trả về chiều dài của một mảng
4 Một số hàm tạo nhanh ma trận
eye(m,n) Tạo ma trận đồng nhất có kích thước mxn eye(n) Tạo ma trận vuông đồng nhất có kích
thước nxn zeros(m,n) Tạo ma trận có kích thước mxn với tất cả
các phần tử bằng không ones(m,n) Tạo ma trận có kích thước mxn với tất cả
các phần tử bằng một diag(A) Chéo hóa ma trận A rand(m,n) Tạo ma trận ngẫu nhiên có kích thước mxn
5 Các phép tính trên ma trận
+, - Cộng hoặc trừ hai ma trận cùng kích thướt
A*B Nhân hai ma trận A và B
A/B Chia hai ma trận (chia phải) A và B
A\B Chia trái hai ma trận B và A
A.*B Nhân từng phần tử của hai ma trận A và B
A./B Chia từng phần tử của hai ma trận A và B
A.\B Chia từng phần tử của hai ma trận B và A
.^ Mũ cho từng phần tử của mảng
2./x
2
1 2/3 x/y
1/2
1 3/2
x./2
1/2
1 3/2
Trang 14Các bước đồ họa:
Y= sin(X);
2 Chọn cửa sổ và vị trí của đối tượng đồ
họa trong cửa sổ
figure(‘Name’,’Hinh sine’); subplot(2,2,1);
3 Gọi hàm vẽ đồ thị h =plot(X,Y);
4 Xác định thuộc tính cho hình như kiểu
đường, màu sắc, … set(h, ‘LineStyle’,’-‘,’Color’,’r’)
5 Xác định các thuộc tính của axis, axes,
7 Xuất kết quả
Trang 15V LẬP TRÌNH VỚI MATLAB
MATLAB cho phép người dùng lập trình theo hai loại : scripts và function
SCRIPTS: Là hình thức đơn giản nhất của M-file bởi vì nó không có thông số vào và ra Chúng là một tập hợp các lệnh và các hàm của MATLAB Scripts hoạt
động dựa vào đối tượng tồn tại trong Workspace Tất cả các biến tạo ra trong
scripts đều có thể sử dụng sau khi scripts kết thúc
Ví dụ:
FUNCTION : Là scripts tuy nhiên có thêm đối số vào ( input arguments)
và đối số ra ( output arguments) Hoạt động của biến trong một workspace riêng, các biến này chia rẽ với các biến trong workspace mà ta thực hiện trong scripts
hay ở command line
Các thành phần cơ bản của một hàm (function)
Dòng định nghĩa hàm
Dòng cho biết ý nghĩa của hàm (Dòng H1 )
Dòng chú thích ý nghĩa của hàm ( Dòng Help line )
Nội dung của hàm
Dòng định nghĩa hàm cho biết: Tên của hàm và các đối số của hàm được minh
Trang 16Việc đặt tên hàm cũng có ràng buộc giống như việc đặt tên biến: bắt đầu bằng tên hàm bằng kí tự tiếp theo là các con số và dấu gạch dưới
Đối số của hàm: Nếu hàm có nhiều giá trị trả về thì ta đặt tất cả các đối số này trong dấu ngoặc vuông []
function [x,y,z]= sphere (theta, phi, rho)
Nếu hàm không có giá trị trả về ta có thể để trống hay để dấu []
function print_result (x) hay function []= print_result (x)
Dòng H1: Đây là dòng trợ giúp đầu tiên, cho biết ý nghĩa của hàm, dòng này
ngay sau dòng định nghĩa hàm và bắt đầu với kí tự “ % ”
Ví dụ : hàm average.m
% AVERAGE means of vectơ Elements
Dòng này sẽ là dòng đầu tiên xuất hiện khi bạn gõ help function_name ( Tên hàm
) tại dòng nhắc (>>) của MATLAB Dòng này chứa thông tin rất quan trọng của hàm
Các dòng trợ giúp ( Help line):
Các dòng này được tạo ra nhmằ mục đích chú thích các thông số của hàm cũng như các ví dụ khi sử dụng hàm này Các dòng này xuất hiện sau dòng H1 line khi bạn gõ
help function_name tại dòng nhắc của MATLAB Các dòng này sẽ kết thúc khi có
dòng trắng giữa hai dòng có “ %”
Ví dụ bạn gõ help sin tại dòng nhắc MATLAB:
Có kết quả như sau:
Nội dung của hàm: đây chính là phần chính của hàm
Trang 17Chú thích trong MATLAB :
Như đã đề cập ở trên, Dòng chú thích là dòng bắt đầu với dấu % Dòng chú
thích có thể xuất hiện bất cứ đâu trong *.m ( tập tin của MATLAB) và ta có thể
đặt ở cuối dòng lệnh
Ví dụ:
%% Tinh tong cac phan tu
y=sum(x) % su dung ham sum
Hàm hoạt động như thế nào:
Người dùng có thể gọi hàm ở dòng nhắc Matlab hay bất cứ nơi nào trong
*.m ( tập tin của MATLAB) chắc rằng các thông số cần thiết cho hàm đủ là được
Khi gặp một tên mới MATLAB :
1 Kiểm tra xem có phải là tên biến hay không
2 Kiểm tra xem có phải là hàm con (subfunction) và hàm riêng ( private function( Hàm nằm trong thư mục con của thư mục hiện hành gọi là hàm riêng)) hay không
3 Kiểm tra xem hàm này có trong đường dẩn hiện hành hay không
Nội dung của hàm
Dòng H1 Các dòng trợ giúp
function [avg,med] = newstats(u) % Primary function
% NEWSTATS Find mean and median with internal
Trang 18Kiểm tra biến vào và ra của một hàm:
Ta sử dụng hai hàm sau: nargin và nargout để kiểm tra thông số vào và ra
của một hàm
Ví dụ:
Các phép toán logic:
Phép toán Ý nghĩa
& Và
Bảng toán logic
Các hàm logic ( Logical function :
1 C = xor(A,B)
Ý nghĩa:
Toán tử quan hệ:
Trang 19>= Lớn hơn hoặc bằng
disp(x);
Dạng 2:
if ( biểu thức logic ) lệnh 1
Trang 21Vòng lặp for :
for index = start:increment:end
statements
end
start và end lần lượt là giá trị bắt đầu và kết thúc của index, increment là
bước nhảy, nếu không cài đặt bước nhảy thì MATLAB mặc định increment =1, mỗi lần lặp sẽ kết thúc khi gặp từ khóa end Việc đầu tiên khi thực hiện vòng lặp
for là MATLAB kiểm tra xem sẽ lặp bao nhiêu lần, sau đó mới bắt đầu thực thi
vòng lặp
Lưu đồ:
Ví dụ1:
Trang 22Vòng lặp while :
while ( điều kiện )
lệnh
end
Đối với vòng lặp while thì số lần lặp không xác định, số lần lặp phụ thuộc vào điều kiện đúng hay sai Trong khi điều kiện còn đúng thì vòng lặp vẫn còn tiếp tục vì vậy trong phần lệnh của vòng lặp while luôn có điều kiện để dừng vòng lặp Trong quá trình xây dựng và chạy thử chương trình nếu rơi vào vòng
Trang 23lặp vô hạn thì bạn nhấn tổ hợp phím: Ctrl+(pause/brreak) để kết thúc chương trình
Lưu đồ:
Ví dụ 1:
Trang 25end
Trang 26Chương II
HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
Trong chương này ta đi giải (tìm nghiệm) của hệ phương trình tuyến tính có dạng:
Sẽ có ba trường hợp xảy ra:
Trường hợp thứ nhất: số phương trình (M) bằng với số ẩn số (N), vì vậy ma trận A vuông
do đó nghiệm của hệ phương trình có thể được viết 1
x A b trong trường hợp ma trận A không suy biến
Ta có thể sử dụng Matlab:
Nếu ma trận A vuông nhưng suy biến, tức là trong ma trận A có một vài hàng hoặc cột phụ thuộc tuyến tính với những hàng hoặc cột khác
Khi đó hạng của ma trận A nhỏ hơn M Nếu ta loại bỏ tất cả các dòng phụ thuộc tuyến tính cho đến khi chỉ còn lại những dòng độc lập tuyến tính, lúc này M<N ta qua trường hợp thứ hai
Trang 27Trường hợp thứ hai: số phương trình (M) nhỏ hơn số ẩn số (N), trong trường hợp này hệ phương trình không có nghiệm duy nhất
Trường hợp thứ ba: khi số phương trình (M) lớn hơn số ẩn số (N)
I GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH BẰNG THƯ VIỆN CỦA MATLAB
1 Thực hiện phép chia thông thường
2 Phương pháp tách LU
3 Sử dụng hàm solve
II TÌM NGHIỆM CỦA HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH BẰNG PHƯƠNG PHÁP SỐ
1 Phương pháp khử Gauss
Trang 28Để đơn giản ta giả sử ma trận hệ số A có kích thước 3x3 ta có hệ
aij = aij – factor * akj end
bi = bi - factor * bk end
Khử thuận
end
xn = bn / ann for i = n-1 : 1 sum = 0 for j = i+1 : n
Thế ngược
sum = sum + aij * xj
Khử thuận
Thế ngược
Trang 29end
xi = (bi - sum)/aii end
Chương trình Matlab giải hệ phương trình đại số tuyến tính bằng phương pháp khử Gauss
1 2 3
x x x
2 Phương pháp khử Gauss có tìm trụ lớn nhất
Phương pháp khử Gauss ở trên sẽ không thực hiện được nếu một trong các trụ
' ''
11, 22, 33
a a a bằng không, dù hệ có nghiệm duy nhất Ngoài ra nếu định thức của ma trận hệ số khác không, nhưng nếu một vài phần tử trụ về trị tuyệt đối rất nhỏ so với những phần tử còn lại trong cùng hàng thì khi chia các phần tử ấy cho phần tử trụ sai số làm tròn sẽ lớn, do đó có thể làm giảm nhiều độ chính xác của nghiệm tìm được
Để khắc phục những hạn chế vừa nêu, người ta thường dùng phương pháp Gauss có tìm trụ lớn nhất để tìm nghiệm Nội dung của phương pháp như sau:
Khi khử x1 trong sơ đồ Gauss, người ta chọn số lớn nhất về trị tuyệt đối trong các số
11, 21, 31
a a a làm trụ lớn nhất và gọi là trụ lớn nhất thứ nhất Sau đó ta hoán vị hàng
chứa trụ lớn nhất thứ nhất với hàng thứ nhất để trụ lớn nhất nằm đúng ở hàng một, cột một của sơ đồ Gauss và quá trình khử x1 được tiến hành như mục trên
Khi khử x2 trong sơ đồ Gauss, người ta chọn số lớn nhất về trị tuyệt đối trong các số
' '
22, 32
a a làm trụ lớn nhất và gọi là trụ lớn nhất thứ hai Sau đó ta hoán vị hàng chứa trụ
Trang 30lớn nhất thứ hai với hàng thứ hai để trụ lớn nhất nằm đúng ở hàng hai, cột hai của sơ đồ Gauss và quá trình khử x2 được tiến hành như mục trên
Cuối cùng thực hiện phép thế ngược để tìm nghiệm
Giải thuật của phép khử Gauss có tìm trụ lớn nhất:
for k = 1 : n-1 Kiểm tra tìm trụ lớn nhất
for i = k+1 : n factor = aik / akk for j = k+1 : n
aij = aij – factor * akj end
bi = bi - factor * bk end
Khử thuận
end
xn = bn / ann for i = n-1 : 1 sum = 0 for j = i+1 : n sum = sum + aij * xj end
Xi = (bi - sum)/aii
Thế ngược
end Chương trình Matlab giải hệ phương trình đại số tuyến tính bằng phương pháp khử Gauss có tìm trụ lớn nhất
1 2 3
x x x
Trang 313 Phương pháp tách LU
Tách LU của một ma trận không suy biến A nghĩa là biểu diễn ma trận A là tích của ma
trận tam giác dưới và ma trận tam giác trên PALU
Thực hiện phép biến đổi, ta xét ma trận không suy biến có kích thước 3x3
a tiến hành phép đổi hàng sao cho
1 0
k kk
a , nếu điều này không xảy ra ma trận
Trang 32suy biến dừng lại
5 Tăng k lên một đơn vị, nếu k < N-1 trở lại bước
1 ngược lại đến bước 6
6 Lấy phần dước của ma trận A(N-1) làm ma trận
L, phần trên làm ma trận U Sau khi tách được hai ma trận L,U ta tiến hành bước thế tiến và luồi để tìm nghiệm
s = bi s = bi for j = i+1 : n for j = 1 : i-1
x x x
Trang 334 Phương pháp lặp Jacobi
Từ hệ phương trình Ax b ta luôn biến đổi được x k1 Ax k b
x x
Trang 345 Phương pháp lặp Gauss-Seidel
Ở phương pháp lặp Gauss tại mỗi bước lặp các biến được cập nhật ở cùng thời điểm Trong phương pháp Gauss-Seidel sử dụng phương pháp sử lý song song, tại mỗi bước lặp giá trị của của biến được cập nhật theo theo trình tự Vì vậy trong cùng một bước lặp giá trị của mỗi biến được tính ở mỗi thời điểm khác nhau
x x
Trang 35III BÀI TẬP ÁP DỤNG
Bài 1: Giải bài toán chuyển động của Robot: cho Robot hai bậc tự do R_R Tại mỗi
khớp đặt một motor Gọi 1 và 2 là góc quay của các khớp tương ứng
Toại độ cuối của cánh tay Robot được tính
Với L1, L2 lần lượt là chiều dài các khâu
Bài toán đặc ra là xác định quy luật điều khiển motor để cánh tay Robot có thể di chuyển từ vị trí này đến vị trí khác với điều kiện vận tốc và gia tốc tại điểm đầu và điểm cuối bằng không
Đa thức được chọn để điều khiển motor
b b b b b b được xác định từ điều kiện chuyển động
Khi t 0, 1 0 và 2 0 đã biết và tt f, 1 t f và 2 t f đã biết
Theo điều kiện chuyển động ta có
Trang 37Chương II
NỘI SUY - NGOẠI SUY
Trong thực hành ta thường gặp những hàm số y f x( ) mà không biết biểu thức giải tích cụ thể f của chúng Thông thường, ta chỉ biết các giá trị y y0, 1, ,y ncủa hàm số tại các điểm khác nhau x x0, , ,1 x của đoạn n a b Các giá trị này có được nhờ thí nghiệm, ,
đo đạc,…Tuy nhiên số lần làm thí nghiệm hoặc đo đạt là hữu hạn trong khi đó nhiều khi
ta muốn xác định giá trị của chúng tại các điểm không trùng với x Muốn thế, ta tìm i
cách xây dựng một đa thức 1
đi qua các điểm dữ liệu đã cho
I SỬ DỤNG HÀM THƯ VIỆN MATLAB: interp1, interp2, interp3, spline, polyfit
1 Nội suy một chiều: interp1
x dựa vào phép nội suy của tập dữ liệu X, Y Vevtor
X xác định điểm tại đó giá trị của hàm đã biết
'linear' : nội suy tuyến tính (mặc định)
'spline': nội suy đường cong bậc ba
'pchip', 'cubic' : nội đường cong Hermit
Chương trình so sánh các phương
pháp nội suy một chiều
Trang 38y spline X Y x Trả về vector giá trị y tương ứng với vector có giá trị i x dựa vào i
phép nội suy đa thức bậc ba của tập dữ liệu X, Y Vevtor X xác định điểm tại đó giá trị
của hàm đã biết
3 Nội suy đa thức theo hàm: polyfit
, ,
p polyfit x y n tìm hệ số của đa thức bậc n thỏa các điểm dữ liệu cho trước Kết quả
p là ma trận hệ số của đa thức có dạng 1
p x p x p x p x p
Trang 394 Nội suy hai chiều: interp2
Là phương pháp nội suy giữa các điểm dữ liệu đã có, đi tìm giá trị của hàm hai chiều f(x,y) dựa trên những điểm dữ liệu được cung cấp
'linear' : nội suy tuyến tính (mặc định)
'spline': nội suy đường cong bậc ba
'cubic' : nội đường cong Hermit Chương trình nội suy hai chiều
Trang 40II DÙNG PHƯƠNG PHÁP SỐ ĐỂ NỘI SUY ĐA THỨC
1 Phương pháp nội suy Lagrange
Cho N+1 điểm dữ liệu x y0, 0 , x y1, 1, ,x N,y N Ta cần tìm hệ số của một đa thức bậc N đi qua tất cả các điểm dữ liệu này