bai2_buoi2

Màu nền
Font chữ
Font size
Chiều cao dòng

BÀI 2. CÁC PHÉP TÍNH VỀ MẢNG

2.1. Bước đầu với phép tính mảng

Ở các phần trước đã giới thiệu một số phép toán, tuy nhiên các phép toán đó chỉ thực hiện đối với từng phần tử. Trong quá trình giải quyết các bài toán lớn, có thể ta cần phải lặp lại một phép toán với rất nhiều giá trị của một biến. Nếu theo cách tính thông thường, ta phải tính toán cho từng giá trị, sau đó ghi lại các kết quả theo một bảng. Làm như vậy rất mất thời gian. Matlab cung cấp một công cụ rất hữu hiệu để thực hiện đồng thời cùng một phép toán cho nhiều giá trị của một biến. Đó là các phép tính về mảng.

Ta sẽ bắt đầu làm quen các phép tính mảng qua ví dụ dưới đây:

Giả sử bài toán đặt ra nhiệm vụ tính một loạt các giá trị của hàm số y = 2x - 1 tại các điểm sau: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Với bài toán này, nếu theo cách thông thường của máy tính tay thì ta phải thực hiện 12 phép tính. Tuy nhiên, với phép tính mảng của Matlab thì ta làm như sau:

>> x = [1 2 3 4 5 6 7 8 9 10 11 12];

>> y = 2*x-1;

Matlab cho kết quả

>> y =

1 3 5 7 9 11 13 15 17 19 21 23

Ở ví dụ trên, trước hết ta khai báo mảng các giá trị của x, mảng này gồm có 12 phần tử. Để khai báo mảng, ta cho tất cả các giá trị (phần tử) của mảng vào trong dấu [], các phần tử được ngăn cách nhau bởi dấu cách. Sau khi khai báo mảng các giá trị của x, ta định nghĩa mảng y là một hàm của mảng x. Matlab sẽ tính giá trị của hàm y = f(x) tại các phần tử của mảng x và cho ra kết quả là một mảng y gồm có các phần tử tương ứng các phần tử trong mảng x.

2.2. Địa chỉ mảng

Sau khi đã tính xong mảng y, đôi lúc ta chỉ cần lấy ra một hay một số phần tử cần quan tâm mà thôi. Do vậy, Matlab cung cấp một cách để thực hiện việc này, đó là địa chỉ mảng.

Ví dụ: Để lấy phần tử thứ 2 của mảng y. Ta có:

>> y (2)

ans =

3

Để lấy phần tử thứ hai và phần tử thứ 4. Ta có:

>> y([2 4])

ans =

3 7

Tóm lại, ta có một số cú pháp sau:

1) y(n) % để lấy phần tử thứ n của mảng (n ≤ số phần tử của mảng)

2) y([m n]) % để lấy phần tử thứ m và phần tử thứ n (giữa m và n phải có dấu cách).

3) y(m:n) % để lấy tất cả các phần tử thứ m đến thứ n của mảng (m ≤ n).

4) y(m:∆:n) % để lấy các phần tử sau của mảng: Bắt đầu từ phần tử thứ m, sau đó tăng lên ∆ (tức là phần tử thứ m + ∆), đến phần tử thứ n thì thôi. Trong trường hợp này nếu ∆ > 0 thì n > m; còn nếu ∆ < 0 thì n < m.

VD: y (2:3:9) có nghĩa là sẽ tương đương với y([2 5 8]), tức là lấy phần tử thứ 2, thứ 5, thứ 8.

2.3. Thành lập các mảng

Ở ví dụ trên ta nhập lần lượt các giá trị của các phần tử vào mảng. Tuy nhiên nếu số lượng phần tử nhiều và tuân theo một quy luật nào đó (thường trong các bài toán kỹ thuật, các giá trị của mảng được cho theo một quy luật nào đó - thường là các giá trị cách đều nhau). Thì ta sẽ tạo ra các mảng bằng nhiều cách ngắn gọn hơn. Người ta thường dùng các cách sau:

Cách 1: x = (m:∆:n) % Lấy các giá trị bắt đầu từ m, tăng lên một lượng là ∆ cho đến n thì thôi. Nếu ∆ > 0 thì n > m; còn nếu ∆ < 0 thì n < m

Ví dụ: x = (1:2:12), cho kết quả:

x =

1 3 5 7 9 11

x = (1:3:12), cho kết quả:

x =

1 4 7 10

x = (12:-1:1), cho kết quả:

x =

12 11 10 9 8 7 6 5 4 3 2 1

Cách 2:

x = linspace(m,n,k) % Có nghĩa là lấy k giá trị với giá trị khởi đầu là m, giá trị cuối cùng là n.

Ví dụ: x = linspace(1,10,20), cho kết quả:

x =

Columns 1 through 7

1.0000 1.4737 1.9474 2.4211 2.8947 3.3684 3.8421

Columns 8 through 14

4.3158 4.7895 5.2632 5.7368 6.2105 6.6842 7.1579

Columns 15 through 20

7.6316 8.1053 8.5789 9.0526 9.5263 10.0000

Cách 3: logspace (m,n,k) % Lấy k giá trị từ 10m đến 10n. (tức k giá trị tương ứng từ m đến n).

VD: logspace (1,5,3), cho kết quả:

ans =

10 1000 100000

Tuy nhiên , trên thực tế thường dùng hai cách trên, còn cách 3 ít khi sử dụng

2.4. Các phép toán cơ bản về mảng

2.4.1. Phép toán giữa mảng với đại lượng vô hướng

Giả sử ta có mảng a = [2 4 6 8 10]. Ta có một số phép toán sau:

a) a + x (trong đó x là đại lương vô hướng) % Cộng các phân tử của a với x để được một mảng mới.

VD: a + 1, sẽ cho kết quả

ans =

3 5 7 9 11

b) a - x % phép trừ mảng a với đại lượng vô hướng x - tương tự như phép cộng

c) a*x % phép nhân mảng a với đại lượng vô hướng x - tương tự phép cộng và trừ

d) a/x (x\a) % phép chia mảng a với đại lượng vô hướng x - tương tự phép cộng, trừ và nhân

Chú ý: - không có x/a (a\x).

- không có a^x hoặc x^a.

2.4.2. Phép toán giữa mảng với mảng

Khi hai mảng có số phần tử như nhau, khi thực hiện các phép tính (cộng, trừ, nhân, chia, luỹ thừa) giữa các phần tử của mảng này với các phần tử của mảng kia theo thứ tự tương ứng thì ta dùng các lệnh có cú pháp sau:

Giả sử a, b là hai mảng

a = [2 4 6 8 10]; b = [ 1 3 5 7 9].

a) Cộng các phần tử tương ứng của hai mảng để được mảng mới.

VD: c = a+b;

c = [3 7 11 15 19]

b) Trừ các phần tử tương ứng của hai mảng để được mảng mới.

VD: c = a-b;

c = [1 1 1 1 1]

c) Nhân các phần tử tương ứng của hai mảng để được mảng mới.

VD: c = a.*b;

c = [2 12 18 56 90]

d) Chia các phần tử tương ứng của hai mảng để được mảng mới.

VD: c = a./b;

c = [2.0000 1.3333 1.2000 1.1429 1.1111]

e) Luỹ các phần tử tương ứng của hai mảng để được mảng mới.

VD: c = a.^b;

c = 1.0e+009 *[0.0000 0.0000 0.0000 0.0021 1.0000]

f) Luỹ thừa với đại lượng vô hướng

- VD1: c= a.^2

c = 4 16 36 64 100

- VD2: c=2.^a

c = [4 16 64 256 1024]

2.5. Các mảng có nhiều dòng và nhiều cột

Ở phần trước, ta chỉ nói đến các mảng chỉ có một dòng nhiều cột, nay ta nói đến các mảng có một cột nhiều dòng và các mảng có nhiều dòng nhiều cột.

2.5.1. Các mảng có một và nhiều dòng

* Cách thành lập

- Cách 1: a = [1;2;3;4;5;6]

a = 1

2

3

4

5

6

- Cách 2: a = [1

2

3

4

5

6]

- Cách 3: a'

2.5.2. Các mảng nhiều dòng và nhiều cột

Khai báo:

a = [ 1 2 3 4; 5 6 7 8] hoặc a = [1, 2, 3, 4; 5, 6 , 7 , 8]

hoặc a = [ 1 2 3 4

5 6 7 8]

2.5.3. Các phép tính tương ứng các phần tử của các mảng

- Câu lệnh: Như đối với véctơ dòng

- Điều kiện: Phải cùng số dòng và số cột.

Bạn đang đọc truyện trên: Truyen2U.Pro

#matlab