1. Trang chủ
  2. » Giáo án - Bài giảng

giáo trình môn toán 4

105 585 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 1,03 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

o Thư viện các hàm toán học: Đó là tập mênh mông các giải thuật tính toán, từ các hàm cơ bản như tổng, tích, sine, cosine, các phép toán số học về số thực và số phức, đến các hàm phức t

Trang 1

Toán ứng dụng ĐẠI HỌC THÁI NGUYÊN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC KTCN Độc lập - Tự do - Hạnh phúc

CHƯƠNG TRÌNH GIÁO DỤC ĐẠI HỌC Ngành đào tạo: Nhóm ngành kỹ thuật Chuyên ngành: Các chuyên ngành

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

1 Tên học phần: Toán 4 (Toán ứng dụng) Mã số: 70003

2 Số tín chỉ: 03

3 Trình độ: Sinh viên năm thứ hai

4 Phân bổ thời gian: 36 tiết lý thuyết + 18 tiết thảo luận

5 Các học phần tiên quyết: Toán 1, Toán 2, Toán 3

6 Học phần thay thế hoặc tương đương: Không

8 Mô tả vắn tắt nội dung học phần:

− Đại cương về Matlap

− Số xấp xỉ và phương pháp đánh giá sai số

− Tính gần đúng nghiệm thực của phương trình đại số và siêu việt

− Giải hệ thống phương trình đại số tuyến tính

− Xây dựng đa thức nội suy và xây dựng công thức thực nghiệm bằng phương pháp bình phương tối thiểu

− Tính gần đúng đạo hàm và tích phân bằng phương pháp số

− Giải gần đúng phương trình vi phân cấp 1 bằng phương pháp số

− Giải gần đúng hệ phương trình vi phân cấp 1 bằng phương pháp số

9 Nhiệm vụ của sinh viên

− Tham dự trên 80 % tổng số thời lượng của học phần

− Tham gia thảo luận và hoàn thành các yêu cầu được giao

Trang 2

[3] Glyn James, Advanced Modern Engineering Mathematics, Pearson

[4] Laurene V Applied Numerical Analyis Using MATLAB, Fausett Univesity of South Carolina Aiken, 1999

[5] http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml

11 Tiêu chuẩn đánh giá sinh viên và thang điểm

* Tiêu chuẩn đánh giá

− Thảo luận, bài tập, chuyên cần

− Kiểm tra giữa học phần

− Thi kết thúc học phần

* Thang điểm:

− Thang điểm 10 và làm tròn đến một chữ số thập phân

− Điểm học phần là điểm trung bình chung của các điểm thành phần sau:

o Điểm thảo luận, bài tập, chuyên cần hệ số 0.2

o Điểm kiểm tra giữa học phần hệ số 0.3

o Điểm thi kết thúc học phần hệ số 0.5

12 Nội dung chi tiết học phần:

Người biên soạn: GVC Ths Ôn Ngũ Minh, Ths Phạm Thị Thu Hằng Chương 1 ĐẠI CƯƠNG VỀ MATLAB

Số tiết: 10 lý thuyết + 05 bài tập, thảo luận

Số tiết: 02 lý thuyết + 01 bài tập, thảo luận

2.1 Số xấp xỉ, sai số tuyệt đối và sai số tương đối

2.2 Cách viết số xấp xỉ

2.3 Sự quy tròn và sai số quy tròn

2.4 Xác định sai số của hàm số khi biết sai số của các đối số

2.5 Hàm tính sai số

Chương 3 TÍNH GẦN ĐÚNG NGHIỆM THỰC CỦA PHƯƠNG TRÌNH ĐẠI SỐ VÀ SIÊU VIỆT

Số tiết: 06 lý thuyết + 03 bài tập, thảo luận

3.1 Đặt vấn đề

3.2 Khoảng phân ly nghiệm

3.3 Phương pháp chia đôi

3.4 Phương pháp lặp

3.5 Phương pháp dây cung

3.6 Phương pháp tiếp tuyến

Trang 3

Toán ứng dụng Chương 4 GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH

Số tiết: 04 lý thuyết + 02 bài tập, thảo luận

4.1 Một số ví dụ trong thực tế

4.2 Hệ phương trình đại số tuyến tính có số ẩn bằng số phương trình

4.3 Các phương pháp lặp

4.4 Hệ phương trình đại số tuyến tính không tương thích

Chương 5 ĐA THỨC NỘI SUY VÀ PHƯƠNG PHÁP BÌNH PHƯƠNG TỐI THIỂU

Số tiết: 05 lý thuyết + 03 bài tập, thảo luận

5.1 Đa thức nội suy

5.2 Sơ đồ horner tính giá trị của đa thức

5.3 Đa thức nội suy Lagrange

5.4 Đa thức nội suy Newton

5.5 Phương pháp bình phương tối thiểu

Chương 6 TÍNH GẦN ĐÚNG ĐẠO HÀM VÀ TÍCH PHÂN

Số tiết: 05 lý thuyết + 02 bài tập, thảo luận

6.1 Tính gần đúng đạo hàm

6.2 Tính gần đúng tích phân xác định

Chương 7 GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH VI PHÂN THƯỜNG

Số tiết: 04 lý thuyết + 02 bài tập, thảo luận

7.1 Phương pháp Euler

7.2 Phương pháp Euler cải tiến

7.3 Phương pháp Runge–Kutta

Lịch trình giảng dạy được thiết kế trong 15 tuần học

Tuần Nội dung giảng dạy, thảo luận Tài liệu

Trang 4

2.1.2 Sai số tuyệt đối

2.1.3 Sai số tương đối

2.2 Cách viết số xấp xỉ

2.3 Sự quy tròn và sai số quy tròn

2.4 Xác định sai số của hàm số khi biết sai số của các đối số

2.5 Hàm tính sai số

[1], [2], [3], [4]

[3], [4]

6

Chương 3 Tính gần đúng nghiệm thực

3.1 Đặt vấn đề

3.2 Khoảng phân ly nghiệm

3.3 Phương pháp chia đôi

3.3.1 Nội dung phương pháp

3.3.2 Sự hội tụ của phương pháp

7

3.5 Phương pháp dây cung

3.5.1 Nội dung phương pháp

3.5.2 Sự hội tụ của phương pháp

3.5.3 Đánh giá sai số

3.5.4 Sử dụng MATLAB

3.6 Phương pháp tiếp tuyến

3.6.1 Nội dung phương pháp

[1], [2], [3], [4]

Trang 5

Toán ứng dụng 3.6.2 Sự hội tụ

9

Chương 5 Đa thức nội suy và phương pháp bình phương tối thiểu

5.1 Đa thức nội suy

5.2 Sơ đồ horner tính giá trị của đa thức

5.3 Đa thức nội suy Lagrange

5.3.1 Thành lập đa thức nội suy Lagrange

5.3.2 Xây dựng đa thức nội suy Lagrange trong MATLAB

5.4 Đa thức nội suy Newton

5.4.1 Đa thức nội suy Newton với các nút không cách đều

[1], [2] [3], [4]

10 Thảo luận chương 3, 4 và 5

11

5.4.2 Đa thức nội suy Newton với các nút cách đều

