2015-03-12 2 views
1

Я работаю над проектом, связанным с решением волнового уравнения в двумерном (x, y, t) численном, используя центральную разностную аппроксимацию в MATLAB со следующим граничные условия:Конечное разностно-волновое уравнение - граничные условия и настройка вещей вверх

plot

общая формула сборки является:

FDformula

Я понимаю, некоторые из граничных условий (BC), как

ди/ду = 0 при у = м,

BC,

, но я не уверен, как реализовать эти граничные условия в среде MATLAB.

Друг дал мне эти уравнения:

eq

Вот моя попытка с кодом MATLAB,
, но я не в состоянии прогрессировать дальше:

% The wave function 
% Explicit 

% Universal boundary conditions for all 3 cases: 
% u=0 at t=0 
% du/dt=0 at t=0 

% Case 1 boundary conditions 
% At x=0, u=2sin(2*pi*t/5); 
% At y=0, du/dy=0; 
% At y=2, du/dy=0; 
% At x=5, du/dx=0; 
% u=0 and du/dt=0 at t=0; 
%-------------------------------------------------------------------------% 


% Setting up 
clc; clear all; close all; 

% length, time, height 
L = 5; % [m] 
h = 2; % [m] 
T = 10; % [s] 

% Constants 
c_x = 1; % arbitrary 
c_y = 1; % arbitrary 

dx = 0.1; % <x> increment 
dy = 0.1; % <y> increment 
dt = 0.1; % time increment 
nx = L/dx + 1; % number of <x> samples 
ny = h/dy + 1; % number of <y> samples 
nt = T/dt + 1; % number of time samples 
t(:,1) = linspace(0, T, nt); 

theta_x = c_x*(dt^2)/(dx^2); 
theta_y = c_y*(dt^2)/(dy^2); 
% theta_x = theta_y 
theta = theta_x; 
%-------------------------------------------------------------------------% 

% The matrix 
U = zeros(nt, nx, ny); 

% Setting up the <U> matrix with the boundary conditions - case 1 
U(1, :, :) = 0; % U=0 at t=0 

for tt=1:nt % U=2sin(2pi/5*t) at x=0 
    for jj=1:ny 
     U(tt, 1, jj)=2*sin(2*pi/5.*t(tt)); 
    end 
end 


for it=2:t 
    for ix=2:nx-1 
     for iy=2:ny-1 
      % Boundary conditions 

      % General case (internal): 
      U1 = -U(it-1, ix, iy); 
      U2 = 2*(1-2*theta)*u(it, ix, iy); 
      U3 = theta*U(it, ix-1, iy); 
      U4 = theta*U(it, ix+1, iy); 
      U5 = theta*U(it, ix, iy-1); 
      U6 = theta*U(it, ix, iy+1); 



     end 
    end 
end 

ответ

0

общая формула сборки вы также относитесь к границам. Усложнение заключается в том, что при применении формулы, когда j = 1 и j = m, у вас есть j = 0 и j = m+1 срок действия, которые не включены в вашу сетку.

Чтобы улучшить эту проблему, граничные условия дают вам связь между точками от сетки и сеткой.

Как вы указали, условие dudy = 0 дало вам отношение, которое u(i,m-1) == u(u,m+1) на границе. Таким образом, вы используете формулу общей сборки и заменяете все условия m+1 на m-1на границе. У вас будет аналогичное отношение и для нижней границы.

 Смежные вопросы

  • Нет связанных вопросов^_^