ĐẠ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 2Danh sách thành viên
Trang 3LỜ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 4Mụ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 5I CƠ SỞ LÝ THUYẾT
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à
+ −0.3 + −0.05 = ( )
−1.5
−1.5
2 = 4.4
−1.5 3
= 3.2
…
Để 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 ℎ = −
≈
ℎ
( 0 + 1 )+
ℎ
( 2 + 1 )+⋯+
ℎ
( −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
+
; 3 =
2
Trang 6Khi đó ta có được:
=
ℎ
−
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 ]
Ta có phép biến đổi:
2
=∫() = ∫ () +∫ () +⋯+∫ ()
≈
ℎ
.( 0 +4 1 + 2 )+
ℎ
.( 2 +4 3 + 4 )+⋯+
ℎ
( 2 −2 + 4 2 −1 + 2 )
≈
ℎ
.[ 0 + 2 + 4( 1 + 3 + ⋯+ 2 −1 ) + 2( 2 + 4 + ⋯+ 2 −2 )]
3
c Công thức Simpson 8/3
3 (y 0 + 2(y 3 + y 6 + +y n−3 ) + 3(y 1 + y 2 + y 4 + y 5 + +y n−2 + y n−1 ) + y n )
3 Problem 3
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)=
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
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 x 0 = a, x k = x 0 +kh, k = 1, 2, …, n-1, x n = 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ℎ 2ℎ
"( ) ≈
( +1 ) − 2 ( ) + ( −1 )
=
+1 − 2 + −1
Thay vào phương trình đã cho ta được
+1 − 2 +
−1
+
+1 −
−1
ℎ 2
2ℎ
∀ = 1,2,…, − 1
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ℎ) +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
0 … 0
ℎ 2
2
−
2
−
2 2
ℎ 2 2ℎ ℎ 2 ℎ 2 2ℎ
…
2
−1
)
−1
= [ , , … , ]
1 2 −1
−(
1
−
1
)
Và =
ℎ 2ℎ
2
…
−2
( −1−( ℎ −2+2ℎ)
)
function[]=Project1()
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
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]');
Trang 9fprintf('- 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 10fprintf('- 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 11disp('>Problem 3<');
figure(2);
ShootingMethod(-25,x,0,10,40,200,2); %gọi hàm
ShootingMethod để tính toán
thị
figure(3);
SPHH(1,0,0,-25,2,0,10,40,200); %gọi hàm SPHH để tính toán
tiêu đề đồ thị
end
function []=BPCTABCProjec1(P,tt) – hàm BPCTABCProject1 tìm các hệ số A, B, C
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);
end
function [y]= c5trapez(f,a,b,n) – công thức hình thang
h=(b-a)/n;
X=a;
y=0;
y=(y+h*subs(f,X));
X=X+h;
else
y=(y+0.5*h*subs(f,X));
X=X+h;
end
end
end
function [y]=simpson1_3(f,a,b,n) – công thức simpson 1/3 h=(b-a)/n;A=a;
y=subs(f,a)+subs(f,b);
Trang 12for i=1:n-1
A=A+h;
B=2;
end
y=y+B*subs(f,A);
end
y=double(y*h/3);
end
function[Y]=simpson3_8(f,a,b,n) – công thức simpson 8/3
h=(b-a)/n;k=h;h=h+a;
y(i)=subs(f,x,h);
h=h+k;
end
Y=subs(f,a)+y(n);
B=2;
end
Y=Y+B*y(i);
end
Y=double(Y*k*3/8);
end
function[]=SPHH(p,q,r,f,h,x1,x2,y0,yn) – hàm SPHH
k=x1;
n=(x2-x1)/h;
Y(1)=y0;X(1)=x1;
t(i)=h+k;
k=t(i);
end
X(i)=t(i-1);
X(n+1)=x2;
end
Trang 13if i==j
A(i,j)=double(subs(r,t(i))-2*subs(p,t(i))*(h^-2));
elseif i<j
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;
A(i,j)=double((subs(p,t(i))*h^-2)-(subs(q,t(i))/(2*h)));
end end
end
B(i)=double(subs(f,t(i))(subs(p,t(i))/(h^2) -subs(q,t(i))/(2*h))*y0);
elseif i==n-1
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);
Y(i)=y(i-1);
Y(n+1)=double(yn);
end
figure(3);
end
end
function[]=ShootingMethod(f,g,a,b,ya,yb,h)
Trang 14end
end
function[]=c6rk4vp(f,g,x0,y0,t1,t2,h,c)
xa=x0;ya=y0;ta=t1;n=(t2-t1)/h;
hh=0;
XA=xa;YA=ya;TA=ta;
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;
%f, k3y = %f\nk4x = %f, k4y =
end
Trang 152 Problem 2
Trang 19TÀI LIỆU THAM KHẢO
Stephen C Chapra Dr
TP.HCM)