5.4.3 Đánh giá sai số

5.4.4 Xây dựng đa thức nội suy cho hàm f(x) trên [a, b]

5.4.5 Xây dựng đa thức nội suy Newton trong MATLAB

5.5 Phương pháp bình phương tối thiểu

5.5.1 Nội dung phương pháp

5.5.2 Sử dụng MATLAB

[1], [2] [3], [4]

Trang 6

Chương 7 Giải gần đúng phương trình vi phân thường

7.1 Phương pháp Euler

7.1.1 Nội dung phương pháp

7.1.2 Sử dụng MATLAB

14

7.2 Phương pháp Euler cải tiến

7.2.1 Nội dung phương pháp

15 Thảo luận chương 5, 6 và 7

Trang 7

Đại cương về MATLAB

Ch−¬ng 1 ĐẠI CƯƠNG VỀ M ATLAB

• Yêu cầu cơ bản đối với người học

− Sử dụng thành thạo các phép toán trong M ATLAB

− Sử dụng thành thạo các câu lệnh điều khiển luồng lệnh

− Phân biệt được các loại hàm và định nghĩa được chúng

− Sử dụng thành thạo các hàm toán học cơ bản

− Sử dụng thành thạo các hàm vẽ đồ thị

− Tính đạo hàm, đạo hàm riêng

− Tìm nguyên hàm, tính tích phân xác định, tích phân kép

1.1 Giới thiệu

• M ATLAB là gì

MATLAB là ngôn ngữ bậc cao rất hiệu quả đối với kỹ thuật tính toán Nó hoà nhập sự tính toán, sự trực quan và lập trình vào một môi trường dễ sử dụng, ở đó các vấn đề và giải pháp được biểu thị bởi các ký hiệu toán học quen thuộc

MATLAB là hệ thống tương tác mà ở đó phần tử dữ liệu cơ sở là mảng, nhưng không đòi hỏi kích thước Điều đó cho phép bạn giải quyết nhiều vấn đề về kỹ thuật tính toán, đặc biệt là các công thức liên quan đến véc tơ và ma trận

MATLAB là viết tắt của matrix laboratory Khởi đầu MATLAB được viết dành cho sự truy cập dễ dàng tới phần mềm ma trận được phát triển bởi các đề án LINPACK và EISPACK

MATLAB có chứa một họ các ứng dụng đặc biệt, gọi là công cụ (toolboxes) Các công cụ này cho phép bạn học và áp dụng các kỹ thuật đặc biệt, bao trùm các lĩnh vực như xử lý tín hiệu, điều khiển hệ thống, mạng nơron, logic mờ, sóng, mô phỏng và rất nhiều lĩnh vực khác

• Hệ thống của M ATLAB

Có thể tạm coi hệ thống của MATLAB gồm năm phần chính

o Môi trường phát triển: Đó là tập các công cụ và tiện ích giúp bạn sử dụng các hàm và các

tệp Đa số trong chúng thuộc về giao diện người dùng, bao gồm nền MATLAB (M ATLAB desktop), cửa sổ lệnh (command window), cửa sổ quá trình (command history), trình soạn thảo (editor), trình gỡ rối (debugger), trình duyệt (browser) để xem trợ giúp (viewing help), duyệt không gian làm việc (workspace), duyệt các tệp và tìm thư mục

o Thư viện các hàm toán học: Đó là tập mênh mông các giải thuật tính toán, từ các hàm

cơ bản như tổng, tích, sine, cosine, các phép toán số học về số thực và số phức, đến các hàm phức tạp như ma trận ngược, trị riêng của ma trận, các hàm Bessel và phép biến đổi Fourier nhanh

o Ngôn ngữ M ATLAB: Đó là ngôn ngữ bậc cao về ma trận và mảng với các câu lệnh điều khiển, các hàm, cấu trúc dữ liệu, nhập/xuất dữ liệu và các đặc trưng của ngôn ngữ lập

trình hướng đối tượng (object–oriented programming) Nó cho phép xây dựng các

chương trình nhỏ lẫn các ứng dụng hoàn thiện

Trang 8

o Đồ hoạ: Đồ hoạ trong MATLAB quả là tuyệt vời để hiển thị các ma trận, các véc tơ, vẽ

và in đồ thị, chú giải trên đồ thị Nó bao gồm các hàm ở mức cao để có thể biểu diễn

dữ liệu trong không gian hai và ba chiều

o Tương tác với bên ngoài: Đó là thư viện mà bạn có thể viết chương trình bằng các

ngôn ngữ C hoặc Fortran để tương tác với MATLAB Nó bao gồm các tiện ích để gọi các thủ tục từ MATLAB kiểu liên kết động (dynamic linking), gọi MATLAB như là gọi một máy tính toán, cũng như các tiện ích để đọc và viết các tệp kiểu MAT–files

• Khởi động và thoát khỏi M ATLAB

o Khởi động: Trên nền Windows, kích đúp vào biểu tượng của MATLAB Bạn có thể tuỳ biến sự khởi động của MATLAB Ví dụ, bạn có thể thay đổi thư mục mặc định khi khởi động và thực thi các câu lệnh một cách tự động bằng cách thay đổi tệp kịch bản

(scrript file) có tên là startup.m

o Thoát khỏi MATLAB: Để kết thúc phiên làm việc, chọn File/Exit M ATLAB trên

menu hoặc gõ lệnh quit tại cửa sổ lệnh Bạn cũng có thể cho thực thi tệp kịch bản có tên la finish.m mỗi khi thoát khỏi MATLAB, ví dụ như thực hiện chức năng ghi

workspace, hoặc hiển thị hộp thoại (dialog box) để nhắc nhở

1.2 Ma trận và mảng

1.2.1 Ma trận và các hình vuông thần bí (Matrices and Magic Squares)

Trong MATLAB, ma trận là bảng chữ nhật các con số Các đại lượng vô hướng được xem

là ma trận 1–1 Các ma trận chỉ có một hàng (row) hoặc một cột (column) được gọi là véc tơ

MATLAB có nhiều cách để lưu dữ liệu kiểu số và phi số, nhưng trước hết nó luôn xem bất cứ cái gì cũng là ma trận Các hành động trong MATLAB được thiết kế theo hướng tự nhiên và có thể

Trang 9

Đại cương về MATLAB

• Nhập ma trận (Entering Matrices)

Cách tốt nhất để bạn bắt đầu với MATLAB là học cách sử dụng ma trận Bạn có thể nhập

ma trận bằng vài cách khác nhau:

o Nhập trực tiếp: các số cách nhau ít nhất một ký tự trắng (blank) hoặc dấu ',' (comma)

Tại cửa sổ lệnh bạn gõ như sau, (chú ý dấu [], square brackets)

Lệnh b =[1 2 3] tạo ra véc tơ hàng và lệnh c = [1;2;3] tạo ra véc tơ cột

Lệnh B =[1:4; 5:8] tạo ra ma trận 2 hàng (các số kề nhau sai khác nhau 1) và 4 cột Lệnh C =[1:0.2:2;3:0.4:5] tạo ra ma trận hai hàng sáu cột, các phần tử kề nhau

