File:Scattering theory illust.png
From formulasearchengine
Jump to navigation
Jump to search
Size of this preview: 144 × 596 pixels. Other resolutions: 58 × 240 pixels | 480 × 1,988 pixels.
Original file (480 × 1,988 pixels, file size: 49 KB, MIME type: image/png)
This file is from Wikimedia Commons and may be used by other projects. The description on its file description page there is shown below.
DescriptionScattering theory illust.png | Illustration of en:Scattering theory. |
Date | (UTC) |
Source | self-made with en:Matlab. See the source at Image:Scattering_total_field.png |
Author | Oleg Alexandrov |
This diagram was created with MATLAB.
Public domainPublic domainfalsefalse |
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. |
Source code (MATLAB)
function main(Nx, Iters)
Box_x = 3;
Scale = 0.5;
Box_y = Box_x/Scale;
%Nx = 50;
Ny = Nx/Scale;
wavenumber = 10;
XX = linspace(-Box_x, Box_x, Nx);
YY = linspace(-Box_y, Box_y, Ny);
hx = XX(2) - XX(1);
hy = YY(2) - YY(1);
[X, Y] = meshgrid(XX, YY);
Source_size = 0.5;
Source_shift = 0;
n0=0.5;
Scatterer = n0*sign(max(Source_size^2 - X.^2-(Y-Source_shift).^2, 0));
I = sqrt(-1);
Uinc = exp(I*wavenumber*Y);
% plot the initial planewave
figure(1); clf; hold on; axis equal; axis off; colormap copper;
Tweak=0*Uinc; Tweak(1, 1)=-2; Tweak(1, 2) = 4;
imagesc(real(Uinc)+Tweak); % a hack to have the same colormap as the images below
iter = 1;
saveas(gcf, sprintf('Scattering_frame%d_Nx%d.eps', iter, Nx), 'psc2');
%figure(3); clf; hold on; axis equal; axis off; colormap copper;
%imagesc(Scatterer);
% Approximate the Uscatter by 0
Uscatter = 0*Scatterer;
% Several iterations to improve upon the starting Born approximation
% I hope this is the right way to do things. The plotted solution looks plausible
% but I don't know if this is rigurous.
for iter=2:(1+Iters)
% Here we use an approximate source
Source = wavenumber^2*Scatterer.*(Uinc+Uscatter);
% calc the solution solution to the Helmholtz equation
Uscatter = 0*X;
[m, n] = size(Source);
for i=1:m
i
for j=1:n
if Source(i, j) ~= 0
x0 = X(i, j);
y0 = Y(i, j);
% add the contribution from the current source, average over four corners of current rectangle
Uscatter = Uscatter ...
+ (I/16)*(...
besselh(0, 1, wavenumber*sqrt((X-x0-hx/2).^2+(Y-y0-hy/2).^2) + eps)*Source(i, j) ...
+ besselh(0, 1, wavenumber*sqrt((X-x0-hx/2).^2+(Y-y0+hy/2).^2) + eps)*Source(i, j) ...
+ besselh(0, 1, wavenumber*sqrt((X-x0+hx/2).^2+(Y-y0-hy/2).^2) + eps)*Source(i, j) ...
+ besselh(0, 1, wavenumber*sqrt((X-x0+hx/2).^2+(Y-y0+hy/2).^2) + eps)*Source(i, j))*hx*hy;
%Uscatter = Uscatter +(I/4)*besselh(0, 1, wavenumber*sqrt((X-x0).^2+(Y-y0).^2) + eps)*Source(i, j)*hx*hy;
end
end
end
Utotal = Uinc + Uscatter;
figure(1); clf; hold on; axis equal; axis off; colormap copper;
imagesc(real(Utotal));
saveas(gcf, sprintf('Scattering_frame%d_Nx%d.eps', iter, Nx), 'psc2');
end
This math image could be re-created using vector graphics as an SVG file. This has several advantages; see Commons:Media for cleanup for more information. If an SVG form of this image is available, please upload it and afterwards replace this template with
{{vector version available|new image name}} .
It is recommended to name the SVG file “Scattering theory illust.svg”—then the template Vector version available (or Vva) does not need the new image name parameter. |
Items portrayed in this file
depicts
some value
8 July 2007
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 06:44, 8 July 2007 | 480 × 1,988 (49 KB) | wikimediacommons>Oleg Alexandrov | Tweak |
File usage
There are no pages that use this file.