Ý tưởng phương pháp cầu phương GAUSS - Công thức cầu phương Gauss là một phương pháp tính gần đúng tích phân xác định được đặttên theo nhà toán học Carl Friedrich Gauss- người phát triển
Trang 1BÁO CÁO BÀI TẬP LỚN Môn : Phương pháp tính
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trang 21 Ý tưởng phương pháp cầu phương GAUSS 2
2 Thuật toán phương pháp cầu phương GAUSS 3
PHẦN II: BÀI TẬP 4
1 BÀI TẬP PROJECT 2 4
Vấn đề 1: 4
Vấn đề 2: 9
Vấn đề 3: 12
2 LẬP TRÌNH GIẢI MÃ ĐỀ FINAL 183 14
CÂU 1: 14
CÂU 2: 17
CÂU 3: 20
CÂU 4: 22
CÂU 5: 24
CÂU 6: 27
CÂU 7: 28
CÂU 8: 30
CÂU 9: 31
CAU 10: 34
PHẦN III: KẾT LUẬN 37
PHẦN IV: TÀI LIỆU THAM KHẢO 37
1
Trang 3PHẦN I: LÝ THUYẾT
1 Ý tưởng phương pháp cầu phương GAUSS
- Công thức cầu phương Gauss là một phương pháp tính gần đúng tích phân xác định được đặttên theo nhà toán học Carl Friedrich Gauss- người phát triển phương pháp này
- Ở đây ta chỉ xét công thức Gauss-Legendre
- Ý tưởng của phương pháp là xấp xỉ tích phân I bằng một tổng hữu hạn
- Công thức trên luôn đúng với mọi hàm f(x) là đa thức bậc nhỏ hơn 2n
- Ta có thể xác định trước các điểm x i và xét tích phân I=∫
Trang 4B2+ +x n2
B n=23
2 Thuật toán phương pháp cầu phương GAUSS
- Nhập các dữ liệu cần thiết (hàm f(x), cận trên, cận dưới, số điểm Gauss)
- Khai báo vị trí x và trọng số B dưới dạng ma trận, giải hệ tìm B
3
Trang 5PHẦN II: BÀI TẬP
1 BÀI TẬP PROJECT 2
Vấn đề 1:
Giả sử rằng chúng ta có một bể hình trụ ngang được cho trong hình dưới đây:
Ở đây, r, h, L lần lượt là bán kính của bể, độ sâu của chất lỏng và chiều dài của bể
a) Giải thích chi tiết rằng thể tích của chất lỏng trong bể là:
b) Cho V = 8 (m3), L = 5 (m), r = 2 (m), xác định h bằng phương pháp chia đôi và phương pháp dây cung với sai số nhỏ hơn (Đoán khoảng cách biệt chứa nghiệm)
c) Đề xuất một cách để tìm h với dữ liệu đã cho trong câu hỏi trước bằng phương pháp điểm cố định (tức là, bạn đưa phương trình về dạng tương đương x = g(x), nơi g(x) là một hàm làm cho phương pháp điểm cố định khả thi) Nếu có thể, xác định h với sai số tiên nghiệm nhỏ hơn (Chọn h0 ngẫu nhiên)
d) Với phương pháp Newton-Raphson, chọn h0 thích hợp, xác định h với sai số nhỏ hơn
Trang 72 )−2(2−h)√h− h
2
4 ].58=[arccos(2−h
2 )−(2−h)
2 √h− h
2
4 ].4 58=[arccos(2−h
2 )−(2−h)
2 √h− h
2
4 ].208
20=arccos(2−h
2 )−(2−h)
2 √h−h2
4arccos(2−h
2 )−(2−h)
2 √h− h2
4− 8
20=0Đặt f(h)=arccos(2−h
2 )−(2−h)
2 √h− h2
4− 820
Trang 8Xét f(h)trên khoảng [0.74 ;0.75] (vì h ≤ r) là khoảng cách ly nghiệm của hàm
Phương pháp chia đôi:
Kết luận h =0.740015218 là nghiệm của phương trình với sai số −1.5848 ×10−9
c) Dựa vào đề bài, ta cần tìm một hàm h=f (h)
7
Trang 9 (0.74;0.75) là khoảng ly nghiệm chứng minh từ câu (b) suy ra ta chọn h0=0.75
h9 là điểm bất động, là độ sâu của chất lỏng
Công thức sai số hậu nghiệm câu phương pháp lặp: |h n −h d|≤ k
Trang 10Suy ra h=0.7400152181 là điểm biến động
Công thức sai số tổng quát |h n −h d|≤|f (h n)|
Nhựa(g/thành phần)
Cao su(g/thành phần)
9
Trang 11Nếu có tổng cộng 3,89, 0,095 và 0,282 kg kim loại, nhựa và cao su tương ứng mỗi ngày thì cóthể sản xuất được bao nhiêu linh kiện mỗi ngày? (Phải hiển thị các kết quả sau: Ma trận L, giảipháp của hệ thống Ly = B, Ma trận U, nghiệm của hệ Ux = y).
Giải
a)Đoạn code Matlab của bài toán:
Trang 14Đường kính được đo tại một số điểm và được cho trong bảng:
Trang 15Với M = 2,5, ta có
Chi phí xây dựng ống nước trên mặt đất là 5000$/1km
Chi phí xây dựng ống nước dưới lòng sông là 7000$/1km
AC = 1km
Trang 17>0 tại x=5,5664 ⇒ F(x)' đạt cực tiểu tại x=5,5664
Sai số phương pháp chia đôi:
Vậy với M = 2,5 vị trí đặt trạm P để chi phí xây dựng ống nước là nhỏ nhất là trên đoạn CD cách
C một đoạn x gần bằng 5,5664 km Sai sô tuyệt đối của x là 0,0586 km
n= input('chu so hang don vi la ');
m= input('chu so hang chuc la ');
M=(m + 2*n + 12)/10;
e(1)= 2*M*1000 ;% chi phi xay dung 1km ong tren bo
e(2)= 2*(M+1)*1000;%chi phi xay dung 1km ong duoi nuoc
% su dung Pitago de tim AP va PB
AP = sqrt(1+x^2);
PB = sqrt(2^2+(M+5-x)^2);
fx = e(1)*AP+e(2)*PB; % ham chi phi xay dung ong
Trang 18df = diff(fx); % dao ham ham chi phi
% Khoang cac gia tri x
% xuat ra man hinh
disp(['Voi gia tri M = ',sprintf('%.1f',M), ':']);
−1) Sử dụng phương pháp lặp Jacobi, tìm vecto lặp thứ
hai X( 2 ) và sai số tiên nghiệm của X( 2 ) với chuẩn vô cùng
Trang 19m= input('chu so hang chuc la ');
M=(m + 2*n + 12)/10;
%Khai bao nhung du kien dau vao
% Nhap kich thuoc cua ma tran A
rows_A = input('Nhap so hang cua ma tran A: ');
cols_A = input('Nhap so cot cua ma tran A: ');
A= zeros(rows_A, cols_A);
% Nhap cac gia tri cua ma tran A
disp('Nhap cac gia tri cho ma tran A:');
Trang 21%thiet lap ma tran T C tu cong thuc lap Jacobi
T = (D^-1)*(L+U);
C = (D^-1)*B;
x1 = T*x0+C; %tim x1 de tinh sai so tien nghiem
saiso = ((norm(T,inf))^N/(1-norm(T,inf)))*norm(x1-x0,inf); %tinh gia tri sai so tien nghiem theochuan vo cung
disp([' - Vecto lap thu hai X2 = [',sprintf('%10.4f', Xn),']']);
disp([' - Sai so tien nghiem cua X2 theo chuan vo cung = ',sprintf('%.4f',
ceil(saiso*(10^4))/(10^4))]); %lam tron sstn len
Trang 23cout << "Gia tri cua A:" << u;
cout << "Gia tri cua B" << -k;
Trang 24# a: Điểm bắt đầu của khoảng tích phân
# b: Điểm kết thúc của khoảng tích phân
# n: Số lượng đoạn chia khoảng tích phân
h = (b - a) / n # Chiều rộng của mỗi đoạn
# Tính giá trị đầu tiên và cuối cùng
Trang 25# Tính toán giá trị của a cho đến khi tích phân gần bằng 5.2
a_guess =0.5 # Giá trị đoán ban đầu của a
tolerance =0.001 # Sai số chấp nhận được
print("Giá trị của a để tích phân là 5.2:", a_guess)
Trong đoạn mã này, ta sử dụng phương pháp hình thang mở rộng để tính toán tích phân của (f(x)+sin(x)⋅f(x)) trên khoảng từ 1 đến 2.2, sau đó điều chỉnh giá trị của a cho đến khi kết quả tích phân xấp xỉ 5.2
Trang 26# a: Điểm bắt đầu của khoảng tích phân
# b: Điểm kết thúc của khoảng tích phân
# n: Số lượng đoạn chia khoảng tích phân
h = (b - a) / n # Chiều rộng của mỗi đoạn
x = np.linspace(a, b, n + 1) # Các điểm chia khoảng
# Tính giá trị đầu tiên và cuối cùng
integral = g(a) + g(b)
25
Trang 27# Tính sai số tuyệt đối của I
delta_I = np.abs(pi * delta_I_1 + 2 * pi * I_1 * delta_I_1 + delta_I_1**2)
print("Sai số tuyệt đối của I:", delta_I)
KẾT QUẢ:
Trang 29K4 = zeros(1,n);
%Xay dung ma tran he so K va tim nghiem Y
for i = 1:1:n
X(i+1) = X(i) + h;
K1(i) = h*subs(f,[x y],[X(i) Y(i)]);
K2(i) = h*subs(f,[x y],[X(i)+h/2 Y(i)+K1(i)/2]);
K3(i) = h*subs(f,[x y],[X(i)+h/2 Y(i)+K2(i)/2]);
K4(i) = h*subs(f,[x y],[X(i)+h Y(i)+K3(i)]);
Y(i+1) = Y(i) + (K1(i)+2*K2(i)+2*K3(i)+K4(i))/6;
end
%Xuat ra man hinh
disp(['Voi M = ',sprintf('%.1f', M)]);
disp([' y(',sprintf('%.2f', X(2)),')',' = ',sprintf('%.4f', Y(2))]);
disp([' y(',sprintf('%.2f', X(3)),')',' = ',sprintf('%.4f', Y(3))]);
KẾT QUẢ:
CÂU 7:
Một bể chứa nước hình cầu bị thủng một lỗ nhỏ ở đáy, nước bị rò ra ngoài được mô tả bởi mô hình: (4Mh-h2)dh
dt=(−10−2¿√20 h Với h là mực nước trong bể tại thời điểm t(giây) Áp dụng
phương pháp Euler cải tiến, xác định mực nước trong bể sau 6 giây, biết mực nước ban đầu trong
bể là 2M và bước chia là 1(s)
Trang 31CÂU 8 :
Cho phương trình vi phân bậc 2: (e x
+1) y ”(x)−xy’(x)+ y(x)=x+Mvới điều kiện ban đầu
y(1)=0và y ’(1)=M Tính gần đúng y(1.4) với bước chia h = 0.2 bằng phương pháp Euler cải tiến
n = 2; %so lan lap Euler cai tien (vi chi can tim den nghiem y(1.4))
%Chuyen thanh he thanh ptvp cap 1 (dat t(x) = y'(x))
Trang 32K1y(i) = h*subs(f,[x y t],[X(i) Y(i) T(i)]);
K1t(i) = h*subs(g,[x y t],[X(i) Y(i) T(i)]);
K2y(i) = h*subs(f,[x y t],[X(i)+h Y(i)+K1y(i) T(i)+K1t(i)]);
K2t(i) = h*subs(g,[x y t],[X(i)+h Y(i)+K1y(i) T(i)+K1t(i)]);
Y(i+1) = Y(i) + (K1y(i)+K2y(i))/2;
T(i+1) = T(i) + (K1t(i)+K2t(i))/2;
Cho bài toán biên :
dùng phương pháp sai phân hữu hạn tính gần đúng y(0.75) , y(1.0) , y(1.25) với bước h = 0.25
31
Trang 33%Khai bao cac gia tri dau vao
pk = M + x; %He so cua y''
qk = log(x); %He so cua y'
rk = -2*x^2; %He so cua y
fk = (x^2)*(x-1);
alpha = 2.5; %gia tri alpha
beta = M; %gia tri beta
H = [pk/(h^2)-qk/(2*h) rk-2*pk/(h^2) pk/(h^2)+qk/(2*h)]; %Cac he so cua ma tran A
%Xay dung ma tran A
for i = 1:1:n-1
for j = 1:1:n-1
if i == j
A(i,j) = subs(H(2),x,X(i));
Trang 34Y = A^-1*B'; %tim nghiem
%xuat ra man hinh
disp(['Voi M = ',sprintf('%.1f', M),':']);
disp([' y(',sprintf('%.2f', X(1)),') = ',sprintf('%.4f', Y(1))]);
disp([' y(',sprintf('%.2f', X(2)),') = ',sprintf('%.4f', Y(2))]);
disp([' y(',sprintf('%.2f', X(3)),') = ',sprintf('%.4f', Y(3))]);
KẾT QUẢ:
33
Trang 35CAU 10:
Máy quan sát đo quãng đường di chuyển của một xe đi trên đường thẳng theo bảng sau ( t đo
H = diff(T); % Thiet lap ma tran chua cac gia tri h
% Thiet lap ma tran chua cac gia tri C (spline bac 3 tu nhien co c0 va cn = 0)
Trang 36G = sym(zeros(1, n)); % Ma tran chua ham` g
dG = sym(zeros(1, n)); % Ma tran chua ham` g'
% Xuat ra man` hinh cac gia tri da tinh toan
disp(['Voi gia tri M = ', sprintf('%.1f', M), ':']);
disp([' - Vi tri xe luc 3h = ', sprintf('%.4f', double(subs(G(1), x, 3))), ' km']);
disp([' - Van toc xe luc 6h = ', sprintf('%.4f', double(subs(dG(3), x, 6))), ' km/h']);
KẾT QUẢ:
35
Trang 38PHẦN III: KẾT LUẬN
Qua đề tài số 2, nhóm chúng em đã tìm hiểu kĩ hơn về thuật toán cầu phương Gauss cũngnhư luyện tập và ôn tập kiến thức dựa trên các bài tập và code Nhóm 5 xin chân thành cảm ơn
cô đã hướng dẫn cho chúng em hoàn thiện đề tài một cách tốt nhất
PHẦN IV: TÀI LIỆU THAM KHẢO
1 Numerical_Methods_for_Engineers_7th_Edit
2 [Richard L Burden, J Douglas Faires, Annette M] Numerical Analysis (z-lib.org)
3 [Steven C Chapra, Raymon P Canale] Numerical Methods for Engineers 7th
Edit
4 [Steven C Chapra] Applied Numerical Methods with MATLAB® for
Engineers and Scientists Fourth Edition
5 Bài giảng Phương pháp tính – Đoàn Thị Thanh Xuân
37