3 votos

Software gratuito / herramienta en línea para trazar funciones complejas como mapas de cuadrículas

Imparto un curso de introducción al Análisis Complejo y me ayudaría mucho si pudiera utilizar una herramienta online gratuita para trazar cómo una función concreta mapea una cuadrícula determinada en $z$ -Avión a $w$ -plano pero no soy capaz de encontrar nada parecido a lo que quiero. Para especificar un poco más:

  • El libro de Needham Visual Complex Analysis utiliza exactamente este enfoque;
  • NO me interesa nada que utilice el trazado de colores;
  • Intenté con Sage pero no pude encontrar lo que quería (sería genial si Sage lo hiciera porque es un software matemático bastante universal y gratuito).

¿Conoce usted una herramienta de este tipo? Sé que se podría escribir un código para eso, pero no es lo que estoy preguntando - idealmente, uno definiría una función (una elemental) y luego especificaría una cuadrícula (digamos un $x$ -alcance y $y$ -rango y número de líneas horizontales y verticales) y dibujaría la imagen de la cuadrícula transformada por la función.

3voto

ccorn Puntos 4924

La mayoría de los programas que admiten operaciones de matrices y trazados al estilo de Matlab o NumPy pueden hacerlo. Algunos ejemplos son Octave, FreeMat o Scilab. La esencia (en sintaxis Octave), demostrada para el $\tanh$ función, es:

n=30;
[X,Y]=ndgrid([-pi/2:pi/n:pi/2],[-pi/2:pi/n:pi/2]);
Z=X+1i*Y;
W=tanh(Z);
clf(); axis([-4,4,-3,3],"equal"); hold on;
plot(W);
plot(W');

Pero entonces los segmentos entre los puntos de la cuadrícula serán rectos. Es posible que desee un poco más de refinamiento. Ejecute lo siguiente como un archivo de script o introduzca su contenido en la interfaz de usuario de Octave:

#! /usr/bin/env octave -qf
# Set plot ranges and aspect ratio
clf(); axis([-4,4,-3,3],"equal"); hold on;
# Set plot title
title("Map of tanh(z) resp. isolines of artanh(z)");
# Set number of subintervals of the domain used (in each direction)
n=360;
# Plot only each m-th curve. This makes hi-res arcs appear curved.
m=12;
# The square domain, subdivided
[X,Y]=ndgrid([-pi/2:pi/n:pi/2],[-pi/2:pi/n:pi/2]); Z=X+1i*Y;
# The image
W=tanh(Z);
# Plot image of every m-th line for which real(Z)=const.
# Hint: Specify ";;" to suppress the legend for octave < 2.9.13
plot(real(W(1:m:n+1,:))',imag(W(1:m:n+1,:))',";;");
# Plot image of every m-th line for which imag(Z)=const.
plot(real(W(:,1:m:n+1)),imag(W(:,1:m:n+1)),";;");
print("-dpng", "-mono", "-solid", "-S480,360", "tanh-map.png");

tanh-map

3voto

meiguoren Puntos 114

Para algo como esto

enter image description here

ver Asíntota y también este foro .

Las cuadrículas anteriores se generaron con este asy código:

settings.tex="pdflatex";

import zGridMap;
import math;
size(9cm);

pair f(pair z){return (1+plain.I*sqrt(3))*z;};

picture pic1,pic2,pic3;

zGridMap mp=zGridMap(f,(0,0),(1,1),7,8);

draw(pic1, mp.uGrid,deepgreen+0.4bp);
draw(pic1, mp.vGrid,blue+0.4bp);

add(pic1);

pair a1=(0.5,0.1);
pair a2=(0.25,-0.7);
pair a3=(0.61,0.83);

mp=zGridMap(new pair(pair z){return 2*(z-a1)*(z-a2)*(z-a3);},(0,0),(1,1),20,30);
draw(pic2, mp.uGrid,deepgreen+0.4bp);
draw(pic2, mp.vGrid,blue+0.4bp);

add(shift(2,0)*pic2);

mp=zGridMap(new pair(pair z){return sin(z);},(0,0),(2*pi/3,pi/2),20,30);
draw(pic3, mp.uGrid,deepgreen+0.4bp);
draw(pic3, mp.vGrid,blue+0.4bp);

add(shift(5,0)*pic3);

con la ayuda del zGridMap.asy módulo:

// zGridMap.asy
//
import graph;
typedef pair pairFpair(pair);

struct zGridMap{
  pairFpair fmap;
  pair pMin, pMax;
  int n, m;
  guide[] uGrid;
  guide[] vGrid;

  guide mapLine(pair a, pair b){
    pair mapPoint(real t){return fmap(a*(1-t)+b*t);}
    return graph(mapPoint,0,1);
  }

  void makeWgrid(){
    pair p=pMin,q=pMin;
    real dx=(pMax.x-pMin.x)/(m-1);
    real dy=(pMax.y-pMin.y)/(n-1);
    guide g;
    for(int i=0;i<n;++i){
      uGrid.push(mapLine(p,(p.x+pMax.x-pMin.x,p.y)));  
      p+=(0,dy);
    }
    for(int i=0;i<m;++i){
      vGrid.push(mapLine(q,(q.x,q.y+pMax.y-pMin.y)));  
      q+=(dx,0);
    }
  }

  void operator init(pairFpair fmap, pair pMin, pair pMax, int n, int m=n){
    assert(n>1 && m>1);
    this.fmap=fmap;
    this.pMin=pMin;
    this.pMax=pMax;
    this.n   =n   ;
    this.m   =m   ;
    makeWgrid();
  }
}

3voto

Harry W. Puntos 6

Aquí hay una herramienta en línea que hace esto y mucho más : http://davidbau.com/conformal/#z ¡Traza la imagen de una cuadrícula mediante cualquier función de valor complejo que se especifique, incluso con parámetros ! Esto es impresionante.

1voto

Carlos Roxo Puntos 46

Hace poco empecé a estudiar funciones complejas y descubrí que se puede trazar fácilmente un mapa conforme utilizando https://www.geogebra.org/graphing . Puede ser difícil empezar porque yo tampoco he encontrado la forma de decirle directamente a la máquina que lo que quiero es una función compleja. Lo que empiezo haciendo es escribir esta ecuación z*e^(5,6) ecuación (esto es básicamente para decir que lo que quieres es un mapa conforme, aún no he descubierto por qué funciona). Si no aparece nada en tu gráfico, simplemente haz clic en ese botón blanco a la izquierda de la ecuación Botón blanco . Una vez que has escrito esa ecuación, la máquina está lista para darte tus mapas conformes, ahora puedes escribir algo como 1/z o z^2 o sin(z), y deberían empezar a aparecer mapas como esos: 1/z , z^2 , sin(z)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X