thuộc hàng thứ nhất chênh nhau 0.2, còn các phần tử kề nhau thuộc hàng thứ hai chênh nhau 0.4 Nếu phát hiện số phần tử ở hàng nào đó không khớp với số phần tử ở hàng ngay trên nó thì MATLAB phát sinh lỗi:

??? Error using ==> vertcat

All rows in the bracketed expression must have the same number

of columns

o Tải ma trận từ tệp dữ liệu ngoài: Để hiểu rõ, hãy thực hiện các lệnh sau

>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % phát sinh ma trận A

>> save ('ab.m', 'A','-ascii'); % ghi ma trận A vào tệp ab.m

>> load ab.m; % tải dữ liệu từ tệp ab.m

>> ab % hiển thị ma trận ab, chính là A lúc ghi vào

Tham số '-ascii' chỉ định việc ghi ở dạng văn bản Bạn hãy tìm tệp ab.m trong thư

mục hiện thời (Current Directory) rồi mở nó bằng cách double–click

Nếu không thấy hiển thị cửa sổ này, nhấp chuột vào trình đơn desktop trên menubar

của cửa sổ MATLAB rồi trỏ tới Current Directory và đánh dấu check on

Bạn sẽ thấy dữ liệu được ghi dưới dạng ma trận vuông cấp 3 Hãy đóng tệp lại bằng cách click vào nút chữ thập đỏ ở góc trên–phải

Câu lệnh load ab.m sẽ tải dữ liệu trong tệp ab.m vào bộ nhớ Câu lệnh cuối cùng ab

là yêu cầu hiển thị ma trận ab Nhưng sao lại là ab mà không phải là A? Vấn đề là ở chỗ, vì

tên biến A không được ghi vào tệp văn bản, mà coi toàn bộ dữ liệu có trong tệp đó đều thuộc

về một biến kiểu ma trận, có tên trùng với tên của tệp

Tên biến trong MATLAB có sự phân biệt chữ hoa với chữ thường Nếu ta nhập lệnh

load AB.m, thì dữ liệu được tải thuộc về ma trận AB chứ không phải là ab nữa

Trang 10

Tất nhiên chúng ta có thể trực tiếp soạn thảo tệp ab.m bằng trình Editor Hãy thao tác như sau: File/New/M–file (hot key: Ctrl + N)

Sau đó soạn thảo trực tiếp, mỗi dòng ứng với một hàng, các cột không cần thẳng

Để ghi lại, chọn File/Save (hot key: Ctrl + S), đặt tên tệp là ab.m (nếu đặt tên ab.txt thì sau đó phải load ab.txt)

o Sử dụng các hàm có sẵn (built–in functions)

− Hàm magic(n): Trả lại ma trận vuông cấp n được cấu thành từ các số nguyên từ 1 đến

n2 với n ≥ 3 Tổng các phần tử trên mỗi hàng hoặc mỗi cột cũng như trên hai đường chéo chính và chéo phụ đều bằng nhau

65 65 65 65 65 Như ta thấy, hàm magic(5) cho ma trận vuông cấp 5 với tổng theo cột là 65 Bạn đừng mất công làm phép tính cộng, hãy gọi hàm sum(M)để tính tổng các phần tử trên từng cột

Với ma trận kiểu này bạn cũng có thể tính theo công thức:

Với M là ma trận magic, người ta chứng minh được rằng:

• Nếu n là số lẻ: rank(M) = n,

− Hàm eye(size(A)): Ma trận đơn vị cùng cỡ với ma trận A

− Hàm ones(n): Ma trận vuông cấp n toàn các số 1

− Hàm ones(m,n) hoặc ones([m n]): Ma trận cỡ mxn toàn các số 1

Trang 11

Đại cương về MATLAB

− Hàm ones(d1,d2,d3 ) hoặc ones([d1 d2 d3 ]): Ma trận nhiều chiều kích thước d1xd2xd3x các số 1

− Hàm ones(size(A)): Ma trận toàn số 1 cùng cỡ với ma trận A

− Hàm zeros(m,n): Ma trận cỡ mxn toàn số 0

rand([m n p ]), rand(size(A)): giống các hàm ones, nhưng các số được

??? Index exceeds matrix dimensions

Trong khi đó câu lệnh A(3,1)= 7 lại hợp lệ, và ma trận A nói trên sẽ trở thành

1 2 3

4 5 6

7 0 0

chưa được gán giá trị sẽ nhận giá trị 0

Toán tử ':' (Colon operator)

Dấu hai chấm là một trong các toán tử quan trọng, nó xuất hiện ở nhiều dạng khác nhau Biểu thức 1:10 là một véc tơ hàng chứa các số nguyên từ 1 đến 10,

1 2 3 4 5 6 7 8 9 10

100 93 86 79 72 65 58 51

Dấu hai chấm có thể tham gia vào biểu thức của chỉ số, ví dụ,

sum(A(1:k,j)) bằng tổng k phần tử đầu tiên của cột j

sum(A(:,j)) bằng tổng mọi phần tử của cột j

sum(A(:,end)) bằng tổng các phần tử của cột cuối cùng

sum(A(:,1:2)) là véc tơ có hai thành phần, tương ứng với tổng các phần tử

trên cột 1 và tổng các phần tử trên cột 2

sum(A(:,:)) như véc tơ sum(A), tổng các phần tử trên mỗi cột

Trang 12

1.2.2 Biểu thức (Expressions)

Biến (Variables)

MATLAB không đòi hỏi định nghĩa hoặc khai báo trước về kiểu của biến Khi MATLAB

gặp một tên biến mới, nó tự động tạo ra biến và dành một vùng nhớ tương ứng cho biến đó

cho biến khi kích thước tăng lên

chỗ" thì vùng đó lại được cấp thêm cho A và đặt giá trị 20 vào đó, nếu không đủ thì MATLAB

dời địa chỉ của biến A sang vùng mới

biệt với biến khác Chữ hoa và chữ thường là được tôn trọng

Số (Numbers)

MATLAB sử dụng ký hiệu thập phân thông thường và có thể tuỳ chọn dấu thập phân, đằng trước có thể có dấu trừ hoặc cộng Ở dạng ký hiệu khoa học, MATLAB sử dụng chữ cái e

Với số phức, sử dụng i hoặc j và thuộc dạng hậu tố, ví dụ 3e2i là 300i

IEEE (Institute of Electrical and Electronics Engineers), có tới 16 chữ số lẻ có nghĩa

Giá trị lớn nhất là 10308 và giá trị dương nhỏ nhất là 10–308

Phép toán số học (Arithmetic Operators)

Sử dụng các ký hiệu và mức ưu tiên theo quy ước thông thường

Nếu A và B không cùng cỡ, báo lỗi:

??? Error using ==> plus Matrix dimensions must agree

o - Phép trừ (Subtraction)

Dạng 2 ngôi (Binary): Quy tắc như phép cộng

Dạng 1 ngôi (Unary): -A là ma trận đối của A

o * Phép nhân (Multiplication)

A*B: số cột của A phải bằng số hàng của B

Trang 13

Đại cương về MATLAB

A*3 cũng như 3*A: ma trận kết quả của mọi phần tử của A nhân với 3

Nếu số cột A khác số hàng B, thì A*B gặp lỗi:

