1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

15 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Project 5: Arctic Sea Ice
Người hướng dẫn ThS. Nhúm
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh Trường Đại Học Bách Khoa
Chuyên ngành Phương Pháp Tính
Thể loại Bài Tập Lớn
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 15
Dung lượng 1,26 MB

Nội dung

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 1

DAI 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 2

MUC 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 3

I 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 4

1.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 5

x =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 6

II 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 7

disp(['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 8

tim 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 10

b = 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 11

1.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 12

HI Á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 13

Ta 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

Ngày đăng: 19/12/2024, 16:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN