File:Wave equation 1D fixed endpoints.gif

Wave_equation_1D_fixed_endpoints.gif (274 × 121 pixels, file size: 129 KB, MIME type: image/gif, looped, 99 frames, 4.9 s)

Description
English: Illustration of solution of one-dimensional wave equation: a gaussian wave on a string fixed at both ends. The wave reflects from each end with a 180° phase shift.
Date (UTC)
Source self-made, with en:Matlab
Author Oleg Alexandrov
 
This diagram was created with MATLAB.
Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.

MATLAB source code

% A wave travelling on a string with % fixed endpoints  function main()     % KSmrq's colors    red    = [0.867 0.06 0.14];    blue   = [0, 129, 205]/256;    green  = [0, 200,  70]/256;    yellow = [254, 194,   0]/256;    white = 0.99*[1, 1, 1];        % length of the string and the grid    L = 5;    N = 151;    X=linspace(0, L, N);     h = X(2)-X(1); % space grid size    c = 0.5; % speed of the wave    tau = 0.25*h/c; % time grid size        K = 5; % steepness of the bump    S = 0; % shift the wave    f=inline('exp(-K*(x-S).^2)', 'x', 'S', 'K'); % a gaussian as an initial wave    df=inline('-2*K*(x-S).*exp(-K*(x-S).^2)', 'x', 'S', 'K'); % derivative of f     % wave at time 0 and tau    U0 = 0*f(X, S, K);    U1 = U0 - 2*tau*c*df(X, S, K);        U = 0*U0; % current U     Big=10000;    Ut = zeros(Big, N);    Ut(1, :) = U0;    Ut(2, :) = U1;        % hack to capture the first period of the wave    min_k = 2*N; k_old = min_k; turn_on = 0;     for j=3:Big        last_j = j;              %  fixed end points       U(1)=0; U(N)=0;              % finite difference discretization in time       for i=2:(N-1)          U(i) = (c*tau/h)^2*(U1(i+1)-2*U1(i)+U1(i-1)) + 2*U1(i) - U0(i);       end        Ut(j, :) = U;              % update info, for the next iteration       U0 = U1; U1 = U;        % hack to capture the first period of the wave       k = find ( abs(U) == max(abs(U)) );       k = k(1);        if k > N/2          turn_on = 1;       end        min_k = min(min_k, k_old);       if k > min_k & min_k == k_old & turn_on == 1          break;       end       k_old = k;            end     % truncate to the first period    last_j = last_j - 1;    Ut = Ut(1:last_j, :);    % shift the wave by a certain amount    shift = floor(last_j/4);    Vt=Ut;    Ut((last_j-shift+1):last_j, :) = Vt(1:shift, :);    Ut(1:(last_j-shift), :)        = Vt((shift+1):last_j, :);     num_frames = 100;    spacing=floor(last_j/num_frames)        % plot the wave    for j=1:(last_j-spacing+1)        U = Ut(j, :);        if rem(j, spacing) == 1           figure(1); clf; hold on;          axis equal; axis off;           lw = 3; % linewidth          plot(X, U, 'color', red, 'linewidth', lw); 	           % plot the ends of the string          small_rad = 0.06;          ball(0, 0, small_rad, red);          ball(L, 0, small_rad, red); 	           % size of the window          ys = 1.1;          axis([-small_rad, L+small_rad, -ys, ys]);                 % small markers to keep the bounding box fixed when saving to eps          plot(-small_rad, ys, '*', 'color', white);          plot(L+small_rad, -ys, '*', 'color', white);           frame_no = floor(j/spacing)+1;          frame=sprintf('Frame%d.eps', 1000+frame_no);          disp(frame)          saveas(gcf, frame, 'psc2');                 end    end     function ball(x, y, radius, color) % draw a ball of given uniform color     Theta=0:0.1:2*pi;    X=radius*cos(Theta)+x;    Y=radius*sin(Theta)+y;    H=fill(X, Y, color);    set(H, 'EdgeColor', color);  % The gif image was creating with the command  % convert -antialias -loop 10000  -delay 15 -compress LZW Frame10* Movie.gif 

Captions

One-dimensional wave equation

Items portrayed in this file

depicts

24 August 2007

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current01:27, 24 August 2007Thumbnail for version as of 01:27, 24 August 2007274 × 121 (129 KB)Oleg Alexandrov{{Information |Description=Illustration of en:Wave equation |Source=self-made, with en:Matlab |Date=~~~~~ |Author= Oleg Alexandrov }} {{PD-self}} Category:Waves Category:Partial differential equations [[Catego

The following 3 pages use this file:

Global file usage

The following other wikis use this file:

View more global usage of this file.