Dibujar Raíces n-ésimas En Coordenadas Polares En Octave

por | 7 noviembre, 2013

Hola

El otro día escribí una forma de hacer esto en coordenadas cartesianas, pero esta no es la mejor forma de verlo. Lo ideal es hacerlo en coordenadas polares, el problema en Octave es que se puede dibujar en polares pero los ejes se dibujan en cartesianas, con lo cual quedamos casi igual. Parece ser que es un problema que tiene el programa con OpenGL, aunque lo dudo mucho. Si hay un problema endémico en Octave es que muchos de sus desarrolladores pecan de petulancia, es una lástima porque el programa es una muy buena alternativa libre al privativo de Matlab. Otra alternativa libre es utilizar Scilab, el cual sí lo dibuja correctamente, pero por no estar cambiando de programa por una cosa así utilizo esta otra solución. En fin, hay una forma fácil de cumplir el objetivo en Octave, que es instalando EPSTK, son un conjunto de librerías para Octave/Matlab que trabajan bajo el formato EPS. La instalación es sencilla aunque un poco engorrosa, pero en la misma web viene bien explicada, así como su conjunto de órdenes y unos cuantos ejemplos.

He decidido hacerlo en polares también porque es muy sencillo hacer que nuestras órdenes se puedan generar a una función Octave que realice el dibujo del polígono regular para cualquier raíz n-ésima, tan sólo hace falta introducir el grado del polinomio y el complejo al cual le queremos dibujar sus raíces n-ésimas.

Recordemos que queremos calcular y dibujar las raíces de los polinomios de la forma z^n+c=0, de lo cual sabemos que las soluciones son de la forma:

z_k=\sqrt[n]{r}e^{i\dfrac{\theta+2k\pi}{n}}\, ;\: k=0,1,\dots , n-1\, ;\: \theta\in [0,\: 2\pi ]

Como para dibujar un punto en polares lo que necesitamos es su radio y su argumento (principal) consideramos que \theta = arg(z) y r su radio, vamos que pensamos en el complejo en su forma polar. Si lo hacemos así será muy sencillo calcular todas las raíces n-ésimas, es suficiente crear 2 vectores mediante un bucle for.

Pongo el código con todo explicado en comentarios:

[matlab]

function [] = polares(z,n)
% Introducimos z como el complejo y n el grado del polinomio.

for k=0:n
theta(k+1)=((arg(z)+2*k*pi)/n); %Calculamos todos los argumentos
rho(k+1)=abs(z); %Establecemos los radios que son siempre el mismo
end
%El bucle for es necesario que acabe en n para que al dibujar el poligono,
%se una el último punto con el primer punto

eopen(‘polar.eps’); %Con epstk es necesario crear un fichero eps
clf;
eglobpar; %Accedemos a los parámetros globales de epstk para poder modificarlos.
ePlotTitleDistance = 25; %Modificamos este parámetro por cuestiones de estética
titulo = sprintf(‘Raices %d – esimas’,n); %Creamos el titulo de la imagen
ePlotTitleText = titulo; %Establecemos el título en epstk
eaxespol([0 0.4 abs(z)],[0 round(180/n) 360]); %Especificamos los intervalos de los ejes polares
%En el primero el intervalo del radio y en el segundo el de los grados.
ePolarRadiusGridColor = [1 0 0]; %Ponemos en rojo la malla de los radios polares
ePolarAngleGridColor = [0 0 1]; %Ponemos en azul la malla de los grados polares
%Formateamos correctamente el texto de la leyenda, según el complejo sea real, imaginario puro,
% o su parte real e imaginaria sean no nulas
if(imag(z)==0)
leyenda = sprintf(‘Poligono Regular %d lados de z = %.2f’,n,real(z));
elseif(real(z)==0)
leyenda = sprintf(‘Poligono Regular %d lados de z = %.2f i’,n,imag(z));
else
leyenda = sprintf(‘Poligono Regular %d lados de z = %.2f + %.2f i’,n,real(z),imag(z));
end
epolar(theta,rho,leyenda,0,[0 0 1],1.25); %Dibujamos el polígono con nuestra leyenda.
epolar;
eclose; %Cerramos nuestro fichero eps, es obligatorio.
eview;  %Visualizamos la imagen.
clear;  %Limpiamos todo para cuando volvamos a ejecutar nuestra función no se solapen imágenes anteriores.
end

[/matlab]

Lo ejecutamos para x^{11}+1=0:

[matlab]

polares(-1,11)

[/matlab]

Y aquí adjunto una imagen del resultado:

Polígono Regular

Raíces Onceavas de -1

Saludos

2 pensamientos en “Dibujar Raíces n-ésimas En Coordenadas Polares En Octave

  1. luis fernando crespo

    La verdad que justo lo estaba buscando para un trabajo.Muchas Gracias

Los comentarios están cerrados.