MATLAB LECTURE - Trang 34

16/09/2015

3

Nguyen Quang Hoang

Department of Applied Mechanics

Phương pháp sai số bình phương bé nhất

9

x

6

8

10

12

14

16

18

20

22 24

y 3.94 3.8 4.1 3.87 4.45 4.33 4.12 4.43 4.6 4.5

Nếu biểu diễn các số liệu trên bằng một đường thẳng, y = a x + b. Hãy
tìm các giá trị của a, b

và tìm giá trị của y khi x = 11.

Trước hết ta cần nhập hai véctơ số liệu x và y vào Matlab.
>> x = [6: 2 : 24]

x =

6 8 10 12 14 16 18 20 22 24

>> y = [3.94 3.8 4.1 3.87 4.45 4.33 4.12 4.43 4.6 4.5]

y =

3.94 3.80 4.10 3.87 4.45 4.33 4.12 4.43 4.60 4.50

Tiếp theo sử dụng lệnh polyfit để tìm các hệ số của đa thức
>> p =

polyfit(x,y,1

)

p = 0.0392 3.6267

Ví dụ 1. Cho biết các số liệu đo được như sau

Nguyen Quang Hoang

Department of Applied Mechanics

Phương pháp sai số bình phương bé nhất

10

Theo cách biểu diễn đa thức bằng một véctơ bắt đầu từ hệ số ứng với số hạng
có bậc lũy thừa lớn nhất, ta có
>> a=p(1)

a = 0.0392

>> b=p(2)

b = 3.6267

Giá trị cần tìn tại x =
11 được tính bằng
lệnh polyval(p,x)
>> polyval(p,11)

ans = 4.0574

6

8

10

12

14

16

18

20

22

24

0

1

2

3

4

5

x

y

Nguyen Quang Hoang

Department of Applied Mechanics

Phương pháp sai số bình phương bé nhất

11

Xét tổng bình phương của sai số là
>> w = a*x+b;
>> e = w-y;
>> S1 = sum(e.*e)

S1 = 0.2274

Nếu các điểm trên được làm mịn bằng đường bậc 2:
>> n=2;
>> p = polyfit(x,y,n);
p =
-0.0002 0.0443 3.5940
>> a=p(1); b=p(2); c = p(3);
>> w = a*x.^2+b*x+c;
>> e = w-y;
>> S2= sum(e.*e)

S2 = 0.2272

Ta thấy sai số có nhỏ hơn (S2<S1) nhưng không đáng kể.

Nguyen Quang Hoang

Department of Applied Mechanics

Mịn hóa bằng đa thức

12

x

0

0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 5.0 6.0 6.1 7.0

y

300

281

261

244

228

214

202

191

181

164

151

149

141

Hãy tìm một đa thức bậc 3 phù hợp với số liệu cho. So sánh sai số so với
trường hợp nếu sử dụng đa thực bậc hai.
Trước hết nhập số liệu vào hai véctơ và nối các điểm ta được
>> x = [0, 0.5, 1.0,1.5, 2, 2.5,3, 3.5,4, 5, 6,
6.1, 7];
>> y = [300,281,261,244, 228,214,202,191,181,164,151,
149,141];
>> plot(x,y,

'ko'

, x,y,

'k-'

), grid

on

, xlabel(

'x'

),

ylabel(

'y'

)

Ví dụ 2. Cho bộ số liệu sau

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.