Файл:Wave equation 1D fixed endpoints.gif

Из Википедии, бесплатной энциклопедии

Wave_equation_1D_fixed_endpoints.gif(274 × 121 пкс, размер файла: 129 Кб, MIME-тип: image/gif, закольцованный, 99 фреймов, 4,9 с)

Описание
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.
Дата (UTC)
Источник self-made, with en:Matlab
Автор Oleg Alexandrov
 
Это diagram было создано с помощью MATLAB.
Public domain Я, владелец авторских прав на это произведение, передаю его в общественное достояние. Это разрешение действует по всему миру.
В некоторых странах это не может быть возможно юридически, в таком случае:
Я даю право кому угодно использовать данное произведение в любых целях без каких-либо условий, за исключением таких условий, которые требуются по закону.

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 

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл
One-dimensional wave equation

Элементы, изображённые на этом файле

изображённый объект

У этого свойства есть некоторое значение без элемента в

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий01:27, 24 августа 2007Миниатюра для версии от 01:27, 24 августа 2007274 × 121 (129 Кб)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

Следующие 2 страницы используют этот файл:

Глобальное использование файла

Данный файл используется в следующих вики:

Просмотреть глобальное использование этого файла.