1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn phương pháp tính

18 1 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áo cáo bài tập lớn phương pháp tính
Tác giả Group 4
Người hướng dẫn TS. Đậu Thế Phiệt
Trường học Trường Đại học Bách Khoa - Đại học Quốc Gia TP.HCM
Chuyên ngành Phương pháp tính
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố TP.HCM
Định dạng
Số trang 18
Dung lượng 566,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH Group 4 Giảng viên TS Đậu Thế Phiệt TP HCM 2022 Danh sách thành viên STT Họ Tên MSSV Tiến độ hoàn thành 1 Huỳnh Vă[.]

Trang 1

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH

Group 4

Giảng viên: TS Đậu Thế Phiệt

TP.HCM - 2022

Trang 2

Danh sách thành viên

1 Huỳnh Văn Quốc Việt 1713947 100%

2 Hoàng Quốc Huy 1810934 100%

3 Đào Văn Tùng 2014996 100%

4 Trần Hữu Hiếu 2013165 100%

5 Ngô Vĩnh Phát 2014080 100%

6 Nguyễn Đăng Hoằng 1913466 100%

Trang 3

LỜI NÓI ĐẦU

Phương pháp tính là môn học đại cương có tầm quan trọng đối với sinh viên ĐH Bách Khoa nói riêng và sinh viên các ngành khối khoa học kỹ thuật công nghệ nói chung Mục đích môn học là cung cấp đầy đủ nội dung cơ bản của phương pháp tính dùng cho các ngành khoa học kỹ thuật Nó sẽ giúp sinh viên khối kỹ thuật tiếp thu vấn đề một cách nhẹ nhàng và trang bị những kỹ năng cơ bản cho người học tự phát triển khả năng áp dụng toán học vào các bài toán thực tế

Môn phương pháp tính bao gồm các kiến thức cơ bản về tìm gần đúng nghiệm cho các phương trình vi tích phân hàm phức tạp, lý thuyết sai số Cùng với đó là các chuẩn đầu ra: Nhắc lại được định nghĩa, tính chất, cách tính, vận dụng được lý thuyết vào các bài toán áp dụng và bài toán thực tế , có khả năng hoạt động nhóm

Trang 4

Mục lục

I CƠ SỞ LÝ THUYẾT 5

1 Problem 1 5

2 Problem 2 5

a Công thức hình thang 5

b Công thức Simpson 1/3 5

c Công thức Simpson 8/3 6

3 Problem 3 6

a Phương pháp chụp 6

b Phương pháp sai phân hữu hạn 7

II Code Matlab 8

III Kết quả 13

1 Problem 1 13

2 Problem 2 14

3 Problem 3 15

Trang 5

I CƠ SỞ LÝ THUYẾT

1 Problem 1

Trường hợp 𝑦 = 𝐴𝑒−1.5𝑡+ 𝐵𝑒−0.3𝑡+ 𝐶𝑒−0.05𝑡

Có các giá trị của t và p(t), lúc này ta có thể lập được hệ phương trình với 3 ẩn A, B và

C Trong đó hệ này có 3 cột và 9 hàng giá trị ứng với 9 giá trị của p(t)

𝐴𝑒−1.5𝑡𝑖+ 𝐵𝑒−0.3𝑡𝑖+ 𝐶𝑒−0.05𝑡𝑖 = 𝑝(𝑡𝑖)

