lunes, 4 de junio de 2012

METODOS PARA RAICES COMPLEJAS


A manera de ejemplo, he tomado la ecuación:
x^2 -4x+5

Ahora, refiriéndome a la Figura 1 del post, lo que se haces es:

1) Reflejar la gráfica de la cuadrática original (curva azul en la Fig.) desde el vértice, en la Fig. la nueva curva es roja.

2) Encontrar donde la nueva gráfica intercepta al eje X, que en la Fig. se marcó con puntos rojos.

3) Finalmente, estos puntos rojos (puntos de intercepción) corresponden también a los extremos opuestos en un círculo, por lo cual los hacemos rotar 90 grados (no salimos del circulo). Estos nuevos puntos (marcados en la Fig. con estrellas azules) deben ser interpretados en el plano complejo (ya no más en el plano cartesiano de los números reales) para que correspondan a las raíces de la ecuación original. en este caso, las raíces complejas son: 2+i y 2-i.

Efectivamente, todas las parábolas que carecen de raíces reales, cuentan con raíces complejas las que muestran una simetría alrededor de la componente real de la raíz (en este caso el 2). Estas dos raíces son números conjugados complejos.

Por supuesto, muestro este método como una alternativa complementaria para discutir, en torno al tema de las raíces complejas. Es muy probable que no sea el método más rápido para calcular las raíces, pero seguro si es el método más visual que requiere menos algebra en el pizarrón. :)

Finalmente, a continuación les dejo el código Matlab que utilicé para generar las gráficas y puntos. Es un primer intento, pues se puede mejorar mucho para convertir el código en una función completa y flexible.
%% inicio del guion Matlab
clc
clear
close all
% valores por defecto
a =1;
b= -4;
c=5;
x =.5:0.01:3.5; % intervalo para vizualizar
y = a*x.^2 + b*x + c; % parabola original
minimo = min(y); % vertice de la parabola
y_espejo = -y + 2*min(y); %reflejo de la parabola original
Posicion_de_ceros =find(y_espejo == 0); % identifica a las etiquetas
raices_reales_espejo=x(Posicion_de_ceros); %encuentra las raices de la parabola espejo
radio_circulo = abs((x(Posicion_de_ceros(2))- x(Posicion_de_ceros(1)))/2);
centro_circulo = x(Posicion_de_ceros(1))+radio_circulo;
raiz_uno = radio_circulo;
raiz_dos = -radio_circulo;
% dibujando el circulo
o=-pi:0.001:pi;
r = radio_circulo;
k = 0; % por la definicion de la raiz
h = centro_circulo;
xx=r*cos(o)+h;
yy=r*sin(o)+k;
hold on
plot(x, y, 'b', 'LineWidth',5)
plot(x, y_espejo, 'r', 'LineWidth',3)
plot(xx,yy,'--g', 'LineWidth',1.5)
plot(raices_reales_espejo, [0,0], 'o','MarkerEdgeColor','r',...
'MarkerFaceColor','r','MarkerSize',10)
plot([centro_circulo centro_circulo], [raiz_uno raiz_dos], 'p', 'MarkerEdgeColor','b',...
'MarkerFaceColor','b','MarkerSize',15)
axis equal
grid on
hold off
%% fin del guion


Cita:

 http://www.sc.ehu.es/sbweb/fisica/cursoJava/numerico/raices/graeffe/graeffe.htm
http://noosfera.indivia.net/metodos/secante.html

No hay comentarios:

Publicar un comentario