MATLAB program: Bài toán mô hình phương trình sóng

Một phần của tài liệu TAP CHI TOAN UNG DUNG CONG NGHE VA GIAO DUC SO THU 2 THANG 72017 (Trang 29 - 31)

Nghiệm hội tụ khi ta cố định giá trị củanT nhưng thay đổi giá trị củanx.Chúng ta cũng thấyrằng nếu chọnnx ≥nT thì đồ thị sẽ không còn đúng dạng nữa. rằng nếu chọnnx ≥nT thì đồ thị sẽ không còn đúng dạng nữa.

Chúng ta đã tính được sai số giữa nghiệm chính xác và nghiệm gần đúng bởi các giá trị khácnhau củanx. Điều này chứng tỏ rằng bậc hội tụ là1.Thông qua bảng hội tụ, ta đã vẽ được đồ nhau củanx. Điều này chứng tỏ rằng bậc hội tụ là1.Thông qua bảng hội tụ, ta đã vẽ được đồ thị để so sánh các giá trị của nghiệm chính xác và nghiệm gần đúng trên cùng một hệ trục tọa độ. Cuối cùng, ta cũng đã thể hiện được đồ thị của hàm số đã chọn trong không gian ba chiều. Lý thuyết về bài toán dạng hyperbolic có nhiều mô hình từ đơn giản đến phức tạp trong Toán học, chẳng hạn như phương trình đối lưu, Lax, Upwind, Lax-Wendroff, phương trình Navier- Stokes. Thêm nữa, bài toán này trong những năm gần đây cũng được nghiên cứu và phát triển phục vụ cho khoa học và kỹ thuật.

Phương trình sóng có nhiều ứng dụng trong vật lý như các sóng của chuỗi, sóng giật trong khôngkhí, sóng cơ học lượng tử, các mô hình âm thanh của sóng địa chấn, sóng âm trong chất lỏng và khí, sóng cơ học lượng tử, các mô hình âm thanh của sóng địa chấn, sóng âm trong chất lỏng và gas, v.v.

3. Lập trình MATLAB dạng Hyperbolic

function hyperfdm_sol(L,T,nT,nx)

% Matlab Program : Hyperbolic problems: %Wave equation: u_xx=u_tt

%where u(x,0)=sin(pi*x). Use the explicit method.

%The exact solution: u_exact=(1/2)*(sin(2*pi*(x+t))+sin(2*pi*(x-t))) %L = 1.; % Length of the wire

%T = 1; % Final time

% Choose nT= 200. Number of time steps dt = T/nT;

% Choose nx= 4,8,... Number of space steps dx = L/nx;

rho = dt^2/(dx^2); % Stability parameter rho <= 1 when nx <= nT. % Initial temperature of the wire

% initilalize u u = zeros(nx+1,nT+1); u3 = zeros(nx+1,nT+1); x = zeros(nx+1,1); time = zeros(nT+1,1); for i = 1:nx+1 x(i) = (i-1)*dx; u(i,1) = f0(x(i)); end

%Temperature at the boundary (t=0)

for k =1:nT+1 u(1,k) = 0.; u(nx+1,k) = 0.; time(k) = (k-1)*dt;

end

%Implementation of the exact solution

for k=1:nT+1

for i = 1:nx+1

u3(i,k) = u_exact(x(i),time(k));

end end

%Implementation of the explicit method

for i = 2:nx %k=2, the first time step

u(i,2) = (1/2)*rho*(f0(x(i+1))+f0(x(i-1)))+(1-rho)*f0(x(i));

end

% The second time step

for k = 3:nT+1 % Time Loop

for i = 2:nx % Space Loop

u(i,k) = rho*u(i+1,k-1)+2*(1-rho)*u(i,k-1)+ rho*u(i-1,k-1)-u(i,k-2);

end end

disp(error2);

figure hold on

%The graphic of the exact solution in 2D

plot(x,u3(:,1),’-r’,’MarkerFaceColor’,’r’) %The graphic of the explicit method in 2D

plot(x,u(:,1),’*b’,’MarkerFaceColor’,’b’)

xlabel(’x’)

ylabel(’temperature’)

legend({’Exact solutions’ ’Finite difference method’},’location’,’NE’);

title(’The comparison of the finite difference method and the exact solutions for h = 1/64, at T=1’)

hold off

%The graphic of the explicit method in 3D

figure

mesh(x,time,u’)

title(’The the finite difference method for h = 1/32,at T=1’)

xlabel(’x’)

ylabel(’time’)

zlabel(’Temperature’)

%The graphic of the exact solution in 3D

figure

mesh(x,time,u3’)

title(’The exact solutions for h=1/32,at T=1’)

xlabel(’x’)

ylabel(’time’)

zlabel(’Temperature’)

Một phần của tài liệu TAP CHI TOAN UNG DUNG CONG NGHE VA GIAO DUC SO THU 2 THANG 72017 (Trang 29 - 31)

Tải bản đầy đủ (PDF)

(160 trang)