رفتن به مطلب

حل معادله یک بُعدی موج با Matlab


ارسال های توصیه شده

تابع wave.m T معادله یک بعدی موج رو حل می کنه و برای استفاده اینجا قرارش میدم:

 

function wave3()

 

 

%

% u_{tt} = c^2 u_{xx}

%

% using finite difference numerics.

 

% L = length of interval 0

%

% c = wave speed

%

% n = number of space mesh points

%

% dt = time step size

%

 

 

L = 5;

c = 1;

n = 100;

dt = .005;

tf = 5;

 

 

 

h = L/n;

l = dt*c/h; l2 = l^2;

 

M = l2 *( diag(ones(n,1),1) + diag(ones(n,1),-1));

 

x = linspace(0,L,n+1)';

 

f = x.*sin(4*pi*x/L);

g = 0*x;

 

t=0;

 

w = f;

z = (1 - l2) * f + M * f/2 + dt * g;

t = t + dt;

Z = [];

T = [];

 

while t

 

u = 2 * (1 - l2) * z + M * z - w;

w = z;

z = u;

Z = [Z,z];

T = [T,t];

t=t+dt;

 

end

 

T1 = linspace(0,tf,100);

x1 = linspace(0,L,110)';

Z1 = interp2(T,x,Z,T1,x1);

surf(x1,T1,Z1')

axis([0 L 0 tf -5 5]);

xlabel('Position');

ylabel('Time');

zlabel('Temperature');

colormap 'Jet'

 

end

  • Like 4
لینک به دیدگاه
×
×
  • اضافه کردن...