??? Error using ==> mtimes Inner matrix dimensions must agree

o * Tích mảng (Array multiplication)

và B phải cùng cỡ, loại trừ một trong chúng là vô hướng

o / Phép chia bên phải (Right Division)

Xuất phát từ việc giải phương trình ma trận XA = B Gọi là phép chia bên phải bởi vì

A là toán hạng bên phải trong biểu thức B/A Các ma trận, A và B phải có cùng số cột – Nếu A là ma trận vuông thì B/A = BA–1, tức nó là nghiệm của phương trình XA = B, nghiệm này được tìm theo phương pháp khử Gauss có tìm trụ lớn nhất Vì vậy nếu det(A) quá nhỏ thì sẽ có cảnh báo (warning message)

– Nếu A và B là ma trận chữ nhật thì B/A cũng là nghiệm của phương trình XA = B, nhưng nghiệm này được tìm theo phương pháp bình phương tối thiểu

– Biểu thức A/k, với k là vô hướng, là chia ma trận A cho đại lượng k

o / Phép chia bên phải theo phần tử (Array right division)

B./A là ma trận có các phần tử là B(i,j)/A(i,j) nên A và B phải cùng cỡ

Với k là vô hướng thì A./k là ma trận cùng cỡ với A, có các phần tử là A(i, j)/k, còn k./A là ma trận cùng cỡ với A, có các phần tử là k/A(i, j)

o \ Phép chia bên trái (Left division)

Xuất phát từ việc giải phương trình ma trận AX = B Gọi là phép chia bên trái bởi

vì A là toán hạng bên trái trong biểu thức A\B Theo quy tắc nhân ma trận, A và B phải

có cùng số hàng

Nếu A là ma trận vuông thì A\B bằng A–1B, tức nó là nghiệm của phương trình AX = B được tính theo phương pháp Gauss có tìm trụ lớn nhất

nhưng nghiệm này được tìm theo phương pháp bình phương tối thiểu

o / Phép chia bên trái theo phần tử (Array left division): A./B cũng bằng B.\A

Chú ý: Ta có thể sử dụng ma trận giả ngược (pseudoinverse) của ma trận A, hàm

pinv(A), để giải phương trình AX = B cũng như XA = B

Nếu A là vuông và det(A) ≠ 0 thì pinv(A)= A–1

o ^ Phép luỹ thừa (Power)

Trang 14

A^p, với A vuông và p là số nguyên dương, chính là Ap

A^p, với A vuông và p là số nguyên âm, chính là (A–1)p

o ^ Luỹ thừa của mảng (Array power)

C = A.^B, A và B cùng cỡ, là ma trận mà C(i, j) = A(i, j)B(i, j)

C = A.^k, k vô hướng, là ma trận mà C(i, j) = A(i, j)k

C = k.^A, k vô hướng, là ma trận mà C(i, j) = kA(i, j)

o ' Phép chuyển vị liên hợp phức (Complex conjugate transpose)

o () Phép chỉ định thứ tự định giá (Specify evaluation order)

Phép toán quan hệ (Relational Operators)

Các toán hạng (operands) phải cùng kiểu và cùng cỡ

C = A < B: C(i, j) = 1 nếu A(i, j) < B(i, j), trái lại C(i, j) = 0

C = A > B: C(i, j) = 1 nếu A(i, j) > B(i, j), trái lại C(i, j) = 0

C = A <= B: C(i, j) = 1 nếu A(i, j) <= B(i, j), trái lại C(i, j) = 0

C = A >= B: C(i, j) = 1 nếu A(i, j) >= B(i, j), trái lại C(i, j) = 0

C = A == B: C(i, j) = 1 nếu A(i, j) bằng B(i, j), trái lại C(i, j) = 0

C = A ~= B: C(i, j) = 1 nếu A(i, j) ≠ B(i, j), trái lại C(i, j) = 0

Phép toán logic (Logical Operators)

o Hướng phần tử (Element-wise): gồm | (hoặc), & (và), ~ (phần bù), xor (trừ không nhớ)

A 0 1 1 0 1

B 1 1 0 0 1 A|B 1 1 1 0 1 A&B 0 1 0 0 1

~A 1 0 0 1 0 xor(A,B) 1 0 1 0 0

o Hướng bit (Bit-wise): Với a = 28 (11100) và b = 21 (10101) thì

bitor(a,b) = 29 (11101), bitand(a,b) = 20 (10100),

bitcmp(a,b) = 3 (00011), bitxor(a,b) = 9 (01001)

o Hướng biểu thức: Giả sử ab là các biểu thức lôgic, khi đó

a || b bằng False (logic 0) chỉ khi cả ab bằng False,

a && b bằng True (logic 1) chỉ khi cả ab bằng True,

Trang 15

Đại cương về MATLAB

Một số ví dụ về biểu thức (examples expressions)

Lúc này y được xem là ma trận vuông cấp 1 Tuy nhiên câu lệnh trên chỉ hợp lệ khi các biến a, b, c, d đã tồn tại hoặc được khai báo trước đó bởi lệnh syms a b c d

thức xem có phù hợp không Nếu các biến đó chưa có giá trị cụ thể thì mọi việc êm xuôi, nhưng nếu chúng có giá trị rồi, tức là đã được xác định kích thước, thì việc hợp lệ hay không phụ thuộc vào chính các biến đó Xét hai trường hợp sau, các lệnh được nhập tại cửa sổ lệnh Trường hợp 1:

??? Error using ==> mpower

Matrix must be square

Lệnh subs(X)(symbolic substitute): thay tất cả các biến có mặt trong biểu thức X bởi các giá trị hiện tại của chúng và định giá biểu thức đó

Trong trường hợp 1, nếu hiển thị a và b, ta thấy chúng cùng bằng [1, 4, 9]

Trường hợp 2 gây lỗi bởi x đã là véc tơ hàng thì không thể có x^2

ghi nhận như là lệnh y = x^2 Bạn có thể kiểm tra lại bằng cách cho hiển thị y

Nhưng việc chuyển này không được thực hiện nếu x được xác định trước là véc tơ

đó thì biến nào vẫn còn là ký hiệu, biến nào đã được xác định

1.2.3 Làm việc với các ma trận (Working with matrices)

Trang 16

Nếu giữa A và dấu + có một khoảng trống, còn ngay sau dấu + là con số thì sẽ lỗi, vì

MATLAB cho là ta ghép từ ba ma trận A, +1 và A+2, mà +1 là vô hướng nên lỗi là tất nhiên

>> A(:,j) = [] xoá cột thứ j

>> A(k,:) = [] xoá hàng thứ k

>> A(k:i:j) = [] xoá mọi phần tử từ thứ k tới thứ j nhưng cách đều nhau i phần tử,

các phần tử còn lại được sắp thành véc tơ hàng

1.2.4 Nói thêm về ma trận và mảng (More About Matrices and Arrays)

• Đại số tuyến tính (Linear Algebra)

Ta biết rằng tổng cũng như tích của ma trận vuông bất kỳ với chuyển vị của nó sẽ là ma trận đối xứng (symmetric) Vì vậy trong MATLAB, A+A'A*A' là các ma trận đối xứng

Warning: Matrix is close to singular or badly scaled