{

𝐴𝑒−1.5𝑡1+ 𝐵𝑒−0.3𝑡1+ 𝐶𝑒−0.05𝑡1= 6

𝐴𝑒−1.5𝑡2+ 𝐵𝑒−0.3𝑡2+ 𝐶𝑒−0.05𝑡2 = 4.4

𝐴𝑒−1.5𝑡3+ 𝐵𝑒−0.3𝑡…3+ 𝐶𝑒−0.05𝑡3 = 3.2

𝐴𝑒−1.5𝑡9+ 𝐵𝑒−0.3𝑡9+ 𝐶𝑒−0.05𝑡9 = 1.1

Để tìm được các giá trị A, B và C ta áp dụng cách chia ma trận, lấy Vector p(t) chia cho ma trận hệ số bên vế trái, ta sẽ thu được các hệ số A, B và C

2 Problem 2

a Công thức hình thang

chia đoạn [a, b] thành n đoạn nhỏ với bước chia ℎ = 𝑏−𝑎

𝑛 Khi đó a = x0, x1 = x0 + h, …, xk = x0 +kh, …, xn = x0 + nh và yk = f(xk), k = 0, 1, …, n

Sử dụng công thức hình thang cho từng đoạn [xk, xk+1] ta được:

∫ 𝑓(𝑥)𝑑𝑥 = ∫ 𝑓(𝑥)𝑑𝑥

𝑥1

𝑥0

+

𝑏

𝑎

∫ 𝑓(𝑥)𝑑𝑥

𝑥2

𝑥1

+ ⋯ + ∫ 𝑓(𝑥)𝑑𝑥

𝑥𝑛

𝑥𝑛−1

≈ℎ

2(𝑦0+ 𝑦1) +ℎ

2(𝑦2+ 𝑦1) + ⋯ +ℎ

2(𝑦𝑛−1+ 𝑦𝑛)

b Công thức Simpson 1/3

Tìm giá trị gần đúng của tích phân xác định sau:

𝐼 = ∫ 𝑓(𝑥)𝑑𝑥

𝑏 𝑎

Trong đó 𝑓(𝑥) là 1 hàm liên tục và khả vi trên đoạn [a;b]

Sử dụng công thức Simpson, cụ thể như sau:

Chia đoạn [a;b] thành 2 đoạn bằng nhau với 3 mốc

𝑥1= 𝑎; 𝑥2 =𝑎 + 𝑏

2 ; 𝑥3= 𝑏

ta sẽ có các giá trị tương ứng: 𝑦1 = 𝑓(𝑥1);𝑦2 = 𝑓(𝑥2); 𝑦3 = 𝑓(𝑥3)

Trang 6

Khi đó ta có được:

𝐼 = ℎ

3 (𝑦1+ 4𝑦2 + 𝑦3) (2) 𝑣ớ𝑖 ℎ = 𝑏 − 𝑎

2 Công thức (2) gọi là công thức Simpson đơn giản

Để gia tăng độ chính xác khi lấy tích phân trên các khoảng lớn hơn, khoảng (a,b) có thể được chia nhỏ hơn nữa thành n bước

Việc định trị qua 3 điểm (tương đương với việc có hai khoảng) đối với mỗi khoảng con đòi hỏi rằng phải có một số chẳn các khoảng con Nghĩa là chúng ta có thể khai

triển số các khoảng con dưới dạng n = 2k

Ta có: ℎ = 𝑏−𝑎

2𝑘 các mốc là 𝑥𝑖 = 𝑎 + 𝑖ℎ; 𝑖 = [0; 2𝑘]

Giá trị của hàm tuong ứng: 𝑦𝑖 = 𝑓(𝑥𝑖) 𝑖 = [0; 2𝑘]

Ta có phép biến đổi:

𝐼 = ∫ 𝑓(𝑥)𝑑𝑥

𝑏 𝑎

= ∫ 𝑓(𝑥)𝑑𝑥

𝑥2

𝑥0

+ ∫ 𝑓(𝑥)𝑑𝑥

𝑥4

𝑥2

+ ⋯ + ∫ 𝑓(𝑥)𝑑𝑥

𝑥2𝑘

𝑥2𝑘−2

≈ℎ

3 (𝑦0 + 4𝑦1+ 𝑦2) + ℎ

3 (𝑦2 + 4𝑦3+ 𝑦4) + ⋯ +ℎ

3 (𝑦2𝑘−2+ 4𝑦2𝑘−1 + 𝑦2𝑘) ≈ℎ

3 [𝑦0 + 𝑦2𝑘+ 4(𝑦1 + 𝑦3 + ⋯ + 𝑦2𝑘−1) + 2(𝑦2 + 𝑦4+ ⋯ + 𝑦2𝑘−2)]

c Công thức Simpson 8/3

Công thức Simpson 8/3 có dạng như sau:

8

3(y0+ 2(y3+ y6+ +yn−3) + 3(y1+ y2+ y4+ y5+ +yn−2+ yn−1) + yn)

3 Problem 3

a Phương pháp chụp

Phương pháp Shooting được áp dụng để giải các bài toán về phương trình vi phân bậc

2 với điều kiện biên

Giả sử, ta có phương trình vi phân bậc 2 với điều kiện biên như sau:

𝑦"(𝑥) = 𝑓(𝑥), 𝑦(𝑥0) = 𝑎, 𝑦(𝑥𝑛) = 𝑏, 𝑥0 ≤ 𝑥 ≤ 𝑥𝑛

Để giải bài toán trên, ta đưa phương trình vi phân bậc 2 về dạng hệ phương trình vi phân bậc 1 của bài toán giá trị ban đầu

Đặt 𝑥 = 𝑦′ → 𝑥′ = 𝑦”

Phương trình vi phân bậc 2 ban đầu trở thành dạng:

Trang 7

𝑦′ = 𝑥

𝑥′ = 𝑓(𝑥) 𝑥(𝑥0) = 𝑦′(𝑥0) =?

𝑦(𝑥0) = 𝑎 Phương pháp chụp yêu cầu ta phải tự đưa ra dự đoán cho giá trị y’(x0), sau mỗi lần lặp thì giá trị này được thay đổi theo dự đoán chủ quan của người giải

Sau khi đã đưa ra dự đoán giá trị, ta có thể áp dụng các phương pháp để giải hệ phương

vi phân như Runge – kutta bậc 4 hoặc phương pháp Euler

b Phương pháp sai phân hữu hạn

Xét bài toán biên {𝑝(𝑥)𝑦"(𝑥) + 𝑞(𝑥)𝑦′(𝑥) + 𝑟(𝑥)𝑦(𝑥) = 𝑓(𝑥), 𝑎 < 𝑥 < 𝑏

𝑦(𝑎) = 𝛼, 𝑦(𝑏) = 𝛽 Với phương pháp sai phân hữu hạn, chọn số tự nhiên n bất kỳ >0 Chia đều đoạn [a, b] thành n đoạn bởi các điểm chia x0 = a, xk = x0 +kh, k = 1, 2, …, n-1, xn = b với ℎ =

𝑏−𝑎

𝑛

Tại các nút xk, k = 1, 2, …, n-1 bên trong đoạn [a, b] sử dụng công thức sai phân hướng tâm, ta có:

𝑦′(𝑥𝑘) ≈𝑦(𝑥𝑘+1) − 𝑦(𝑥𝑘−1)

𝑦𝑘+1− 𝑦𝑘−1 2ℎ 𝑦"(𝑥𝑘) ≈ 𝑦(𝑥𝑘+1) − 2𝑦(𝑥𝑘) + 𝑦(𝑥𝑘−1)

ℎ2 =𝑦𝑘+1− 2𝑦𝑘 + 𝑦𝑘−1

ℎ2

Thay vào phương trình đã cho ta được

𝑝𝑘𝑦𝑘+1 − 2𝑦𝑘 + 𝑦𝑘−1

ℎ2 + 𝑞𝑘𝑦𝑘+1− 𝑦𝑘−1

2ℎ + 𝑟𝑘𝑦𝑘 = 𝑓𝑘

∀𝑘 = 1,2, … , 𝑛 − 1 Với 𝑝𝑘 = 𝑝(𝑥𝑘), 𝑞𝑘 = 𝑞(𝑥𝑘), 𝑟𝑘 = 𝑟(𝑥𝑘), 𝑓𝑘 = 𝑓(𝑥𝑘)

Từ các điều kiện biên 𝑦(𝑎) = 𝛼, 𝑦(𝑏) = 𝛽, sau khi biến đổi ta thu được hệ phương trình

{

𝑦0 = 𝛼, 𝑦𝑛 = 𝛽 (𝑝𝑘

ℎ2 −𝑞𝑘

2ℎ) 𝑦𝑘−1+ (𝑟𝑘 −2𝑝𝑘

ℎ2 ) 𝑦𝑘+ (𝑝𝑘

ℎ2 +𝑞𝑘 2ℎ) 𝑦𝑘+1 = 𝑓𝑘, ∀𝑘 = 1,2, … , 𝑛 − 1 Đây chính là hệ phương trình đại số tuyến tính cấp n-1: AY=B với A là ma trận bên dưới

Trang 8

𝑟1−2𝑝1

ℎ2

𝑝1

ℎ2 + 𝑞1 2ℎ 0 … 0

𝑝2

ℎ2 −𝑞2 2ℎ 𝑟2 −

2𝑝2

ℎ2

𝑝2

ℎ2+𝑞2 2ℎ … 0

… 0

… 0

… … …

0 … 𝑟𝑛−1 −2𝑝ℎ𝑛−12 )

𝑌 = [𝑦1, 𝑦2, … , 𝑦𝑛−1]𝑇

Và 𝐵 =

(

𝑓1−(𝑝1

ℎ2 −𝑞1

2ℎ )𝛼

𝑓2

𝑓𝑛−2

𝑓𝑛−1−(𝑝𝑛−1

ℎ2 +𝑞𝑛−1

2ℎ )𝛽)

II Code Matlab

disp('>Problem 1<');

tt=[0.5 1 2 3 4 5 6 7 9]; %thiết lập các giá trị t

P=[6 4.4 3.2 2.7 2 1.9 1.7 1.4 1.1]; %thiết lập các giá trị p(t)

BPCTABCProjec1(P',tt') %gọi hàm BPCTABCProjec1 để tìm các

hệ số A, B, C

disp('>Problem 2<');

syms x khai báo biến x

f=1-exp(-x); thiết lập hàm f(x)

disp('[2.a]');b2a=double(int(f,0,4)); %tính giá trị tích phân bằng hàm int của matlab

fprintf('Integral of Matlab`s Function: %.4f\n',b2a);

%dùng công thức hình thang tính giá trị tích phân với đoạn chia là 1

b2b=c5trapez(f,0,4,1); %dùng phương pháp hình thang để tính tích phân của f với số đoạn chia là 1

disp('[2.b]');

fprintf('- Single application of the trapezoidal rule:

%.4f\n',b2b); %hiện giá trị tích phân từ công thức hình thang với n = 1

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2b-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

b2c1=c5trapez(f,0,4,2); %dùng công thức hình thang tính giá trị tích phân với đoạn chia là 2

disp('[2.c]');

fprintf('- Composite trapezoidal rule, with n = 2:

%.4f\n',b2c1); %hiện giá trị tích phân từ công thức hình thang với n = 2

Trang 9

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2c1-b2a)*100/b2a);

b2c2=c5trapez(f,0,4,4); %dùng công thức hình thang tính giá trị tích phân với đoạn chia là 4

disp('([2.c]');

fprintf('- Composite trapezoidal rule, with n = 4:

%.4f\n',b2c2); %hiện giá trị tích phân từ công thức hình thang với n = 4

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2c2-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

disp('[2.d]');

b2d=simpson1_3(f,0,4,1); %dùng công thức Simpson 1/3 tính giá trị tích phân với đoạn chia là 1

fprintf('- Single application of Simpson`s 1/3 rule:

%.4f\n',b2d); %hiện giá trị tích phân từ công thức

Simpson 1/3 với n = 1

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2d-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

disp('[2.e]');

b2e=simpson1_3(f,0,4,4); %dùng công thức Simpson 1/3 tính giá trị tích phân với đoạn chia là 4

fprintf('- Composite Simpson`s 1/3 rule, with n = 4:

%.4f\n',b2e); %hiện giá trị tích phân từ công thức

Simpson 1/3 với n = 4

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2e-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

disp('[2.f]');

b2f=simpson3_8(f,0,4,1); %dùng công thức Simpson 8/3 tính giá trị tích phân với đoạn chia là 1

fprintf('- Single application of Simpson`s 3/8 rule:

%.4f\n',b2f); %hiện giá trị tích phân từ công thức

Simpson 8/3 với n = 1

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2f-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

disp('[2.g]');

b2g=simpson1_3(f,0,4,5); %dùng công thức Simpson 1/3 tính giá trị tích phân với đoạn chia là 5

fprintf('- Composite Simpson`s 1/3 rule, with n = 5:

%.4f\n',b2g); %hiện giá trị tích phân từ công thức

Simpson 1/3 với n = 5

fprintf('- The true percent relative error based on (a):

%.4f\n',abs(b2g-b2a)*100/b2a); %hiện giá trị sai số so với giá trị chuẩn ở câu a

Trang 10

disp('>Problem 3<');

disp('[a The shooting method]');

syms x

figure(2);

ShootingMethod(-25,x,0,10,40,200,2); %gọi hàm

ShootingMethod để tính toán

title('Probelem 3: The shooting method'); %đặt tiêu đề đồ thị

disp('[b The finite - difference method]');

figure(3);

SPHH(1,0,0,-25,2,0,10,40,200); %gọi hàm SPHH để tính toán title('Problem 3: The finite - difference method'); %đặt tiêu đề đồ thị

end

tìm các hệ số A, B, C

syms t x

pt=[exp(-1.5*tt) exp(-0.3*tt) exp(-0.05*tt)];

Y=pt\P;

YT=Y(1)*exp(-1.5*t) + Y(2)*exp(-0.3*t) +

Y(3)*exp(-0.05*t);

plot(tt,P);hold on

plot(tt,subs(YT,t,tt));xlabel('x');ylabel('y');

legend('Original data','The Least square data');

fprintf('A = %f, B = %f, C = %f\n',Y(1),Y(2),Y(3));

end

format short

syms t

h=(b-a)/n;

X=a;

y=0;

for i=1:n+1

if (i>1) && (i<n+1)

y=(y+h*subs(f,X));

X=X+h;

else

y=(y+0.5*h*subs(f,X));

X=X+h;

end

end

fprintf('integral of %s from %f to %f, with n = %f:

end

h=(b-a)/n;A=a;

y=subs(f,a)+subs(f,b);

Trang 11

for i=1:n-1

A=A+h;

if rem(i,2)==0

B=2;

else B=4;

end

y=y+B*subs(f,A);

end

y=double(y*h/3);

fprintf('integral of %s from %f to %f, with n = %f:

end

syms x

h=(b-a)/n;k=h;h=h+a;

for i=1:n

y(i)=subs(f,x,h);

h=h+k;

end

Y=subs(f,a)+y(n);

for i=1:n-1

if rem(i,3)==0

B=2;

else B=3;

end

Y=Y+B*y(i);

end

Y=double(Y*k*3/8);

fprintf('integral of %s from %f to %f, with n = %f:

end

format short

syms x

k=x1;

n=(x2-x1)/h;

Y(1)=y0;X(1)=x1;

for i=1:n-1

t(i)=h+k;

k=t(i);

end

for i=2:n

X(i)=t(i-1);

X(n+1)=x2;

end

for i=1:n-1

for j=1:n-1

Trang 12

if i==j

A(i,j)=double(subs(r,t(i))-2*subs(p,t(i))*(h^-2));

elseif i<j

if j>=i+2

A(i,j)=0;

else

A(i,j)=double((subs(p,t(i))*h^-2)+(subs(q,t(i))/(2*h)));

end

else if i>=j+2

A(i,j)=0;

else A(i,j)=double((subs(p,t(i))*h^-2)-(subs(q,t(i))/(2*h)));

end

end

end

if i==1

B(i)=double(subs(f,t(i))-(subs(p,t(i))/(h^2) - subs(q,t(i))/(2*h))*y0);

B(i)=double(subs(f,t(i))-(subs(p,t(i))/(h^2) + subs(q,t(i))/(2*h))*yn);

else

B(i)=double(subs(f,t(i)));

end

end

B=double(transpose(B));

y=double((A^-1)*B);

for i=2:n

Y(i)=y(i-1);

Y(n+1)=double(yn);

end

for i=1:size(Y,2)

fprintf('x=%0.5f - T = %0.5f\n',X(i),Y(i));

figure(3);

plot(X,Y);hold on

grid on

xlabel('x');ylabel('T');title('Problem 3');

end

end

syms y x

n=input('So lan muon du doan: ');

for i=1:n

fprintf('Lan thu %d\n',i);

z0=input('Gia tri x0= ');

Trang 13

end

end

syms x y t

xa=x0;ya=y0;ta=t1;n=(t2-t1)/h;

hh=0;

XA=xa;YA=ya;TA=ta;

for i=1:n

k1x=h*subs(subs(subs(f,x,xa),y,ya),t,ta);

k1y=h*subs(subs(subs(g,x,xa),y,ya),t,ta);

k2x=h*subs(subs(subs(f,x,xa+0.5*k1x),y,ya+0.5*k1y),t,ta+0 5*h);

k2y=h*subs(subs(subs(g,x,xa+0.5*k1x),y,ya+0.5*k1y),t,ta+0 5*h);

k3x=h*subs(subs(subs(f,x,xa+0.5*k2x),y,ya+0.5*k2y),t,ta+0 5*h);

k3y=h*subs(subs(subs(g,x,xa+0.5*k2x),y,ya+0.5*k2y),t,ta+0 5*h);

k4x=h*subs(subs(subs(f,x,xa+k3x),y,ya+k3y),t,ta+h);

k4y=h*subs(subs(subs(g,x,xa+k3x),y,ya+k3y),t,ta+h);

xa=double(xa+(k1x+2*k2x+2*k3x+k4x)/6);

ya=ya+(k1y+2*k2y+2*k3y+k4y)/6;

XA=[XA xa];YA=[YA ya];

ta=ta+h;TA=[TA ta];

ya=double(ya);

hh=hh+h;

fprintf('k1x = %f, k1y = %f\nk2x = %f, k2y = %f\nk3x =

%f, k3y = %f\nk4x = %f, k4y =

fprintf('h=%f y=%f x=%f\n',hh,ya,xa);

end

S=sprintf('Data %d',c);

plot(TA,YA,'DisplayName',S);hold on

grid on

xlabel('x');ylabel('T');

legend show

end

III Kết quả

1 Problem 1

Trang 14

2 Problem 2

Trang 15

3 Problem 3

Trang 18

TÀI LIỆU THAM KHẢO

1 Applied Numerical Methods with MATLAB for Engineers and Scientists by Stephen C Chapra Dr

2 Giáo trình Phương pháp tính (Đại học Bách Khoa – Đại học Quốc gia

TP.HCM)

Ngày đăng: 21/04/2023, 09:31

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w