BTL phương pháp tính 1/ Trình bày phương pháp số giải phương trình sóng 2 chiều 2D wave equation.. Trình bày ví dụ thực tế để minh họa cho phương pháp.. 2/ Viết chương trình để giải quyế
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG
ĐẠI HỌC BÁCH KHOA
-Báo cáo Bài tập lớn môn phương pháp tính
GVHD: Đặng Văn Vinh Lớp AN01 Sinh viên thực hiện:
1 Nguyễn Diệp Phúc Bình
2 Nguyễn Duy Phúc
Học kỳ 222
1
Trang 2BTL phương pháp tính
1/ Trình bày phương pháp số giải phương trình sóng 2 chiều (2D wave equation) Nêu các bước giải quyết bài toán Trình bày ví dụ thực tế để minh họa cho phương pháp
2/ Viết chương trình để giải quyết bài toán
I) Trình bày phương pháp số giải phương trình sóng 2 chiều (2D wave equation)
-Định nghĩa: Phương trình sóng 2 chiều ( 2 Wave equation )
Phương trình sóng (hai chiều) là phương trình đạo hàm riêng tuyến tính cấp hai để
mô tả sóng hoặc trường sóng dừng
: phươn trình sóng với n chiều
: phươn trình sóng 2 chiều
c là hằng số tốc độ truyền sóng \
u yếu tố đại diện cho sự dịch chuyển khỏi trạng thái nghỉ
T : thời gian
* Nó có thể viết gọn hơn ở dạng
: đạo hàm riêng
Hay : toán tử laplace ( vi phân bậc 2 )
Hay có thế viết dưới dạng
VD: sóng cơ học ( sóng nước, sóng âm thanh và sóng địa chấn) hoặc sóng điện từ
Trang 3-PP1: Phương pháp tách biến + nguyên lí chồng chất để xây dựng một giải pháp chuỗi
=> tìm ra nghiệm chính xác phức tạp
-PP2 ( pp số ): phương pháp sử dụng sai phân hữu hạn để tính xấp xỉ kết quả cần tìm
=> đơn giản, ngắn gọn hơn <> không chính xác bằng pp1
Các bước giải
- Khai triển taylor đến cấp 2
Với
(1)
Với
(2)
Từ (1) và (2) ta có
0
0
2 ''
'
2
f x h f x f x h
f x
h
f x h f x h
f x
h
2) Áp dụng vào giải phương trình sóng 2 chiều
- Chúng ta cần phải rời rạc hóa vấn đề Miền mô phỏng của chúng tôi sẽ là một lưới Chúng ta cần hai chiều không gian( Ox và Oy) và một chiều thời gian(t) Đối với chiều thời gian, chúng ta chỉ quan tâm đến bước thời gian hiện tại() và hai bước thời gian trước đó(và )
- Xét miền D hình chữ nhật [a,b]
- Ta có điều kiện biên
+
3
Trang 4+
- Ta chia trục Ox thành n+1 các điểm x i i, 0,n
với bước nhảy Δx xi 1 x ih
tương
tự như vậy với Oy có n+1 điểm y j j, 0,n
, với bước nhảyΔyy i 1 y ih
và t có n+1 chỉ số thời gian t k k, 0,n, với bước nhảy Δt ti 1 t i
- Các nút của lưới có khoảng cách không gian ( dx và dy), sự khác biệt giữa hai ℎ bước tính toán là => Mỗi nút lưới đại diện cho một giá trị gần đúng của trườngt
Trang 5( Thời gian 0 => 1 => 2 )
Ta định nghĩa k, , ,
i j i j k
u u x y t
Sử dụng sai phân hữu hạn ở trên ta có
2 ,
2
Δ
k i j i j i j
i j
u
i j i j i j i j i j i j i j i j i j i j i j
xx yy
u u
h
- Mà nên
2
c t
h
=> vòng lặp được thực hiện, giải với điều kiện ban đầu và điều kiện biên
5
Trang 6+ (1)
+ và (3)
Trong đó f g, là các hàm cho trước
Trang 7
Từ các điều kiện (1) và (2) ta có
0, ,
0, ,
j a j
i i b
Với điều kiện (3):
,
u x y f x y u f x y i j
+ Từ u x y t , ,0g x y,
sử dụng biến đổi ở trên ta có
,
2
i j i j
h u
Từ đây ta sẽ lặp để giải bài toán theo các tầng thời gian thời gian như sau:
Với t t 0ta đã xác định được
0 ,
,
0 , , 0
i j i i
u f x y
có nghĩa là ta đã xác định được 0
i j
u i j
Từ công thức lặp (*) thế k 0ta có
7
Trang 8
2
2
Δ
Δ
1Δ
4 2
c t
h
c t
h
c t
h
,
2hg x y i, j 2u i j
Với các điều kiện biên ta có
u u u u
Vậy ta đã xác định được u1i j, , 0 i j n,
Bắt đầu từ 1 k n 1, sử dụng vòng lặp
2
Δ
c t
h
Ta lại có 0,k1 k,01 a,k1 k,b1 0
u u u u
Như vậy ta sẽ xác định được ,1
k
i j
u , với 1 k n 1 và 0i j n, Như vậy ta đã xác định được u k i j, với 0i j k n, ,
II)Bài toán thử:
Tìm nghiệm của phương trình u ttu xxu yy
, với :0x y, 10và 0 t 10
Với các điều kiện ban đầu:
0, , t 10, , 0
0, , sin sin , ,0 0
t
u x t u x t
u x y
Trang 9Ta sẽ xây dựng code với matlab để giải bài toán
Giải thuật:
Ta sẽ chia miền x y, thành 100 điểm với
10 99
dx dy h
Ta chọn dt 0.01, chia thành 1000 thời điểm
Ta xác định được
g x y
Với các điều kiện ban đầu ta có
Với t t 0
0
,
sin sin
0
i j
Với t t 1
2
u u u u u u u
, với 1 i j, 99
u u u u
Với 1 t k 999ta sẽ có
,với 1i j, 99
u u u u
, với 1i j, 100
9
Trang 10Code matlab:
% Parameters
Lx = 10; % Length in x-direction
Ly = 10; % Length in y-direction
Nx = 100; % Number of points in x-direction
Ny = 100; % Number of points in y-direction
dx = Lx / (Nx - 1); % Step size in x-direction
dy = Ly / (Ny - 1); % Step size in y-direction
c = 1; % Wave speed
dt = 0.01; % Time step
T = 10; % Total simulation time
Nt = T / dt; % Number of time steps
% Discretized domain
x = linspace(0, Lx, Nx);
y = linspace(0, Ly, Ny);
[X, Y] = meshgrid(x, y);
% Initial conditions
u0 = sin(pi * X) * sin(pi * Y); % Initial displacement
v0 = zeros(Nx, Ny); % Initial velocity
% Initialization
u_old = u0;
u_new = zeros(Nx, Ny);
u = u0;
u(2:Nx-1, 2:Ny-1) = u(2:Nx-1, 2:Ny-1) + dt * v0(2:Nx-1, 2:Ny-1) + 0.5 * c^2 * dt^2 * (
(u0(1:Nx-2, 2:Ny-1) - 2 * u0(2:Nx-1, 2:Ny-1) + u0(3:Nx, 2:Ny-1)) / dx^2 +
(u0(2:Nx-1, 1:Ny-2) - 2 * u0(2:Nx-1, 2:Ny-1) + u0(2:Nx-1, 3:Ny)) / dy^2);
% Time-stepping loop
for t = 1:Nt
% Update interior points using finite difference approximation
u_new(2:Nx-1, 2:Ny-1) = 2 * u(2:Nx-1, 2:Ny-1) - u_old(2:Nx-1, 2:Ny-1) +
c^2 * dt^2 * ((u(1:Nx-2, 2:Ny-1) - 2 * u(2:Nx-1, 2:Ny-1) + u(3:Nx, 2:Ny-1)) / dx^2 +
(u(2:Nx-1, 1:Ny-2) - 2 * u(2:Nx-1, 2:Ny-1) + u(2:Nx-1, 3:Ny)) / dy^2);
% Update boundary conditions (if necessary)
% Update solution arrays
u_old = u;
u = u_new;
disp(u)
% Visualization
Trang 11title([ 'Wave at time t = ' , num2str(t * dt)]);
xlabel( 'x' );
ylabel( 'y' );
zlabel( 'u(x, y, t)' );
drawnow;
end
end
Vì số giá trị nhiều nên kết quả sẽ hiển thị với dạng đồ thị
Kết quả:
Đồ thị tại t 10
Một số giá trị t
11
Trang 12*Một số ứng dụng thực tế nữa về việc ứng dụng phương pháp xấp xỉ tuyến tính để giải phương trình sóng 2 chiều
- Sóng do động đất gây nên:
- Quan sát chuyển động của sóng nước
Trang 13III/ Sự lan truyền sóng thần
13
Trang 14Trong thực tế, các loại sóng như sóng động đất, sóng thần,… thường không có một tốc độ truyền cố định tức là c không còn là hằng số
Vì vậy phương trình của sóng của nó sẽ biến đổi để phù hợp với các điều kiện thực
tế và ta sẽ có phương trình như sau:
H x y t H x y t
Phương trình trên là phương trình đơn giản nhất của sóng thần
Trong đó H x y t , ,biểu diễn độ sâu của nước
Đối với sóng động đất hay sóng truyền khi núi lửa phun thì ta sẽ xấp xỉ HH x y ,
do độ sâu ta sẽ cố định tại mặt nước biển
Và phương trình sẽ đơn giản hơn:
2
Với các điều kiện ban đầu như bài toán sóng 2 chiều ở trên
Giải phương trình:
Ta sẽ định nghĩa: j ,
i j
H H x y
Ta sử dụng công thức Euler để giải đơn giản hơn phương pháp sai phân hữu hạn:
1
Trong đó
1 1
i i
i j i j j
x x
u
Trang 15Bây giờ ta sẽ định nghĩa Hi1
:
Ta có 3 cách định nghĩa sau:
2
2
2
1
2
2
i
i
i i
i
Ta có thể chọn 1 trong 3 cách trên
Trong bài này ta sẽ sử dụng cách 1,
Và ta cũng sẽ có 1 1
2
H H H
Từ những biến đổi ở trên thay vào phương trình ban đầu ta được
1
1
2
2
2
i j i j i j
h t
h
1
,
2
, , , , , 1 , , , 1 , ,
k
i j
u
Ở đây bổ sung một số điều kiện liên quan tới giá trị ban đầu của H jta sẽ giải được
bài toán với phương pháp lặp như trên
IV) Tài liệu tham khảo
fbclid=IwAR28WMclyE07flkOvcRuaT79hQG7EVlSTdJ_L1rZOrWx7pcrd
15
Trang 168iezxvyqRY => phương pháp giải phương trình sóng 2D bằng phương pháp xấp xỉ
http://hplgit.github.io/num-methods-for-PDEs/doc/pub/wave/sphinx/._main_wave005.html?
fbclid=IwAR3FmmT3l80Z5o13YD5vptOmG7oGKYtqSp2iqtRdd1SwUSmt
pháp xấp xỉ
http://hplgit.github.io/INF5620/doc/pub/sphinx-
phương pháp giải phương trình sóng 2 chiều bằng phương pháp xấp xỉ
5 Slide môn Phương pháp tính- Thầy Đăng Văn Vinh