Results may be inaccurate RCOND = 9.796086e-018

trận theo dạng chuẩn 1 của LAPACK, có giá trị trong khoảng (0, 1), càng gần 1 càng tốt

Để tìm trị riêng của A, sử dụng hàm eig (eigenvalue) với một output:

Trang 17

Đại cương về MATLAB

-0.0000

Một trị riêng bằng 0 là đương nhiên vì A suy biến Trị riêng lớn nhất bằng 34, chính là giá trị sum của ma trận magic(4) Tại sao lại như vậy, phải chăng một véc tơ riêng ứng với trị riêng 34 là véc tơ cột gồm toàn số 1? Để tìm cả các véc tơ riêng, gọi hàm eig với hai output:

Vậy thức đặc trưng của magic(4) là λ4 – 34λ3 – 80λ2 + 2720λ

MATLAB xem mảng là ma trận có một chiều bằng 1

Vì vậy các phép toán trên ma trận cũng đúng cho các mảng

sẽ được thực hiện trên các mảng cùng cỡ và sẽ cho kết quả là mảng cũng cùng cỡ

>> x = 0:1:4; véc tơ hàng: 0 1 2 3 4

>> y = (0:1:4)'; véc tơ cột là chuyển vị của x ở trên

Câu lệnh 0:1:4' được hiểu là véc tơ hàng: 0 1 2 3 4', mà 4' vẫn là 4

Trang 18

9

16

thức nào đó tham chiếu đến (reference) thì giá trị trả về của hàm hay biểu thức đó sẽ là mảng có cùng kích thước với biến Trong ví dụ trên, n là véc tơ cột và m là véc tơ hàng

• Dữ liệu đa biến (Multivariate Data)

MATLAB sử dụng phương thức hướng cột (column–oriented) để phân tích dữ liệu thống

kê đa biến Mỗi cột biểu thị tập dữ liệu của một biến và mỗi hàng biểu thị dữ liệu của một cá thể Phần tử thứ (i, j) biểu thị giá trị biến thứ j của cá thể thứ i

Ta xét tập dữ liệu với ba biến: Heart rate, Weight, Hours of exercise per week

Giả sử dữ liệu của năm bệnh nhân như bảng dưới, mỗi dòng ứng với mỗi bệnh nhân

help datafun hoặc helpwin datafun

Với sự mở rộng vô hướng, ta có thể thực hiện được một số phép toán giữa ma trận và số

• Chỉ số logic (Logical Subscripting)

Các véc tơ logic được tạo ra từ các phép toán logic và phép toán quan hệ có thể được sử dụng làm chỉ số của mảng Giả sử X là ma trận bình thường và L là ma trận cùng cỡ nhưng các phần tử của nó lại là các biểu thức logic

Trang 19

Đại cương về MATLAB

Tức là, nếu A(i, j) là số nguyên tố thì B(i, j) = 1, trái lại B(i, j) = 0

B(i, j) =0, tức ban đầu A(i, j) không là số nguyên tố

1.3.1 Điều khiển luồng lệnh (Flow Control)

Tất cả máy tính hiện nay đều tuân theo nguyên lý được đề xuất bởi nhà khoa học người Anh, Alen Turing Theo đó, các câu lệnh được xử lý tuần tự Nhưng hầu hết quá trình thực hiện của một chương trình hoàn toàn phụ thuộc vào dữ liệu khi chương trình được triệu gọi, vì vậy điều kiện thực hiện lệnh chưa hẳn đã đảm bảo, từ đó nảy sinh vấn đề điều khiển luồng lệnh Mặc dù đã chứng minh được rằng, tất cả các câu lệnh điều khiển đều có thể chuyển thành câu lệnh lặp while, nhưng để đơn giản và thuận tiện cho các lập trình viên, hầu hết các

khiển sau

• if, else, elseif: lựa chọn một trong hai khả năng

if ExpL % ExpL là biểu thức logic cần kiểm tra

statements % nếu ExpL là đúng thì thực hiện các lệnh này

another_statements % các câu lệnh tai đây được thực hiện

end

hoặc

if ExpL % ExpL là biểu thức logic cần kiểm tra

statements1; % các lệnh ở đây được thực hiện nếu ExpL đúng

elseif ExpL2 % khi ExpL sai, kiểm tra tiếp ExpL2

statements2; % thực hiện khi ExpL sai và ExpL2 đúng

another_statements % các lệnh tai đây được thực hiện

end

Trang 20

Nói thêm về phép so sánh bằng (==) Với biểu thức kiểu vô hướng thì không có gì đáng bàn, ta

isequal(a,b), hàm này nhận giá trị 1 nếu a đúng bằng b, trái lại hàm bằng 0

switchcase: lựa chọn một trong nhiều khả năng,

switch ExpR % ExpR là biểu thức quan hệ được định giá

case ExpR1 % Nếu ExpR được định giá bằng ExpR1,

statement1; % lệnh được thực hiện, ra khỏi switch

case {ExpR2, ExpR3, } % Nếu ExpR bằng một trong các giá trị tại đây,

statemen2; % lệnh được thực hiện, ra khỏi switch

otherwise % Khi ExpR không trùng với giá trị nào ở trên,

statements; % lệnh được thực hiện và ra khỏi switch

end

Các ExpR, ExpR1, phải là biểu thức vô hướng hoặc xâu văn bản

Giả sử với n là biến nhận giá trị nguyên dương, có thể viết như sau

for: lặp đi lặp lại một số lệnh với số lần xác định trước

for var = expr

Trang 21

Đại cương về MATLAB

1.3.2 Cấu trúc dữ liệu khác (Other Data Structures)

Văn bản trong MATLAB được biểu thị trong cặp nháy đơn (single quotes)

MATLAB xem s là mảng 5 ký tự, mỗi ký tự ứng với một giá trị số nguyên trong bảng mã

Trang 22

Câu lệnh a = double(s) chuyển mảng ký tự này tới véc tơ số,

a =

72 101 108 108 111

Các ký tự in được (printable characters) trong bảng mã ASCII có giá trị số từ 32 đến 127

characters)

Việc ghép các biến và xâu văn bản thành xâu lớn được thực hiện bằng cách liệt kê liên tiếp

và đặt trong cặp ngoặc vuông

Có thể ghép các xâu thành nhiều hàng, tức là thành ma trận

v = Hello world

Như bạn thấy, h là véc tơ hàng có độ dài 11, còn v là ma trận cỡ 2x5

của xâu 'world' Nếu độ dài khác nhau thì gây lỗi

khiến S trở thành ma trận 2x5 Một ký tự trắng đã được thêm vào sau 'h' Kiểm tra bằng lệnh

double(S(2,5)), bạn nhận được ans bằng 32

• Các cấu trúc (Structures)

theo tên trường (field) Bây giờ chúng ta định nghĩa một cấu trúc có hai trường là name

Bạn sẽ thấy

s = name: 'Hang' age: 31

s = 1x2 struct array with fields:

name age

ans = 'Hang' 'Trang' ans =

30 26

Trang 23

Đại cương về MATLAB

ans = Hang Trang Ngoc

1.3.3 Thủ tục và hàm (Scripts and Functions)

thủ tục trùng với tên của tệp và thủ tục không có giá trị trả về

