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

Bài tập lớn tính xấp xỉ tích phân của một hàm cho trước dưới dạng phương trình hoặc bảng số liệu bằng phương pháp hình thang

21 4 0

Đ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 đề Bài Tập Lớn Tính Xấp Xỉ Tích Phân Của Một Hàm Cho Trước Dưới Dạng Phương Trình Hoặc Bảng Số Liệu Bằng Phương Pháp Hình Thang
Tác giả Phùng Nhật Minh, Lê Minh Thông, Lê Quang Tính, Huỳnh Tấn Khải, Lê Trọng Tín, Trịnh Thái Ngọc Hải, Nguyễn Phan Hoàng Vương, Hà Minh Đức, Nguyễn Duy Hải, Đỗ Lê Duy An, Trần Võ Ngọc Thủy Trúc, Đặng Xuân An, Lữ Thanh Nam
Người hướng dẫn Giảng viên: Võ Trần An
Trường học Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Chuyên ngành Phương Pháp Tính
Thể loại bài tập lớn
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 0,91 MB

Nội dung

Trường đại học Bách Khoa Tp Hồ Chí Minh Bản báo Bài tập lớn Bộ mơn: Phương pháp tính Giảng viên: Võ Trần An Nhóm: L01 Nhóm: 12 Đề tài: 11 Tieu luan Trường ĐH Bách Khoa TP HCM Môn Phương pháp tính L01 Nhóm 12 Danh sách thành viên: STT 10 11 12 13 Họ tên Phùng Nhật Minh Lê Minh Thơng Lê Quang Tính Huỳnh Khải Lê Trọng Tín Trịnh Thái Ngọc Hải Nguyễn Phan Hồng Vương Hà Minh Đức Nguyễn Duy Hải Đỗ Lê Duy An Trần Võ Ngọc Thủy Trúc Đặng Xuân An Lữ Thanh Nam MSSV 2011629 2012133 2012224 2011400 2012210 2011256 2012449 1911056 1913253 1910719 1915715 1912517 1812147 Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 Mục lục Danh sách thành viên: Mục lục A Lý thuyết I Quy tắc Hình thang (Trapezoidal) II Phương pháp Simpson III Phương pháp Simpson 3/8: B Xây dựng thuật toán I Phương pháp hình thang (Trapezoidal) 1) Hàm với kiện đề dạng phương trình 2) Hàm với kiện đề dạng bảng số liệu II Phương pháp Simpson 1) Hàm với kiện đề dạng phương trình 2) Hàm với kiện đề dạng bảng số liệu 11 III Hàm tìm 𝑴𝒏 14 C Giải toán 16 Dữ kiện đề áp dụng cho câu 24.1, 24.2, 24.3: 16 Câu 24.1: 16 Câu 24.2: 17 Câu 24.3: 18 Dữ kiện dùng cho câu 24.4 24.5: 19 Câu 24.4: 19 Câu 24.5: 20 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 A Lý thuyết Mục đích đề tài tính xấp xỉ tích phân hàm cho trước dạng phương trình bảng số liệu phương pháp hình thang (Trapezoidal) phương pháp Simpson Xét hàm f(x) miền [a,b], đoạn [a, b] chia thành n khoảng có độ dài b−a h = Δx = n Điểm khoảng chia a, a + Δx, a + 2Δx, , a + (n-2) Δx, a + (n-1)Δx, b I Quy tắc Hình thang (Trapezoidal) Δx chiều cao hình thang, xi = a + iΔx, i = 0, 1, 2, , n Thay diện tích hình thang cong diện tích hình thang thẳng ta b ∫ f(x)dx ≈ Δx a y1 + y2 Thực chất ta thay hàm f(x) hàm nội suy: p(x) = y0 + Đặt t = x −x0 Δx ∆y0 x − x0 (x − x0) = y0 + ∆y0 Δx Δx , hay x = x0 + tΔx, ta có dx = Δxdt x ∫x p(x)dx = ∫0 (y0 + t∆y0 ) Δxdt = h(ty0 + Δy0) = Δx y0 +y1 t2 Δy0) |t=1 = Δx( y0 + t=0 b Như I =∫a f(x)dx ≈ I* = + yn-1) Công thức sai số: r = b−a 2n h2 (b−a).M2 12 (y0 +2y1 + +2yn-1 + yn) = Δx ( y0 +yn + y1 + II Phương pháp Simpson Đặt h=Δx Trên đoạn [xi, x2(i+1)] thay hàm f(x) cơng thức nội suy bậc hai diện tích hình thang cong giới hạn ham f(x) diện tích hình thang cong giới hạn parabol nội suy Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 Ta có: Với: Nên Lấy tổng theo i=0, ,n-1 ta được: Công thức sai số: 𝑟 = ℎ4 (𝑏−𝑎).𝑀4 180 III Phương pháp Simpson 3/8: Xét hàm số f(x) miền [a,b], chia đoạn [a,b] tích phân miền giới hạn đồ thị hàm f(x) đường thẳng y = 0, x = a, x = b Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM b ∫ f(x)dx ≈ a Mơn Phương pháp tính L01 Nhóm 12 3(b − a) 2a + b a + 2b [f(a) + 3f ( ) + 3f ( ) + f(b)] 3 Biểu thức miêu tả cho phương pháp Simpson 3/8 Để toán tổng quát hơn, ta quay lại chia đoạn [a,b] thành n khoảng đầu Ta có n+1 giá trị xi với i = 0,1,2, n Xét miền [a,b) với giá trị i chia hết 3, ta có: x0 = a, ta có tổng A0 = f(x0) + 3f(x0 + h) + 3f(x0 + 2h) + f(x0 + 3h) x3 = x0 + 3h, ta có tổng A1 = f(x3) + 3f(x3 + h) + 3f(x3 + 2h) + f(x3 + 3h) x6 = x3 + 3h, ta có tổng A1 = f(x6) + 3f(x6 + h) + 3f(x6 + 2h) + f(x6 + 3h) (với k nguyên xi + k.h > b f(xi + k.h) = 0) Tích phân đoạn [a,b] f(x) có giá trị b ∫a f(x)dx ≈ 3(b−a) = (f(b) + A0 + A1 + A2 + A3 + + Am) (b−a) (f(x0) + f(xn) + 3V + 2U) Trong đó: m phần nguyên phép tính n V tổng giá trị f(xi) với i không chia hết cho 3, i ≠ b U tổng giá trị f(xi) với i chia hết 3, i ≠ 0, i ≠ b Công thức sai số: 𝑟 = ℎ4 (𝑏−𝑎).𝑀4 80 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 B Xây dựng thuật tốn Vì tốn cho kiện dạng phương trình bảng số liệu, nên ta xây dựng hàm tương ứng với phương pháp để giải dạng kiện I Phương pháp hình thang (Trapezoidal) 1) Hàm với kiện đề dạng phương trình Hàm đặt tên trapez, với đối số f, a, b, n Trong đó: f phương trình từ liện đề a, b cận cận đoạn cần lấy tích phân n số đoạn chia Phần đầu hàm phần kiểm tra đối số để đảm bảo đối số đưa vào Nếu đối số sai, hàm báo lỗi Điều kiện đối số: n>1 a= b error('a < b'); end; %Xây dựng công thức f = inline(f); h = (b-a)/n; I = (feval(f, a) + feval(f, b))/2; for i = 1:(n-1) I = I + feval(f, a + i*h); end; I = I*h; return; 2) Hàm với kiện đề dạng bảng số liệu Hàm đặt tên trapez_table, với đối số x, y với y giá trị hàm dấu tích phân vị trí x tương ứng Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Môn Phương pháp tính L01 Nhóm 12 Phần đầu hàm phần kiểm tra đối số để đảm bảo đối số đưa vào Nếu đối số sai, hàm báo lỗi Điều kiện đối số: x, y liệu dạng ma trận kích thước ma trận x kích thước ma trận y Ở phần xây dựng cơng thức, cơng thức áp dụng khoảng có kích thước nhau, thực tế, liệu có nhiều khoảng với kích thước khác Để khắc phục trường hợp này, chúng em xây dựng thuật toán để chia bảng liệu ban đầu thành bảng liệu nhỏ cho liệu nhỏ khoảng Cuối tạo vịng lập để xây dụng cơng thức hình thang Áp dụng cơng thức hình thang lên bảng liệu nhỏ Tính tổng kết từ bảng liệu nhỏ để giá trị xấp xỉ tích phân cần tìm trả giá trị Code: function [I] = trapez_table(x, y) %Kiểm tra đối số size_table = 0; if size(x, 2) == size(y, 2) size_table = size(x, 2); else error('Du lieu khong dung'); end; %Chia lại bảng số liệu pst = []; k = 0; delta = 0; last_delta = 0; for i = 1:(size_table - 1) delta = x(i+1) - x(i); if delta ~= last_delta k = k+1; pst(k) = i; end; last_delta = delta; end; k = k+1; pst(k) = size_table; %Xây dựng công thức I1 = []; for i = 1:(k - 1) h = x(pst(i) + 1) - x(pst(i)); I1(i) = (y(pst(i)) + y(pst(i + 1)))/2; for j = (pst(i) + 1):(pst(i+1) - 1) Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 I1(i) = I1(i) + y(j); end; I1(i) = h*I1(i); end; %Tính tổng giá trị xấp xỉ tích phân khoảng nhỏ I = 0; for i = 1:(size(pst, 2) - 1) I = I + I1(i); end; return; II Phương pháp Simpson Phương pháp Simpson bao gồm loại Simpson 1/3 Simpson 3/8 Simpson 1/3 áp dụng liệu có số khoảng số chẵn (2n), Simpson 3/8 áp dụng liệu có số khoảng 3n Bằng việc phối hợp phương pháp này, ta giải toán với số khoảng lớn Ta ưu tiên sử dụng công thức Simpson 1/3 nhiều hơn, Simpson 1/3 có cơng thức sai số ℎ4 (𝑏−𝑎).𝑀4 180 , Simpson 3/8 có cơng thức sai số ℎ4 (𝑏−𝑎).𝑀4 80 , xét phương trình dấu tích phân, đoạn [a, b], Simpson 1/3 có sai số nhỏ 1) Hàm với kiện đề dạng phương trình Hàm đặt tên simpson lưu M-file tên simpson, với đối số f, a, b, n Trong đó: f phương trình từ liện đề a, b cận cận đoạn cần lấy tích phân n số đoạn chia Trong M-file tên simpson, ta tạo thêm hàm tên simpson13() để xây dựng công thức Simpson 1/3 hàm simpson38() để xây dựng công thức Simpson 3/8 với đối số giống Việc giúp rút ngặn thời gian đơn giản hóa việc viết code Trong hàm simpson, phần đầu đoạn code kiểm tra đối số, điều kiện đối số là: n>1 a>b Để sử dụng hợp lý công thức Simpson 1/3 Simpson 3/8, chúng em chia trường hợp theo đối số n sau: Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 n = 3: dùng công thức Simpson 3/8 n chia hết cho 2: dùng công thức Simpson 1/3 n không chia hết cho 2: tách n = 2m+3, áp dụng công thức Simpson 1/3 cho 2m khoảng đầu, áp dụng công thức Simpson 3/8 cho khoảng cuối Ở ta thấy trường hợp n không chia hết cho bao gồm trường hợp n = 3, ta xét riêng trường hợp n = dịng code thứ 23 (dịng đánh dấu (*) bên dưới), trường hợp n = biến n1 = 0, lúc hàm simpson13() dịng code trở thành simpson13(f, a, a, n1*2), hàm bị lỗi đối số thứ phải nhỏ đối số thứ (tức a < b) Sau q trình tính tốn hàm trả giá trị xấp xỉ tích phân cần tìm Code: function [I] = simpson(f, a, b, n) %Kiểm tra đối số if n = b error('a < b'); end; %Chia trường hợp tính tốn h = (b-a)/n; I = 0; if n == I = simpson38(f, a, b, n); else if mod(n, 2) == I = simpson13(f, a, b, n); else n1 = floor(mod(n, 2)); if (n - n1) == n1 = n1-1; end; I = simpson13(f, a, a + n1*2*h, n1*2) + simpson38(f, a + n1*2*h, b, n - n1*2); %(*) end; end; return; %Xây dựng công thức Simpson 1/3 function [I] = simpson13(f, a, b, n) f = inline(f); Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 10 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM h = m = I = for Mơn Phương pháp tính L01 Nhóm 12 (b-a)/n; n/2; feval(f, a) + feval(f, b) + 4*feval(f, a+h); i = 1:(m-1) I = I + 2*feval(f, a + 2*i*h) + 4*feval(f, a + (2*i + 1)*h); end; I = I*h/3; return; %Xây dựng công thức Simpson 3/8 function [I] = simpson38(f, a, b, n) f = inline(f); h = (b-a)/n; I = feval(f, a) + feval(f, b); for i = 1:(n-1) if mod(i, 3) == I = I + 2*feval(f, a + i*h); else I = I + 3*feval(f, a + i*h); end; end; I = I*3*h/8; return; 2) Hàm với kiện đề dạng bảng số liệu Hàm đặt tên simpson_table, với đối số x, y với y giá trị hàm dấu tích phân vị trí x tương ứng Trong M-file tên simpson_table, ta tạo thêm hàm tên simpson13() để xây dựng công thức Simpson 1/3 hàm simpson38() để xây dựng công thức Simpson 3/8 với đối số giống Ta kiểm tra đối số với điều kiện: x, y ma trận có kích thước có số phần tử lớn (tức số khoảng lớn 1) Vì bảng số liệu nhập vào có khoảng với kích thước khơng nhau, nên ta lại sử dụng thuật toán chia lại bảng số liệu hàm trapez_table() bên Sau đó, ta phải kiểm tra lại bảng số liệu xem có bảng có số phần tử (thức số khoảng khơng), có hàm báo lỗi Kế tiếp ta xét bảng số liệu chia trường hợp dựa số khoảng hàm simpson() phía Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 11 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 Cuối ta tính tổng giá trị xấp xỉ tích phân vá trả giá trị cuối Code: function [I] = simpson_table(x, y) %Kiểm tra đối số size_table = 0; if size(x, 2) == size(y, 2) size_table = size(x, 2); else error('Du lieu khong dung'); end; if (size(x, 2) == 2) or (size(y, 2) == 2) error('So khoang > 1'); end; %Chia lại bảng số liệu pst = []; k = 0; delta = 0; last_delta = 0; for i = 1:(size_table - 1) delta = x(i+1) - x(i); if delta ~= last_delta k = k+1; pst(k) = i; end; last_delta = delta; end; k = k+1; pst(k) = size_table; %Kiểm tra điều kiện bảng số liệu for i = 1:(k-1) if (pst(i+1) - pst(i)) == error('Du lieu khong dung'); end; end; %Chia trường hợp tính tốn bảng số liệu I1 = []; for i = 1:(k - 1) if (pst(i+1) - pst(i)) == I1(i) = simpson38(x(pst(i):pst(i+1)), y(pst(i):pst(i+1))); else if mod(pst(i+1) - pst(i), 2) == I1(i) = simpson13(x(pst(i):pst(i+1)), y(pst(i):pst(i+1))); Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 12 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 else n = floor(mod(pst(i+1) - pst(i), 2)); if (pst(i+1) - pst(i) - n) == n = n-1; end; I1(i) = simpson13(x(pst(i):n*2), y(pst(i):n*2)) + simpson(x(n*2:pst(i+1)), y(n*2:pst(i+1))); end; end; end; %Tính tổng giá trị xấp xỉ tích phân khoảng nhỏ I = 0; for i = 1:(k-1) I = I + I1(i); end; return; %Xây dựng công thức Simpson 1/3 function [I] = simpson13(x, y) size_table = 0; size_table = size(x, 2); h = x(2) - x(1); n = (size_table - 1)/2; I = y(1) + y(size_table) + 4*y(2); for i = 1:(n-1) I = I + 2*y(2*i+1) + 4*y(2*i + 2); end; I = I*h/3; return; %Xây dựng công thức Simpson 3/8 function [I] = simpson38(x, y) size_table = 0; size_table = size(x, 2); h = x(2) - x(1); n = (size_table - 1); I = y(1) + y(size_table); for i = 1:(n-1) if mod(i, 3) == I = I + 2*y(i+1); else I = I + 3*y(i+1); end; end; I = I*h*3/8; return; Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 13 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 III Hàm tìm 𝑴𝒏 Theo định nghĩa: 𝑀𝑛 = max |𝑓 (𝑛) (𝑥)| 𝑥∈[𝑎,𝑏] 𝑀𝑛 sử dụng toán có dùng đến cơng thức sai số, để thuận tiện cho việc tính tốn, ta xây dựng hàm tìm 𝑀𝑛 đặt tên findM(f, n) gồm đối số f, a, b n Trong đó: f phương trình f(x) a, b cận cận đoạn xét n cấp đạo hàm Phần đầu hàm ta kiểm tra đối số với điều kiện: n>0 a= b error('a < b'); end; %Tính đạo hàm cấp n syms x; for i = 1:n f = diff(f); end; %Tìm M Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 14 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 if diff(f) == M = f; else f = diff(f); x1 = solve(f, x); %(*) x2 = []; for i = 1:(size(x1, 2)) if (x1(i) >= a) and (x1(i) Đối với câu 24.1, dùng phương pháp Simpson hiệu Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 18 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 Về mặt vật lý: ∆𝐻 nhiệt lượng mẫu vật liệu thu vào hay tỏa nhiệt độ thay đổi Với mẫu vật liệu câu 24.1, nhận nhiệt lượng 38892 (cal) nhiệt độ tăng từ -150°C lên 100°C Dữ kiện dùng cho câu 24.4 24.5: 𝑏 𝑀 = ∫𝑎 𝑄 𝑐𝑑𝑡 Câu 24.4: Tính M với 𝑄 = (𝑚3 /𝑚𝑖𝑛) c phụ thuộc vào thời gian theo bảng sau 𝑡 (𝑚𝑖𝑛) 𝑐 (𝑚𝑔/𝑚 ) 10 10 35 20 55 30 52 35 40 40 37 45 32 50 34 Giải: Đầu tiên ta tạo ma trận t4, c4 với phần tử tương ứng với giá trị bảng số liệu từ đề Sau sử dụng hàm trapez_table() simpson_table() để giải Code: disp('Problem 24.4:'); %Khởi tạo giá trị Q4 = 4; t4 = [0 10 20 30 35 40 45 50]; c4 = [10 35 55 52 40 37 32 34]; %Phương pháp hình thang disp('Trapezoidal:'); M = Q4*trapez_table(t4, c4); disp(M); %Phương pháp Simpson disp('Simpson:'); M = Q4*simpson_table(t4, c4); disp(M); Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 19 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Trường ĐH Bách Khoa TP HCM Mơn Phương pháp tính L01 Nhóm 12 Kết thu từ Matlab: Câu 24.5: Tính M với Q c phụ thuộc vào thời gian theo bảng sau 𝑡 (𝑚𝑖𝑛) 𝑄 (𝑚 /𝑚𝑖𝑛) 4.0 𝑐 (𝑚𝑔/𝑚3 ) 10 10 4.8 35 20 5.2 55 30 5.0 52 35 4.6 40 40 4.3 37 45 4.3 32 50 5.0 34 Giải: Đầu tiên ta tạo ma trận t5, Q5, c5 với phần tử tương ứng với giá trị bảng số liệu từ đề Tạo ma trận f5 với phần tử tích phần tử với số tương ứng từ ma trận Q5 c5 Sau sử dụng hàm trapez_table() simpson_table() để giải Code: disp('Problem 24.5:'); %Khởi tạo giá trị t5 = [0 10 20 30 35 40 45 50]; Q5 = [4.0 4.8 5.2 5.0 4.6 4.3 4.3 5.0]; c5 = [10 35 55 52 40 37 32 34]; f5 = []; for i = 1:size(t5, 2) f5(i) = Q5(i)*c5(i); end; %Phương pháp hình thang disp('Trapzoidal:'); M = trapez_table(t5, f5); disp(M); %Phương pháp Simpson disp('Simpson'); Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Tieu luan 20 Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang Bai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thangBai.tap.lon.tinh.xap.xi.tich.phan.cua.mot.ham.cho.truoc.duoi.dang.phuong.trinh.hoac.bang.so.lieu.bang.phuong.phap.hinh.thang

Ngày đăng: 24/12/2023, 16:07

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

TÀI LIỆU LIÊN QUAN

w