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.