Khi được triệu gọi, thủ tục có thể tác động lên các biến được phát sinh trong nó hoặc đang

có trong workspace Các biến phát sinh trong khi thủ tục thực thi vẫn được lưu trong workspace để sử dụng cho tính toán lần sau

Bạn hãy viết các mã lệnh sau vào tệp draw.m, đó chính là thủ tục draw

Thủ tục này không có tham số vào (input), ta tạm gọi nó là draw version 1.0

draw đã khai sinh hai biến x và y, nhưng lại thu hồi biến y khi thủ tục kết thúc Để kiểm tra workspace bằng lệnh who, bạn chỉ thấy biến x mà thôi

bạn cần thủ tục draw vẽ trên đoạn [0, 4π] Ta gọi là draw version 2.0

Trang 24

Kết quả nhìn thấy như version 1.0 Thế thì nói làm gì, hãy xem tính ưu việt của draw

version 2.0 này Tại cửa sổ lệnh bạn nhập:

Nhưng còn màu sắc, nét vẽ thì sao, chả lẽ lại thay đổi trực tiếp trên hình vẽ à? Thế thì lại

(Color), nét vẽ (LineStyle), độ rộng của nét vẽ (LineWidth), điểm nhấn (Marker), độ rộng của điểm nhấn (MarkerSize), màu điểm nhấn (MarkerEdgeColor)

Hàm chỉ khác thủ tục ở chỗ là nó trả về một giá trị thuộc một trong các kiểu vô hướng,

hàm cơ bản

Trang 25

Đại cương về MATLAB

Các hàm này thường là đơn giản, được cấu thành từ một biểu thức với một vài tham số đầu vào và tham số đầu ra (output) Bạn có thể định nghĩa loại hàm này ngay tại cửa sổ lệnh, hoặc trong một thủ tục, hoặc trong một hàm khác dạng M–file Cú pháp (syntax) có dạng

f = @(arglist)expression

là biểu thức xác định giá trị của hàm Các hàm toán học rất thích hợp với kiểu định nghĩa này

Ví dụ:

f = @(x) x.^2 + 1; % hàm một biến x

g = @(x, y) x.^2 + y.^4; % hàm hai biến x, y

Là các hàm bắt buộc phải định nghĩa trong M–file, vì trong thân hàm thường có nhiều câu lệnh Trong tệp M–file, hàm nguyên thuỷ phải được hiển thị tại dòng đầu tiên

Hàm nguyên thuỷ có phạm vi (scope) lớn nhất, tức là nó có thể được triệu gọi từ bên ngoài tệp M–file của nó, tức là từ cửa sổ lệnh hoặc từ các hàm nguyên thuỷ trong các M–file khác Trong khi đó các hàm con chỉ có thể được triệu gọi từ hàm nguyên thuỷ hoặc từ các hàm con cùng được định nghĩa trong hàm nguyên thuỷ

Cấu trúc của Primary và Subfunctions như sau:

Chú ý rằng không có từ khoá end

o Hàm riêng (Private Functions)

Hàm riêng có cấu trúc như hàm nguyên thuỷ, chỉ có điểm đặc trưng duy nhất là nó phải

triệu gọi từ các hàm nguyên thuỷ trong thư mục cha của thư mục private và các hàm riêng khác, không thể triệu gọi chúng tại cửa sổ lệnh Các hàm riêng được ưu tiên gọi trước so với các hàm nguyên thuỷ

maths\private\fpritest.m

Việc định nghĩa một hàm trong thân của một hàm khác được gọi là hàm lồng nhau Việc lồng nhau có thể nhiều lần Các hàm cùng được lồng trong một hàm nguyên thuỷ có thể triệu gọi nhau Tất nhiên lời gọi các hàm này không thể xuất hiện bên ngoài hàm nguyên thuỷ, nơi khai sinh ra chúng

Trang 26

o Hàm tải bộ (Function Overloading)

nhiều đặc trưng cơ bản của C, một trong các đặc trưng đó là sự tải bội

Tải bội là cơ chế cho phép các hàm, các toán tử trùng tên nhưng hành vi khác nhau lại được tồn tại song song Chỉ có điều khi một lời triệu gọi được phát đi, thì hàm hay toán tử nào

có tham số phù hợp với lời triệu gọi đó sẽ được thực thi

Trong các ngôn ngữ lập trình hướng đối tượng OOP, các hàm hay các toán tử đều được gọi chung là phương thức (Method)

Lúc này toán tử cộng hai số thực, hay toán tử cộng hai số phức, hay toán tử cộng hai ma trận được triệu gọi phụ thuộc vào a và b cùng là số thực, hay a hoặc b là số phức, hay a hoặc b

là ma trận

o Định nghĩa đệ quy (Recursive Definition)

MATLAB cũng như hầu hết các ngôn ngữ lập trình bậc cao khác đều cho phép bạn định nghĩa kiểu đệ quy Đó là loại định nghĩa đặc biệt vì trong thân của nó có chứa chính bản thân

nó hoặc bản sao là trường hợp riêng của nó Bạn đã bao giờ quan sát hai cái gương hướng mặt vào nhau chưa?

Ví dụ về hàm đệ quy Ta định nghĩa hàm fact(n) để tính giai thừa (factorial) của n

function f = fact(n)

if n < 2 f = 1; else f = n*fact(n–1);

end

Tất nhiên đây chỉ là ví dụ, bạn có thể thay thế bằng lệnh prod(1:n) (product)

Ví dụ về nested functions Chúng ta hãy xem đoạn mã lệnh sau

function y = a(x1, y1)

Trang 27

Đại cương về MATLAB

Hàm b2() truy cập được hai biến cục bộ var1var2 của hàm a() vì khi a() triệu gọi b2() thì hai biến đó đã được khai sinh rồi, trong khi đó hàm b1() chỉ có thể truy cập

Trong hàm b1() có khai sinh biến var3, nhưng chỉ hàm này có thể truy cập được nó

của hàm b1() chứ không phải tham số x1 của a(), còn biến y1 chính là tham số của a()

số của hàm a()

Đúng là phép vua thua lệ làng Làng nào có lệ thì cứ theo thế mà làm, bỏ qua phép vua,

làng nào không có lệ thì mới sử dụng phép vua

Tất cả các biến được khai sinh trong đoạn chương trình trên đều bị thu hồi khỏi workspace khi hàm a() kết thúc

Đó là kiểu biến cho phép mọi hàm truy cập Ta có thể định nghĩa biến toàn cục tại cửa sổ

Trong thân hàm, khai báo global X phải được đặt trước câu lệnh truy cập biến X

clear X; xoá biến X khỏi curent workspace, ở workspace khác vẫn còn X

clear global X; xoá biến X khỏi global workspace, không đâu còn X nữa

y = strfun(expr1, expr2);

Nhưng nếu arg1arg2 có kiểu xâu ký tự thì có thể gọi hàm theo một trong hai cách,

y = strfun('apples','oranges');

Với cách gọi thứ hai, hàm không trả lại giá trị, vì thế không có câu lệnh gán y =

Trang 28

Không thể gọi theo cách thứ hai nếu kiểu của một trong các đối số không phải kiểu xâu

