File:Amoeba3.svg

Summary

Description
English: The amoeba of
Date
Source Own work based on: Amoeba3.png:  by Oleg Alexandrov
Author
Original:
Vector:
Category:Vectorizations
SVG development
InfoField
 The source code of this SVG is invalid due to an error.
 This W3C-invalid trigonometry was created with an unknown SVG tool.
Category:Invalid SVG created with Other tools:Trigonometry#1000Amoeba3.svg
This trigonometry is a retouched picture, which means that it has been digitally altered from its original version. Modifications: Vectorization. The original can be viewed here: Amoeba3.png: . Modifications made by Zerodamage.

Category:SVG retouched pictures from raster#Amoeba3.svg

Licensing

Zerodamage, the copyright holder of this work, hereby publishes it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
Attribution:
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Category:CC-BY-SA-3.0#Amoeba3.svgCategory:Self-published work

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>

Original upload log

This image is a derivative work of the following images:

  • Amoeba3.png licensed with PD-self
    • 2007-03-02T15:45:04Z Oleg Alexandrov 1267x1006 (12078 Bytes) Made by myself with Matlab.
    • 2007-03-02T15:39:58Z Oleg Alexandrov 1267x1006 (12205 Bytes) Made by myself with Matlab.
    • 2007-03-02T11:10:55Z Oleg Alexandrov 122x100 (1293 Bytes) Made by myself with Matlab.
    • 2007-03-02T11:08:58Z Oleg Alexandrov 1208x1006 (27215 Bytes) Made by myself with Matlab.
    • 2007-03-02T11:04:24Z Oleg Alexandrov 1267x833 (15788 Bytes) Made by myself with Matlab.
    • 2007-03-02T11:04:05Z Oleg Alexandrov 1267x833 (15788 Bytes) Made by myself with Matlab.
    • 2007-03-02T11:01:12Z Oleg Alexandrov 1356x914 (21608 Bytes) Made by myself with Matlab.
    • 2007-03-02T10:59:51Z Oleg Alexandrov 1378x972 (18538 Bytes) Made by myself with Matlab.
    • 2007-03-02T10:48:46Z Oleg Alexandrov 1378x972 (18538 Bytes) Made by myself with Matlab.

Uploaded with derivativeFX Category:Uploaded with derivativeFX

Category:Amoeba (mathematics)
Category:Amoeba (mathematics) Category:CC-BY-SA-3.0 Category:Invalid SVG created with Other tools:Trigonometry Category:SVG retouched pictures from raster Category:Self-published work Category:Uploaded with derivativeFX Category:Vectorizations