Do đó, các hệ số ao, ai, ..., đ„ được tìm thông qua giải hệ phương trình đạo hàm riêng bang 0: Giải hệ phương trình trên, ta sẽ thu được các giá trị nghiệm tương ứng với hệ số của đa t
Trang 1DAI HOC QUOC GIA THANH PHO HO CHI MINH TRUONG DAI HOC BACH KHOA
BK
TP.HCM
BÀI TẬP LỚN MÔN HỌC: PHƯƠNG PHÁP TÍNH
CHƯƠNG TRÌNH XỬ LÝ BỘ DỮ LIỆU RỜI RẠC PROJECT 5: ARCTIC SEA ICE
Giáng viên hướng dan: ThS
Nhóm: - Lớp:
Sinh viên thực hiện:
vả tên
1P HCM, ngày 15 tháng 12 năm 2023
Trang 2MUC LUC
IlNeo.sndav 0i ẽ 3
1.1 Phương pháp bình phương cực tiêu dé xấp xỉ hàm số -.- 5-5255 3
1.2 Phương pháp chia đôi trong tìm nghiệm phương trình c5: c- s: 4
1.3 Công thức sai phân hướng tâm trong ước tính đạo hàm 4
1.4 Phương pháp Simpson và Hình thang mở rộng trong xấp xỉ tích phân 5
II THUẬT TOÁN 2252222222222122221111221111221111211112111111211111011112011 1 te 6
1.1 Chương trinh Matlab - - c2 2 2221211121112 1 12111111111 1111 1011111111128 11 kg 6
1.2 Thuật toán của chương trình - c2 2212111211121 12111211511 281 2121821 kg 11
II ÁP DỤNG VÀO PROJECT 5 -2522222222221122221122221121112111221 2E ee 12
San») “311 12
3.2, COU 13
3.3 Cau 3
Trang 3I CO SO LY THUYET
1.1 Phương pháp bình phương cực tiểu để xấp xỉ hàm số
Phương pháp bình phương, cực tiểu dựa trên việc tôi thiểu hóa tông bình
phương của các sai số giữa giá trị dự đoán và giá trị thực tế Giả sử chúng ta có
một tập hợp các điểm đữ liệu (x;), trong đó: 7 = 1, 2, , ø và xấp xỉ bằng một
đa thức bậc 7m:
P(Y)=a +dx+da.v + +d A Trong phương pháp bình phương cực tiêu, các hệ số ao, øi, , đ„ được tính
băng cách giải hệ phương trình sau:
SW’ (P()- ») > min
Trong đó: P(x; la gia tri của đa thức xấp xỉ tại x
Do đó, các hệ số ao, ai, ., đ„ được tìm thông qua giải hệ phương trình đạo
hàm riêng bang 0:
Giải hệ phương trình trên, ta sẽ thu được các giá trị nghiệm tương ứng với hệ
số của đa thức bình phương cực tiêu
Phương pháp bình phương cực tiểu thường được sử dụng trong các bài toán
xấp xỉ hàm số, đặc biệt là khi đữ liệu có nhiễu và cần tìm ra một xấp xỉ mượt và
tối ưu Trong MATLAB, chúng ta có thể sử dung ham polyfit để thực hiện xấp
xỉ đa thức băng phương pháp bình phương cực tiêu
Trang 41.2, Phương pháp chia đôi trong tìm nghiệm phương trình
Phương pháp chia đôi (hay còn gọi là phương pháp phân đôi) là một phương
pháp sô để tìm nghiệm của phương trình trong toán học, đặc biệt là trong phép
tính số học máy tính Phương pháp này được sử dụng để tìm nghiệm của một
phương trình ƒx) = 0 trong một khoảng xác định [ø, 4], với điều kiện là hàm số
fx) lién tuc trén khoang dé va fa) va fb) có dấu khác nhau
Các bước thực hiện phương pháp chia đôi như sau:
I Xác định khoảng ban đầu: Chọn hai điểm a và b sao cho fla) va fb) c6
dau khác nhau Điều này đảm bảo rằng ít nhất một nghiệm của phương trình nằm trong khoảng [z5]
atb
2 Tinh gia tri trung diém: Tim diém trung diém — 2 của khoảng [a,
Al
3 Kiểm tra và cập nhật khoảng: Tính /{c) Nếu ƒ{e) = 0 hoặc giá trị tuyệt
đối của /(c) đủ nhỏ (dưới một ngưỡng nhất định), thì e là nghiệm cần tim
Nếu không, dựa vào dấu của Ke) để xác định nghiệm nằm ở nửa khoảng bên trái [øz, c| hay nửa khoảng bên phai [c, 5] Cap nhật ø hoac 4 thanh c tương ứng
4 Lặp lại: Lặp lại quy trình từ bước 2 đến bước 3 cho đến khi tìm được
nghiệm với độ chính xác mong muôn
Phương pháp chia đôi rất hữu ích vì nó đơn giản và luôn hội tụ tới một
nghiệm, miễn là các điều kiện ban đầu được thỏa mãn Tuy nhiên, tốc độ hội tụ
của phương pháp này không nhanh, đặc biệt là đối với các phương trình phức
tạp hoặc khi yêu câu độ chính xác cao
1.3 Công thức sai phần hướng tâm trong ước tinh dao ham
Sai phân hướng tâm là một phương pháp phổ biến trong việc ước tính đạo hàm
của một hàm sô tại một điêm cụ thê Nó được coi là chính xác hơn so với công
thức sai phân tiên hoặc lủi do sử dụng thông tín từ cả hai phía của điêm dang
xét Công thức nảy thường được dùng đề ước tính đạo hàm bậc nhật cua ham so
Để ước tính đạo hàm bậc nhất của hàm ƒx) tại điểm x = a, công thức sai phân
hướng tâm là:
((a+ji)- /(a- h)
p'(q)~
Trong do:
- f(a) la dao ham cua f(x) tai x =a
- hla bute sai phan
Công thức này dựa trên ý tưởng của định nghĩa giới hạn của đạo hàm nhưng
thay vi tiếp cận từ một phía (như trong sai phân tiên hoặc lùi), nó tiệp cận điểm
Trang 5x =a ty ca hai phía Điều này giúp cân bằng sai số và thường cung cấp một ước
lượng chính xác hon cho đạo hàm, đặc biệt là khi ; được chọn phù hợp
Công thức sai phân hướng tâm là một công cụ hữu ích trong tính toán số và
thường được sử dụng trong các thuật toán phân tích sô cũng nhu trong hoc may
và khoa học dữ liệu khi cần ước tính đạo hàm
1.4 Phương pháp Simpson và Hình thang mở rộng trong xấp xỉ tích phân
Phương pháp Simpson dựa trên ý tưởng sử dụng đa thức bậc hai (parabola) đề
xâp xỉ hàm số trong một khoảng nhỏ Giả sử chúng ta muốn tính tích phân của
hàm số ƒfx) trên khoảng [a, b], chia thành ø đoạn chăn Kí hiệu chiều rộng của
mỗi đoạn là ở, tức là:
b-a
iceCOr-
n
Dé ước tính giá trị tích phân, ta có thể sử dụng phương pháp Smmpson mở rộng
với số đoạn chia chăn Công thức xấp xỉ như sau:
1x t|/02)*4ŸŸ/G2)x3V'/G)£/02)/
Trong đó:
- 7 : số chăn, biểu thị số đoạn chia
-# : chiều rộng của mỗi đoạn
- x, : điểm chia của đoạn thứ ¿
Đối với trường hợp số đoạn chia 7 không chan, ta có thê sử dụng phương pháp
hình thang mở rộng để xấp xỉ tích phân Công thức để tính ước lượng của giá trị
tích phân bằng phương pháp hình thang mở rộng là:
[ (Cddr ==] (+2 (Cat in+ (@)
Trong do:
-h: chiéu rong cua mỗi đoạn
- #a) và ƒfh) là giá trị của hàm số tại các đầu mút của khoảng tích phân
Vf atih) 2 , ¬ ` kos: 2 Ỳ cày À ,
- : tông các giá trị của hàm sô tại các điêm nắm giữa đâu mút
của khoảng tích phân
Phương pháp Simpson mở rộng sẽ cho độ chính xác cao hơn, tuy nhiên khó
triển khai hơn so với phương pháp Hình thang mở rộng Cả hai phương pháp
này đều sẽ xấp xỉ giá trị tốt hơn nếu tăng số đoạn chia n hoặc giảm bước chia h
Trang 6II THUAT TOAN 1.1 Chương trình Matlab
cle
clear
syms x
format long
éNhap cac thong so dau vao
disp ('CHUONG TRINH XU LY SO LIEU ROI RAC")
DATA = inputdlg({'Ten file du lieu Excel:', 'Ten sheet
du lieu:','Chi so cot cua du lieu:','Chi so cot cua
buoc:', 'Hang bat dau:', 'Hang ket thuc:'},'Nnao du lieu
dau vao',[1 50],
{'Arctic Ice', 'Data','4', '1','1','12"});
if isempty (DATA)
return;
end
[NUM, ~, ~] = xlsread(DATA{1}, DATA{2});
Y=
NUM (str2double (DATA{5}):str2double (DATA{6}),str2double
(DATA{3})) >;
xX =
NUM (str2double (DATA{5}):str2double (DATA{6}),str2double
(DATA{4}));
H = X(2)-X(1);
[indxl, ~] = 11stđlg('Name', 'Lua chon mo hinh xap xi
so lieu: ', 'ListSize',[500,200],
"SelectionMode', 'single', 'InitialValue',3,'ListString'
{Da thục bac I.','Da thuc bac II.','Da thuc bac
TITI.','Da thuc đang mu ', ' "hoat chuong trinh : ('});?
if isempty (indx1)
return;
elseif indxl == || andxl == 2 || indxl ==
Stim ham so bac I, II, III bang phuong phap binh
phuong cuc tieu
co = polyfit(X, Y, indxl);
fx = poly2sym(co);
disp(['Da thuc tim duoc la: y = ',char(fx)])
elseif indxl ==
$tim ham mu bang phuong phap binh phuong cuc tieu
logCoef = polyfit(X, log(Y), 1);
aCoef = exp(logCoef(2));
bCoef = l1ogCoef (1);
fx = aCoef*exp (bCoef*x);
Trang 7disp(['Da thuc dang mu tim duoc la: y =
', char (fx) ])
else
return;
end
sve ham va du lieu len do thi
figure
hold on
plot (X, Y);
xiim([X(1) X(end)]) 5ơioi han trục X
grid on
title('Du lieu ham so');
xlabel('X');
ylabel('Y');
fplot (fx, [X(1) X(end)],' ');
legend('So lieu thục te','Mo hình xap xi')
Schay chuong trinh
while true
[indx2, ~] = 11stđlg('Name', 'Ban muon lam gi tiep theo?', 'ListSize', [300,300],
"SelectionMode', 'single', 'InitialValue',3,'ListString'
{'Giai phuong trinh.','Uoc tinh dao ham.', 'Uoc
tinh tịch phan.', 'Thoat chuong trỉnh : ('});
if indx2 ==
$giai phuong trinh bang phuong phap lap don
[indx3, ~] = listdlg('Name','’Ban muon giai phuong trinh nao?', 'ListSize',[300,300],
"SelectionMode', 'single', 'InitialValue',3,'ListString'
{'f(x) = 0.','f (x) = 0.','f (x) = 0.', ‘Quay
lai.','Thoat chuong trinh :_('});
if indx3 ==
f = £x;
elseif indx3 ==
f = diff (fx);
elseif indx3 ==
f = diff (fx,2);
elseif indx3 == 4
continue;
else break;
end
Trang 8tim khoang cach ly nghiem
N = []; $ma tran chua khoang cach ly nghiem XGrid = X(1):0.1:X(end);
F = subs(f, {x}, {XGrid});
for i = l:length(F)-1
if F(i)*F(it+l) < 0 co nghiem trong khoang
nay
N = [N ; XGrid(i) XGrid(i+1)];
end end
if ~isempty (N) Stim nghiem bang phuong phap chia doi
n = inputdlg('Nhap so lan lap:','Xap xi nghiem bang phuong phap chia doi', [1 70],{'50'});
n = str2double(n);
$lap bang phuong phap chia doi
c = zeros(1,length(N(:,1)));
for 1 = l:length(N(:,1)) for j = i:ntl e(i) = (N(i,1) + N(i,2))/2;
if subs(f,x,N(i,1))*subs(f,x,c(i))
> 0
N({i,1) = c(i);
elseif subs (f,x,N(1i,2))*subs(f,x,c(i)) > 0
N(i,2) = c(i);
end end end
%ket luan gia tri nghiem
disp(['Giai phuong trinhn ',char(f),' =
O.'))
disp('Cac gia tri nghiem tim duoc: ') disp(c)
else
disp('Phuong trinh vo nghiem!!!!');
end elseif indx2 ==
df val = zeros(size(X));
d2f val = zeros(size(X));
[indx4, ~] = listdlg('Name','Ban muon uoc tinh gia tri dao ham tren mo hinh nao?', 'ListSize',
[300,300],
Trang 9{'Dao ham bac I.','Dao ham bac II.', 'Quay lai.','Thoat chuong trinh :_('});
guoc tinh gia tri dao ham bang phuong phap sal phan huong tam
if indx4 ==
val = inputdlg('Ban muon uoc tinh gia tri
dao ham tai diem nao?','Uoc tinh gia tri dao ham', [1
35], {'5'})3
val = str2double(val);
for k = 1: length(Y) - 2
df val(k+1) = (¥(k+2)-Y(k))/2*H;
end 7 disp('Uoc tinh dao ham bac [.') disp(['Du lieu duoc uoc tinh la:
" num2str(df val(val))j)
elseif indx4 ==
val = inputdlg('Ban muon uoc tinh gia tri
dao ham tai diem nao?','Uoc tinh gia tri dao ham', [1
35], {'5'})3
val = str2double(val);
for k = 1: length(Y) - 2
df val(k+1) = (¥(k+2)-Y(k))/2*H;
end for kk = 1: length(Y) - 2
d2f val(kk+1) = (df val (kk+2)-
df val (kk) )/2*H;
end disp('Uoc tinh dao ham bac I1.') disp(['Du lieu duoc uoc tinh la:
',num2str(d2f val (val))])
elseif indx4 ==
continue;
else break;
end elseif indx2 ==
guoc tinh gia tri tich phan bang phuong phap hinh thang mo rong
r = inputdlg({'Gia tri a:','Gia tri b:'},'Uoc
tinh gia tri tich phan tren khoang [a, b]',[1 35],
{'1', 7123);
a = str2double(r{1});
Trang 10b = str2double(r{2});
newY = Y(a:b);
if mod((b-a),2) ==
coef = ones(1,length(newY));
coef(2:2:end-1) = 4;
coef(3:2:end-2) = 2;
I = (H/3)* (coef*newY);
disp('Gia tri a, b tao thanh khoang n
chan, tinh toan gia tri tich phan dua tren phuong phap
Simoson mo rong!)
disp(['Gia tri tich phan xap xi la: ',
num2str(1)])
elseif mod((b-a),2) ~= 0 coef = ones(1,length(newY));
coef (2:length(newY)-1) = 2;
I = (H/2)* (coef*newY) ;
disp('Gia tri a, b tao thanh khoang n le,
tinh toan gia tri tich phan dua tren phuong phap hinh
thang mo rong!')
disp(['Gia tri tich phan xap xi la: ',
num2str(1)])
else
disp('Gia tri ava b duoc nhap khong hop le!!!)
break;
end else
break;
end
end
Trang 111.2, Thuật toán của chương trình
Số liệu đầu vào Gan dữ liệu vào Mô hình hoá dừ liệu | „| Biểu diễn dữ liệu và đa thức
từ file Exeel các mảng X Y, thành đa thức lên đồ thị
7 |
Vong lip while-end = /—
Tìm nghiệm và xuất kết quả |&—] Nhập vào số lần lặp |&——| Chọn phương trình cần giải | we
N
: Ước tính giá tị dyo him |, | sy vio vitri cin wdc tinh fe —| Chon him cin use tính |“ ,
và xuất kết quả — giá trị đạo hàm,
N : Ước tính giá trị tích phân š th > | : > Nhập vào khoảng giá trị ee ưa chọn ước tính p>
aa Sa eked #Y—< <q) đoạn chín chân cần ước tính tích phân [*Y Ziámitehphân
N : Ước tính giá trị tích phân >, _|
bo KH ưng ¬ |«Y—< Thoát chương trình?
Hình 1.1 Thuật toán cua chwong trinh Matlab
Trang 12HI ÁP DỤNG VÀO PROJECT 5
3.1 Cau 1
Chạy chương trình, ta cần phải nhập các đữ liệu đầu vao
L “4 Nhap du lieu dau vao = x
- Ten file du lieu Excel:
Ten sheet du lieu:
Data Chi so cot cua du lieu:
4
Chi so cot cua buoc:
1
1
} Hang bat dau:
{l1
| Hang ket thuc:
12
Hình 2.1 Dữ liệu đầu vào
Chọn mô hình hàm số bậc 3 Điều này giúp tăng độ chính xác của mô hình so
với các mô hỉnh bậc thâp hơn
“4 Lua chon mo hinh xap xi so lieu: — x
Da thuc bac |
Da thuc bac Il
Da thuc dang mu
Thoat chuong trinh :_(
Hình 2.2 Mô hình hoá dữ liệu dưới dạng bậc 3
Trang 13Ta thu duoc dé thi ham sé:
x Du lieu ham so
16 r
So leu thuc te
Mo hint xap xố
x
Hình 2.3 Đồ thị dữ liệu thực tế và mô hình xấp XT
Kết quả cho thấy đữ liệu thực tế và mô hình xấp xỉ tương đương nhau Điều này chứng tỏ chúng ta đã xây dựng chương trình xâp xỉ biêu thức thành công
3.2 Câu 2
Giả sử ta cần ước tính sự thay đôi của đữ liệu vào tháng 3 năm 2022 Để ước tính sự thay đồi, ta cân tính đạo hàm câp 1 của bộ dữ liệu
“4` Ban muon lam gi tiep theo? — x “@ Ban muon uoc tinh gia trida = —
Giai phương tỉnh Do ham bạc ï
Uoc tỉnh tích phan Quay lai
'Thoat chuong trinh :_( Thoat chuong trinh :_(
Cancel
Hình 2.4 Chọn bậc cần đạo ham