Bạn có thể tạo ra thẻ hàm cho hàm và sau đó sử dụng nó như là hàm

Thẻ hàm chính là biến, thường được sử dụng để truyền vào tham số của các hàm khác

function y = sqr(x)

y = x^2;

end

function y = plot_fhandle(fhandle, data)

plot(data, fhandle(data))

end

Cuối cùng, bạn có thể gọi như sau:

sqr_handle = @sqr; x = 0:0.1:2*pi;

plot_fhandle(sqr_handle,x)hoặc plot_fhandle(@sqr,x)

1.4 Một số hàm cơ bản

1.4.1 Các hàm toán học (Mathematical functions)

ƒ abs(x)(absolute): Nếu x là số thực, bằng trị tuyệt đối của x Nếu x là số phức, bằng

ƒ sqrt(x) (square roots): Ma trận các căn bậc hai của x(i, j)

ƒ exp(x): Ma trận của các ex(i,j)

ƒ log(x): Ma trận của các log(x(i,j)), cơ số e

ƒ log10(x): Ma trận các logarithm cơ số 10 của x(i, j)

ƒ sin(x), cos(x): ma trận các sin(x(i,j)), cos(x(i,j))

ƒ asin(x), acos(x): ma trận các asin(x(i,j)), acos(x(i,j))

ƒ mod(x,y): phần dư của x chia cho y

ƒ pi: xấp xỉ của số π, bằng 3.14159265358979

ƒ i hoặc j: đơn vị ảo

1.4.2 Các hàm chuyển đổi (Converting functions)

ƒ char(n):Cho ký tự thứ n trong bảng mã ASCII

ƒ double(c): Cho số thứ tự trong bảng mã ASCII của ký tự c

ƒ str2num('str'): Chuyển xâu 'str' ra số

ƒ num2str(number): Chuyển số ra xâu

Trang 29

Đại cương về MATLAB

1.4.3 Các hàm định giá (Evaluative functions)

ƒ eval(exprc): Đây là một hàm rất đặc biệt mà nhiều ngôn ngữ không có, với expc

như eval(['my','var']) đều tương đương với câu lệnh myvar và cùng biểu thị giá trị 5

ƒ feval(f,x): Định giá hàm theo đối x với f là thẻ hàm

feval(@sin,x) bằng sin(x)

ƒ subs(expr, vars, vals): Định giá biểu thức expr sau khi thay các biến trong

vars bởi các giá trị tương ứng trong vals Ví dụ

ma trận được quy về véc tơ trước khi thực hiện

o y = find(x,k): chỉ tính k phần tử đầu tiên tìm thấy

o y = find(x,k,'first'): find(x, k) là cách gọi mặc định

o y = find(x,k,'last'): chỉ tính k phần tử cuối cùng tìm thấy

o [I,J] = find( ): các véc tơ I, J lưu chỉ số hàng, cột

o [I,J,V] = find( ): I, J lưu chỉ số hàng, cột, V lưu giá trị

ƒ nonzeros(A): Cho véc tơ cột nhận được từ A bằng cách bỏ đi các phần tử bằng 0 rồi sắp xếp từ cột đầu đến cột cuối

>> A = [4 3 0; 2 0 5; 4 0 1];

>> B = nonzeros(A)'

B =

4 2 4 3 5 1

1.4.5 Các hàm chức năng (Function Functions)

này được viết dưới dạng M–file và gồm các nhóm chức năng sau:

¾ Tìm nghiệm (Zero finding),

¾ Tối ưu (Optimization) (ta không bàn đến ở đây),

Trang 30

¾ Cầu phương (Quadrature),

¾ Phương trình vi phân thường (Ordinary differential equations)

9 fzero: tìm nghiệm của phương trình f(x) = 0 trong khoảng phân ly

nghiệm thì hàm trả lại NaN Ví dụ:

cho rằng đấy là biểu thức

Trang 31

Đại cương về MATLAB

Hàm này cho phép giải phương trình hoặc hệ phương trình, ta có thể tìm nghiệm tổng quát hoặc nghiệm riêng, thậm chí cả nghiệm kỳ dị Cú pháp

r = dsolve('eq1,eq2, ', 'cond1,cond2, ', 'v')

r = dsolve('eq1','eq2', ,'cond1','cond2', ,'v')

trong các phương trình Số các đối số không vượt quá 12

là biến t) Chữ số ngay sau D biểu thị cấp của đạo hàm Bất kỳ ký tự nào kế ngay sau đó biểu thị biến phụ thuộc Ví dụ DyD2y tương ứng là các đạo hàm cấp một và cấp hai của y, còn

D3u là đạo hàm cấp ba của u

Nếu số các điều kiện đầu nhỏ hơn số biến phụ thuộc thì nghiệm sẽ chứa các hằng số tuỳ ý C1, C2,

Trang 32

Với mỗi phương trình và mỗi điều kiện đầu, dsolve trả lại nghiệm dưới dạng véc tơ Có

ba kiểu output

dưới dạng ẩn (implicit)

– Khi dsolve cho nghiệm dưới dạng ẩn, nó sẽ đưa ra cảnh báo

ode45 của MATLAB

Trong một số trường hợp liên quan đến phương trình phi tuyến, output có thể là phương trình vi phân cấp thấp hơn hoặc phương trình tích phân

Một số ví dụ sử dụng hàm dsolve

1 Tham số a, biểu diễn của nghiệm theo t (mặc định)

>> dsolve('Dy = a*y') % không có điều kiện đầu

ans = C1*exp(t*a) % nghiệm tổng quát

2 Biến phụ thuộc là f, cho nghiệm tổng quát vì không có điều kiện đầu

>> dsolve('Df = f + sin(t)')

ans = -1/2*cos(t)-1/2*sin(t)+ exp(t)*C1

3 Phương trình phi tuyến cấp một, tìm tất cả các nghiệm

>> dsolve('(Dy)^2 + y^2 = 1','s') % biến độc lập là s

ans =

[ -1] % nghiệm kỳ dị là –1 và 1

[ 1]

[ sin(s-C1)] % nghiệm riêng

[ -sin(s-C1)] % nghiệm riêng

4 Phương trình phi tuyến cấp một, tìm nghiệm riêng, có output

>> y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')

y =

sin(t)

-sin(t)

5 Phương trình tuyến tính cấp một có tham số a và b

>> dsolve('Dy = a*y', 'y(0) = b') % có điều kiện đầu

ans =

6 Phương trình tuyến tính cấp hai có tham số a, tìm nghiệm riêng

>> dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')

ans =

cos(a*t)

7 Hệ hai phương trình vi phân tuyến tính cấp một, tìm nghiệm tổng quát, không có output

>> dsolve('Dx = y', 'Dy = -x')

Trang 33

Đại cương về MATLAB

x: [1x1 sym]

y: [1x1 sym]

8 Hệ hai phương trình vi phân tuyến tính cấp một, tìm nghiệm tổng quát, output là véc tơ

>> [x y] = dsolve('Dx = y', 'Dy = -x')

• Véc tơ hoá (Vectorization)

Đó là sự tổ chức dữ liệu hoặc câu lệnh dưới dạng véc tơ hay ma trận nói chung

