Image:Amoeba3.png

From Wikipedia, the free encyclopedia

Wikimedia Commons logo This is a file from the Wikimedia Commons. The description on its description page there is shown below.
Commons is a freely licensed media file repository. You can help.

[edit] Summary

Made by myself with Matlab.

[edit] Licensing

Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Afrikaans | Alemannisch | Aragonés | العربية | Asturianu | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Eʋegbe | Ελληνικά | English | Español | Esperanto | Euskara | Estremeñu | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Kurdî / كوردی | Latina | Lietuvių | Latviešu | Magyar | Македонски | Bahasa Melayu | Nederlands | ‪Norsk (bokmål)‬ | ‪Norsk (nynorsk)‬ | 日本語 | Polski | Português | Ripoarisch | Română | Русский | Shqip | Slovenčina | Slovenščina | Српски / Srpski | Svenska | ไทย | Tagalog | Türkçe | Українська | Tiếng Việt | Walon | ‪中文(简体)‬ | ‪中文(繁體)‬ | zh-yue-hant | +/-

[edit] Source code


% find the amoeba of a polynomial, see
% http://en.wikipedia.org/wiki/Amoeba_%28mathematics%29

% consider a polynomial in z and w
%f[z_, w_] = 1 + z + z^2 + z^3 + z^2*w^3 + 10*z*w + 12*z^2*w + 10*z^2*w^2

% as a polynomial in w with coeffs polynonials in z, its coeffs are 
% [z^2, 10*z^2, 12*z^2+10*z, 1 + z + z^2 + z^3] (from largest to smallest)

% as a polynomial in z with coeffs polynonials in w, its coeffs are 
% [1, 1+w^3+12*w+10*w^2, 1+10*w, 1] (from largest to smallest)

function main()

   figure(3); clf; hold on;
   axis([-10, 10, -6, 7]); axis equal; axis off;
   fs = 20; set(gca, 'fontsize', fs);
   
   ii=sqrt(-1);
   tiny = 100*eps;
   
   Ntheta = 300;
   NR=      400; NRs=100; % NRs << NR  

   % LogR is a vector of numbers, not uniformly distributed (more points where needed).
   A=-10; B=10; AA = -0.1; BB = 0.1; 
   LogR  = [linspace(A, B, NR-NRs), linspace(AA, BB, NRs)]; LogR = sort (LogR);
   R     = exp(LogR);

   % a vector of angles
   Theta = linspace(0, 2*pi, Ntheta);

   Rho = zeros(1, 3*Ntheta); % will store the absolute values of the roots
   One = ones (1, 3*Ntheta);

   % draw the 2D figure as union of horizontal pieces and then union of vertical pieces
   for type=1:2

          for count_r = 1:NR
                 count_r
                 
                 r = R(count_r);
                 for count_t =1:Ntheta
                        
                        theta = Theta (count_t);

                        if type == 1
                           z=r*exp(ii*theta);
                           Coeffs = [z^2, 10*z^2, 12*z^2+10*z, 1 + z + z^2 + z^3];
                        else
                           w=r*exp(ii*theta);
                           Coeffs = [1, 1+w^3+12*w+10*w^2, 1+10*w, 1];
                        end

                        % find the roots of the polynomial with given coefficients
                        Roots = roots(Coeffs);

                        % log |root|. Use max() to avoid log 0.
                        Rho((3*count_t-2):(3*count_t))= log (max(abs(Roots), tiny)); 
                 end
                 

                 % plot the roots horizontally or vertically
                 if type == 1
                        plot(LogR(count_r)*One, Rho, 'b.');
                 else
                        plot(Rho, LogR(count_r)*One, 'b.');
                 end
                 
          end

   end
   
   saveas(gcf, 'amoeba3.eps', 'psc2');

% A function I decided not to use, but which may be helpful in the future.   
%function find_gaps_add_to_curves(count_r, Rho)
%
%   global Curves;
%   
%   Rho = sort (Rho);
%   k = length (Rho);
%
%   av_gap = sum(Rho(2:k) - Rho (1:(k-1)))/(k-1);
%
%   % top-most and bottom-most curve
%   Curves(1, count_r)=Rho(1); Curves(2, count_r)=Rho(k);
%
%   % find the gaps, which will give us points on the curves limiting the amoeba
%   count = 3;
%   for j=1:(k-1)
%         if Rho(j+1) - Rho (j) > 200*av_gap
%
%                Curves(count, count_r) = Rho(j);   count = count+1;
%                Curves(count, count_r) = Rho(j+1); count = count+1;
%         end
%   end

% The polynomial in wiki notation
%<math>P(z_1, z_2)=1 + z_1\,</math>
%<math>+ z_1^2 + z_1^3 + z_1^2z_2^3\,</math>
%<math>+ 10z_1z_2 + 12z_1^2z_2\,</math>
%<math>+ 10z_1^2z_2^2.\,</math>

File history

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

Date/TimeDimensionsUserComment
current15:45, 2 March 20071,267×1,006 (12 KB)Oleg Alexandrov (Made by myself with Matlab.)
15:39, 2 March 20071,267×1,006 (12 KB)Oleg Alexandrov (Made by myself with Matlab.)
11:10, 2 March 2007122×100 (1 KB)Oleg Alexandrov (Made by myself with Matlab.)
11:08, 2 March 20071,208×1,006 (27 KB)Oleg Alexandrov (Made by myself with Matlab.)
11:04, 2 March 20071,267×833 (15 KB)Oleg Alexandrov (Made by myself with Matlab.)
11:04, 2 March 20071,267×833 (15 KB)Oleg Alexandrov (Made by myself with Matlab.)
11:01, 2 March 20071,356×914 (21 KB)Oleg Alexandrov (Made by myself with Matlab.)
10:59, 2 March 20071,378×972 (18 KB)Oleg Alexandrov (Made by myself with Matlab.)
10:48, 2 March 20071,378×972 (18 KB)Oleg Alexandrov (Made by myself with Matlab.)
The following pages on the English Wikipedia link to this file (pages on other projects are not listed):