BÀI GIẢNG MATLAB - Trang 75

69

Dưới đây là ba m-file được soạn.

% file_name = ptvp_vantoc.m

function dydt=ptvp_vantoc(t,y)

global m b F0 % khai bao cac bien tong the

dydt=1/m*(F0-b*y);

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

% file_name = Euler_method.m

function [t, z]=Euler_method(ptvp, t0, tf, y0, N)

% Cac bien:

% ptvp - ten file chua ve phai cua phuong trinh vi phan can
giai

% t0 - thoi diem dau

% tf - thoi diem cuoi (t0 < tf)

% y0 - gia tri ham tai thoi diem dau

% N - so doan ma khoang thoi gian (tf-t0) duoc chia ra

global m b F0

% khai bao cac bien tong

h = (tf - t0)/N; % buoc thoi gia

t = t0+[0:N]'*h;

% vector chua cac diem c

z(1,:) = y0;

for k = 1:N

z(k + 1,:) = z(k,:)+h*ptvp(t(k),z(k,:));

end

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

% file_name = tuy_chon__.m

% chuong trinh chinh

global m b F0 % khai bao cac bien tong the

m=1; b=0.2; F0=4; % Gan gia tri cho cac tham so

t0=0; tf=10; N=20; y0=0;

% nghiem gan dung z

[t, z]=Euler_method(@ptvp_vantoc, t0, tf, y0, N);

%nghiem chinh xac

y=F0/b*(1-exp(-b/m.*t));

figure(1)

subplot(211)

plot(t,y,'k',t,z,'-.k','Linewidth',1);

% so sanh ket qua tinh voi nghiem chinh xac

legend('y','z')

ylabel('y, z [m/s]');

subplot(212)

plot(t,abs(z-y),'k','Linewidth',1);

% sai so cua phuong phap

xlabel('t [s]'); ylabel('|y-z|');

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.