dụng trong chương trình Ví dụ đoạn mã lệnh thủ công sau tạo ra bảng logarithms cơ số 10:

r = zeros(32,1);

for n = 1:32

r(n) = rank(magic(n));

end

tiên, tất nhiên là như vậy rồi MATLAB sử dụng trình thông dịch (interpreter) chứ không phải trình biên dịch (compiler) Tại thời điểm này MATLAB interpreter mới phát hiện ra biến r và định vị (allocate) một vùng nhớ cho nó tương ứng với ma trận có kích thước 1x1

Trang 34

Nhưng ở lần lặp thứ hai, MATLAB interpreter lại phải tăng kích thước của r thêm một phần tử nữa, các lần tiếp theo cũng phải như vậy

đủ số byte cần thiết Mỗi lần tăng kích thước là mỗi lần nó phải tạm ngưng các việc khác, chọn vùng nhớ khác để cấp cho biến và thu hồi vùng nhớ cũ

Bạn hãy hình dung người ta dọn cỗ, mỗi khi bổ sung món mới lại phải bố trí lại các đĩa bát cho phù hợp Có thể hài hước một chút, nhưng máy tính là thế đấy

vùng nhớ kích thước 32x1 cho biến r, giống như dọn cỗ với tất cả các món một lúc

Bài 1.5.6 Tính các đạo hàm cấp một của x2+y2+ 1

Bài 1.5.7 Tính các đạo hàm riêng cấp một của x2+y2+a2 với a là tham số

Trang 35

Đại cương về MATLAB

4

2 2 D

xdxdy

1.6 Lời giải bài tập chương 1

Trang 37

Đại cương về MATLAB

Trang 38

Bài 1.5.6 Có thể tính theo các cách sau,

diff('sqrt(x^2+y^2+a^2)',x),diff('sqrt(x^2+y^2+a^2)',y) c)syms x y a;

syms a x; int(sqrt(a^2 - x^2)), int(sqrt(a^2 - x^2),x)

2 int('sqrt(x^2 - a^2)') hoặc

syms a x; int(sqrt(x^2 - a^2)), int(sqrt(x^2 - a^2),x)

3 int('1/sqrt(a^2 - x^2)') hoặc

syms a x; int(1/sqrt(a^2 - x^2)), int(1/sqrt(a^2 - x^2),x)

4 int('1/sqrt(x^2 - a^2)') hoặc

syms a x; int(1/sqrt(x^2 - a^2)), int(1/sqrt(x^2 - a^2),x) Bài 1.5.9

1 int('sin(x)/(1+cos(x)^2)',0,pi) 2 int('1/(1+x^4)',0,inf)

3 int('1/(1+x^8)',-inf,0) 4. int('1/(1+x^2)',-inf,inf) Bài 1.5.10

Trang 39

Số xấp xỉ và sai số

Ch−¬ng 2 SỐ XẤP XỈ VÀ SAI SỐ

Yêu cầu cơ bản đối với người học

Hiểu rõ các cách biểu diễn số xấp xỉ

Nắm vững nguyên tắc đánh giá sai số của biểu thức

Vận dụng được hàm đánh giá sai số vào trường hợp cụ thể

2.1 Số xấp xỉ, sai số tuyệt đối và sai số tương đối

2.1.1 Số xấp xỉ

Định nghĩa 2.1.1 Số a được gọi là số xấp xỉ[1 ] của số đúng A nếu a khác A không đáng kể và được dùng thay cho A trong tính toán

Số a được gọi là:

• xấp xỉ thiếu[2] của A nếu a < A

• xấp xỉ thừa[3] của A nếu a > A

Ví dụ, các số 0.2857 và 0.286 tương ứng là xấp xỉ thiếu và xấp xỉ thừa của số 2

7

2.1.2 Sai số tuyệt đối

Định nghĩa 2.1.2. Hiệu ∆a = ±(A – a) được gọi là sai số của số xấp xỉ a, còn |∆a| được gọi là sai số tuyệt đối[4] của số xấp xỉ a

Thường ta không biết số đúng A, nên không xác định được sai số tuyệt đối của số xấp xỉ a

Vì vậy, người ta đưa thêm khái niệm sai số tuyệt đối giới hạn[5]

Định nghĩa 2.1.3. Sai số tuyệt đối giới hạn của số xấp xỉ a, ký hiệu là ∆a, là số không nhỏ hơn sai số tuyệt đối của số xấp xỉ a Tức là ∆a ≥ |∆a| = |A – a|

Do đó a – ∆a ≤ A ≤ a + ∆a Ta quy ước viết A = a ± ∆a

Trong thực tế, người ta chọn ∆a là số nhỏ nhất có thể trong các số lớn hơn |∆a|

2.1.3 Sai số tương đối

Định nghĩa 2.1.4. Sai số tương đối[6] của số xấp xỉ a là δa = ∆a = A a−

Như vậy |∆a| = |A|δa

Định nghĩa 2.1.5. Sai số tương đối giới hạn[7] của số xấp xỉ a là số không nhỏ hơn sai số tương đối của số xấp xỉ a, và được ký hiệu là δa

Vì δa ≥ δa, nên |A – a| ≤ |A|δa, do đó ta có thể viết a = A(1 ± δa)

Trang 40

• Nếu ∆a ≤ (0.5)10k thì chữ số αk được gọi là chữ số đáng tin

• Nếu ∆a > (0.5)10k thì chữ số αk được gọi là chữ số nghi ngờ

Như vậy, nếu αk là chữ số đáng tin thì mọi chữ số bên trái nó đều là đáng tin, nếu αk là chữ

số nghi ngờ thì mọi chữ số bên phải nó đều là nghi ngờ

Ví dụ, với a = 3.7284 và ∆a = 0.0047 thì các chữ số đáng tin là 3, 7 và 2, còn các chữ số nghi ngờ là 8 và 4

2.3 Sự quy tròn và sai số quy tròn

Khi tính toán, nếu số a có quá nhiều chữ số, người ta bỏ bớt đi một số chữ số bên phải và nhận được số a1, việc làm đó được gọi là sự quy tròn[1]

Sai số quy tròn tuyệt đối sẽ là θa1 = |a1 – a|

Ta có thể chọn sai số tuyệt đối giới hạn của a1 là ∆a1 = ∆a + θa1

2.4 Xác định sai số của hàm số khi biết sai số của các đối số

Công thức tổng quát của sai số

Cho hàm số khả vi u = f(x1, x2, , xn)

Giả sử biết các sai số tuyệt đối giới hạn của các đối số xk là

k x

Ngày đăng: 16/11/2014, 11:58

HÌNH ẢNH LIÊN QUAN

5.2. Sơ đồ horner tính giá trị của đa thức - giáo trình môn toán 4
5.2. Sơ đồ horner tính giá trị của đa thức (Trang 69)
Dễ kiểm tra rằng nghiệm đúng là y = 3e x  – x – 1, đồ thị của nó chính là đường nét liền  trên Hình 7-1 - giáo trình môn toán 4
ki ểm tra rằng nghiệm đúng là y = 3e x – x – 1, đồ thị của nó chính là đường nét liền trên Hình 7-1 (Trang 92)

TỪ KHÓA LIÊN QUAN

w