Autor Tema: Lemniscatas

0 Usuarios y 1 Visitante están viendo este tema.

26 Mayo, 2021, 10:56 am
Leído 343 veces

Ricardo Boza

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 736
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino


Código: [Seleccionar]
clear, clc, close all
n = 12;
a = linspace(0,5,n);
b = linspace(-5,0,n);
figure(1)
hold on
for k=1:n
phi = linspace(-pi/4,pi/4);
rho = sqrt(a(k)*cos(2*phi));
x1 = rho.*cos(phi);
y1 = rho.*sin(phi);
x2 = -x1;
y2 = -y1;
plot(x1,y1,'b',x2,y2,'b--')
% x3 y3 caso especial para cuando 'a(k)' no sea positivo,
% para ello necesito crear un vector b = linspace(-5,0,n) y
% ponerlo antes del bucle.
phi = linspace(pi/4+1e-3,3*pi/4); % le sumo 1e-3 para que pi/4 + 1e-3 sea
% un número mayor que el simbólico pi/4 y no menor cuando Matlab lo
% redondee (truncándolo). De esta forma el coseno de el vector phi da
% siempre no positivo, que es lo que se busca. De lo contrario Matlab da un
% mensaje de error, porque se hace la raíz cuadrada de una cantidad
% negativa, al efectuar el producto por las componentes del vector 'b'.
rho = sqrt(b(k)*cos(2*phi));
x3 = rho.*cos(phi);
y3 = rho.*sin(phi);
x4 = -x3;
y4 = -y3;
plot(x3,y3,'k',x4,y4,'k--')
% Ahora trayectorias ortogonales
phi = linspace(0,pi/2);
rho = sqrt(a(k)*sin(2*phi));
x1 = rho.*cos(phi);
y1 = rho.*sin(phi);
x2 = -x1;
y2 = -y1;
plot(x1,y1,'r',x2,y2,'r--')
% igual que antes, x4 y4 caso especial.
phi = linspace(pi/2+1e-3,pi);
rho = sqrt(b(k)*sin(2*phi));
x5 = rho.*cos(phi);
y5 = rho.*sin(phi);
x6 = -x5;
y6 = -y5;
plot(x5,y5,'c',x6,y6,'c--')
end