Tải bản đầy đủ - 0 (trang)
1 Mịn hoá đưường cong

1 Mịn hoá đưường cong

Tải bản đầy đủ - 0trang

106



Hình 15.1

Trong MATLAB hàm polyfit sẽ giải quyết vấn đề xấp xỉ đờng cong quân

phơng bé nhất. Để minh hoạ cho việc sử dụng hàm này, chúng ta hãy bắt đầu

bằng các dữ liệu đã có ở trong hình vẽ.

>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];

>> y =[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

Để sử dụng hàm polyfit, chúng ta phải truyền cho nó dữ liệu trên và bậc của

đa thức mà chúng ta muốn phù hợp với dữ liệu, nếu chúng ta chọn bậc n là 1 thì

đờng cong xấp xỉ gần nhất sẽ là đờng thẳng. Phơng pháp này đợc gọi là phơng pháp xấp xỉ tuyến tính. Mặt khác nếu chúng ta chon n=2 thì chúng ta sẽ

tìm đợc một tam thức bậc hai. Ví dụ:

>> n = 2;

>> p = polyfit(x,y,n)

p =

-9.8108

20.1293

-0.0317

KÕt qu¶ cđa polyfit là một vector biểu diễn hệ số của một đa thức bậc hai. ở

đây đa thức đó là

y= -9.8108x2+20.1293x-0.0317. Để so sánh mức độ xấp xỉ của đa thức với

các ®iĨm d÷ liƯu chóng ta h·y vÏ hai ®êng:

>> xi = linspace(0,1,100);

Dòng này để tạo ra dữ liệu trục x để chuẩn bị vẽ đa thức



107

>> z = polyval(p,xi)

Dòng này gọi hàm polyval của MATLAB để tính giá trị của đa thức p tại các

điểm xi

>> plot(x,y,'-o',xi,z,':')

Vẽ các điểm có toạ độ là x và y, đánh dấu các điểm này bằng chữ o sau đó

nối các điểm này bằng các đoạn thẳng. Ngoài ra nó còn vẽ dữ liệu của đa thức

xi và z dùng đờng chấm chấm.

>> xlabel('x'),ylabel('y=f(x)')

>> title('Second Oder Curver Fitting')

Tạo nhãn cho đờng cong vừa vẽ. Kết quả của các lệnh trên đây là một đồ

thị đã đợc giới thiệu ở trên.

Việc chọn bậc của đa thức không phải là ngẫu nhiên, nếu có hai điểm thì

xác định một đờng thẳng, tức là một đa thức bậc nhất, ba điểm thì xác

định một parabol bậc hai. Cứ nh vậy, để xác định một đờng cong bậc n, cần

có n+1 điểm. Vì vậy, ở trong ví dụ trớc có 11 điểm dữ liệu, chúng ta có thể

chọn bậc của đa thức là từ 1 đến 10. Tuy nhiên, do tính chất số học của các đa

thức bậc cao rất phức tạp nên bạn không nên chọn bậc của đa thức lớn hơn mức

cần thiết. Ngoài ra khi bậc của đa thức tăng lên thì sự xấp xỉ càng kém hơn,

vì vậy các đa thức bậc cao có thể bị đạo hàm nhiều lần trớc khi đạo hàm của

chúng bằng không. Ví dụ cho một đa thức bậc 10:

>> pp = polyfit(x,y,10)

pp =

1.0e+006 *

Columns 1 through 7

-0.4644

2.2965

-4.8773

5.8233

-4.2948

2.0211

-0.6032

Columns 8 through 11

0.1090

-0.0106

0.0004

-0.0000

>> format short e

% change display format

>> pp.' % display polynomial coefficients as a column

ans =

-4.6436e+005

2.2965e+006

-4.8773e+006

5.8233e+006

-4.2948e+006

2.0211e+006

-6.0322e+005

1.0896e+005

-1.0626e+004

4.3599e+002

-4.4700e-001

Lu ý kÝch thíc của vector hệ số đa thức trong trờng hợp này so với đờng cong

bậc hai trớc đây, đồng thời cũng lu ý sự khác nhau giữa số hạng nhỏ nhất và số



108

hạng lớn nhất trong đa thức vào khoảng 10 7. Hãy thử vẽ đờng cong này và so

sánh với dữ liệu gốc và với đờng cong bậc hai.

>>

>>

>>

>>



zz = polyval(pp,xi); % evalute 10th order polynomial

plot(x,y,'o',xi,z,’:’,xi,zz) % plot data

xlabel('x'),ylabel('y=f(x)')

title('2nd and 10th Order Curver Fitting')



Hình 15.2

Trên hình 15.2, dữ liệu gốc đợc đánh dấu o, đờng cong bậc hai đợc vẽ bằng

nét chấm chấm, còn đờng cong bậc 10 đợc vẽ bằng nét đậm. Để ý đến nét

gợn sóng xuất hiện giữa các điểm dữ liệu bên phía trái và bên phía phải của đờng cong bậc 10. Dựa vào đồ thị này thì rõ ràng rằng cái chiết lý càng nhiều

càng tốt không thể áp dụng đợc ở đây.

15.2 Nối điểm một chiều

Nh đã giới thiệu thì nối điểm đợc định nghĩa nh là một phơng pháp dự

đoán giá trị của hàm giữa những điểm cho trớc. Nối điểm là một công cụ hữu

hiệu khi chúng ta không thể nhanh chóng tiính đợc giá trị của hàm tại các

điểm trung gian. Phơng pháp này đợc sử dụng rộng rãi đối với dữ liệu là giá trị

của các phép đo thực nghiệm hoặc là kết quả của các chuỗi tính toán dài. Có

thể ví dụ đơn giản nhất của việc nối điểm chính là phơng pháp vẽ từng

điểm của MATLAB, tức là vẽ những đoạn thẳng nối những điểm dữ liệu liên

tiếp để tạo lên một đồ thị.



109

Đây là phơng pháp nối điểm tuyến tính, nó cho rằng các giá trị của hàm

nằm giữa hai điểm cho trớc sẽ rơi vào khoảng giữa hai đầu của đoạn thẳng

nối hai điểm đó. Hiển nhiên là khi số lợng các điểm dữ liệu tăng lên và khoảng

cách giữa chúng giảm đi thì phơng pháp nối điểm tuyến tính càng trở lên

chính xác.

>>

>>

>>

>>

>>



x1 = linspace(0,2*pi,60);

x2 = linspace(0,2*pi,6);

plot(x1,sin(x1),x2,sin(x2),'-')

xlabel('x'),ylabel('sin(x)')

title('Linear Interpolation')



Hình 15.3

Cả hai đồ thị cùng vẽ một hàm sine nhng đồ thị 60 điểm thì mịn hơn đồ thị

6 điểm.

Cũng giống nh phơng pháp xấp xỉ hoá đờng cong, ở đây chúng ta cũng

phải thực hiện một số lựa chọn, có rất nhiều cách để nối hai điểm, tuỳ thuộc

vào giả định mà chúng ta đã lựa chọn. Hơn nữa chúng ta có thể nối các điểm

trong không gian không phải là một chiều. Nói nh thế nếu bạn có dữ liệu phản

ánh một hàm phụ thuộc vào hai biến z=f(x,y), bạn có thể nối giá trị nằm giữa

hai điểm có x và y khác nhau để tìm ra giá trị trung gian của hai điểm.

MATLAB cung cấp một số hàm để nối là : interp1 nối các dữ liệu một chiều,

interp2 nối các dữ liệu hai chiều, interp3 nối các dữ liệu ba chiều, interpn

nối các dữ liệu có số chiều lớn hơn 3.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

1 Mịn hoá đưường cong

Tải bản đầy đủ ngay(0 tr)

×