BÀI GIẢNG MATLAB - Trang 133

129

0.0743
0.2115
0.2876
0.3780
0.4659
0.5597
0.6480
0.6907
0.6050
0.4533
0.3164
0.2414
0.2129

Ta thấy sai số tương đối trên khá nhỏ, sai số lớn nhất tìm được bằng lệnh max


>> eymax = max(err_y)
eymax = 6.9075e-004

Hàm ode45 sử dụng phương pháp Runge-Kutta bậc cao hơn, bậc 4 và bậc 5. Chúng
ta sẽ sử dụng lệnh này ñể giải phương trình vi phân trên, bằng cách viết tương tự

>> [t, w] = ode45('eq1', [0, 2*pi], 2)

So sanh với nghiệm giải tích, ở đây ta cần tính lại


>> f = sin(t) + 2;
>> plot(t,w,'ko', t, f,'k-'), xlabel('t'), ylabel('y(t)'),
>> axis([0 2*pi 0 4])

Với lý do có thể là số điểm chia sử dụng trong ode45 khác với số điểm chia sử
dụng trong ode23. Hình 6-2 là đồ thị các nghiệm f(t) và w(t). Để so sánh với
phương pháp giải tích, ta tính sai số tương đối với các dòng lệnh:


>> err_w = abs((f-w)./f); >> err_w = zeros(size(w));
>> for i = 1:1:size(w)
err_w(i) = abs((f(i)–w(i))/f(i));
end

và tìm được

>> ewmax = max(err_w)
ewmax = 4.9182e–006
>> ss = eymaxx/ewmax
ss = 140.4473

Sai số này nhỏ hơn cỡ 140 lần so với khi sử dụng lệnh ode23.

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.