Tải bản đầy đủ - 0 (trang)
5 Phép lấy vi phân

5 Phép lấy vi phân

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

122

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

>> title('Second Order Curve Fitting')

Vi phân trong trờng hợp này đợc sử dụng bằng cách sử dụng hàm đạo hàm

polyder:

>> pd = polyder(p)

pd =

-19.6217

20.1293

Vi

phân

của

đa

thứcy=-9.8108x2+20.1293x-0.0317làdx/dy=

-19.6217x+20.1293. Bởi vì đạo hàm của một đa thức cũng đợc vẽ và tính giá

trị giống nh là đối với đa thức:

>> z = polyval(pd,xi); % evaluate derivative

>> plot(xi,z)

>> xlabel('x'),ylabel('dy/dx')

>> title('Derivative of a Curve Fit Polynomial')



H×nh 16.6



123



Hình 16.7

Trong trờng hợp này xấp xỉ đa thức là một hàm bậc hai và đạo hàm của nó

trở thành hàm bậc nhất.

MATLAB cung cấp một hàm để tính toán đạo hàm một cách sơ bộ dựa vào

dữ liệu mô tả một số hàm, hàm này có tên là dif, nó tính toán độ chênh lệch

giữa các phần tử trong mảng. Bởi vì đạo hàm đợc định nghĩa nh sau:

nên đạo hàm của hàm f(x) có thể đợc tính một cách sơ bộ dựa vào công thức:

khi h>0

Gọi là số ra cña y chia cho sè ra cña x, do hàm dif tính toán sự khác nhau giữa

các phần tử trong mảng nên đạo hàm có thể đợc tính một cách xấp xỉ dựa vào

hàm dif:

>>

>>

>>

>>

>>

>>

>>



dy = diff(y)./diff(x);

% compute differences and use array division

xd = x(1:length(x)-1);

% create new x axis array since dy is shorter than y

plot(xd,dy)

title('Approximate Derivative Using DIFF')

ylabel('dy/dx'),xlabel('x')



124



H×nh 16.8

Do hàm dif tính ra sự khác nhau giữa các phần tử nên kết quả của ví dụ

trên là một mảng có số phần tử ít hơn mảng ban đầu một phần tử. Vì vậy để

vẽ đợc đồ thị của đạo hàm thì phải bỏ đi một phần tử của mảng x. So sáng

hai đồ thị cuối cùng thì thấy hiển nhiên rằng đạo hàm tính bằng phơng pháp

gần đúng khác xa so với thực tế.

16.6 Phơng trình vi phân

Có thể bạn đã khá quen với thực tế là rất nhiều hệ thống vật lý đều đ ợc mô

tả bằng phơng trình vi phân. Do vậy phần sau đây đối với bạn có thể khá hấp

dẫn.

Một phơng trình vi phân thờng mô tả tốc độ thay đổi của một biến sè

trong hƯ thèng theo sù thay ®ỉi cđa mét biÕn khác trong hệ thống hoặc theo

kích thích bên ngoài. Phơng trình vi phân thông thờng có thể đợc giải nhờ các

phơng pháp giải tích hoặc sử dụng công cụ toán kí hiệu của MATLAB.

Trong những trờng hợp mà phơng trình vi phân không thể giải đợc bằng phơng pháp giải tích thì việc sử dụng phơng pháp số học trở lên khá hiệu quả. Để

minh hoạ hãy xét phơng trình Van Der Pol, phơng trình biểu diễn một bộ dao

động.

Tất cả các phơng pháp toán học để giải phơng trình dạng này đều sử dụng

một phơng trình vi phân cao cấp hơn, tơng đơng với một tập phơng trình vi

phân bậc nhất. Đối với phơng trình vi phân trên thì cách giải này đợc thực

hiện bằng cách định nghĩa hai biến trung gian:

đặt y1 = x, và y2 =

suy ra:

Đối với các hệ phơng trình nh thế này MATLAB cung cấp một tập các hàm

ODE để giải xấp xỉ hoá chúng một cách số học. Trong quyển hớng dẫn này

chúng ta không có khả năng để nêu hết những nội dung và ứng dụng của từng

hàm trong bộ ODE. Để tìm hiểu thêm về các hàmm ODE ứng dụng trong rất

nhiều bài toán thí dụ, hãy gõ >> odedemo tại dÊu nh¾c cđa MATLAB. Tríc hÕt



125

chóng ta h·y xÐt vÝ dụ sau đây, chính là ví dụ ode45. Chúng ta phải viết một

hàm M_file trả về các đạo hàm nếu biết trớc các giá trị tức thời của y1 và y2.

Trong MATLAB các đạo hàm đợc cho bởi các vector cột, trong trờng hợp này gọi là

yprime. Tơng tự y1 và y2 đợc viết dới dạng vector cột y. Kết quả của một hàm

M_file nh sau:

function yprime=vdpol(t,y);

% VDPOL(t,y) returns the state derivatives of

%

the Van der Pol equation:

%

%

x''-mu*(1-x^2)*x+x=0

%

%

let y(1)=x

and y(2)=x'

%

%

then y(1)'=y(2)

%

y(2)'=mu*(1-y(1)^2)*y(2)-y(1)

mu=2;

% choose 0< mu < 10

yprime=[y(2)

mu*(1-y(1)^2)*y(2)-y(1)]; % output must be a column

Giả sử thời gian kéo dài từ 0 đến 30 giây, ví dụ tspan=[0 30]. Sau đó sử

dụng lệnh vdpol thì lời giải cho bài toán nh sau:

>> tspan = [0 30];

>> yo = [1;0];

>> ode45('vdpol',tspan,yo);

Khi sư dơng hµm mµ không có đối số ra, các hàm ODE sẽ tự động chọn những

thời điểm thích hợp để tính đạo hàm. Để có thể truy nhập đợc dữ liệu, ta chỉ

cần cung cấp cho hàm những thông số ra.

>> [t,y] = ode45('vdpol',tspan,yo);

ở đây t là một vector cột chứa những thời điểm để tính đạo hàm, còn y là

một ma trận chứa hai cột và các hàng length(t), hàng đầu tiên cđa ma trËn y

chøa biÕn sè y(1), hµng thø hai là biến số y(2).

Dựa vào những đặc điểm này chúng ta có thể vẽ đợc đồ thị pha, là đồ thị

giữa y(2) và y(1):

>> plot(y(:,1),y(:,2))

4

3

2

1

0

-1

-2

-3

-4

0



5



10



15



20



25



30



Hình 16.9

Các hàm ODE của MATLAB đều có trợ giúp trực tuyến, mỗi hàm đều có các

đối số cũng nh cách sử dụng riêng, nếu bạn muốn nghiên cứu thêm thì hãy tham

khảo thêm phần trợ gióp trùc tun cđa chóng.

4

3

2

1

0

-1

-2

-3

-4

-3



-2



-1



0



1



2



3



H×nh 16.10



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

5 Phép lấy vi phân

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

×