wolfram mathematica - tabla - Trazar una función compleja en Mathematica
graficar tabla de datos en mathematica (3)
Aquí está mi intento. Elevé un poco la función de color.
ParametricPlot[
(*just need a vis function that will allow x and y to be in the color function*)
{x, y}, {x, -6, 3}, {y, -3, 3},
(*color and mesh functions don''t trigger refinement, so just use a big grid*)
PlotPoints -> 50, MaxRecursion -> 0, Mesh -> 50,
(*turn off scaling so we can do computations with the actual complex values*)
ColorFunctionScaling -> False,
ColorFunction -> (Hue[
(*hue according to argument, with shift so arg(z)==0 is red*)
Rescale[Arg[Zeta[# + I #2]], {-Pi, Pi}, {0, 1} + 0.5], 1,
(*fudge brightness a bit:
0.1 keeps things from getting too dark,
2 forces some actual bright areas*)
Rescale[Log[Abs[Zeta[# + I #2]]], {-Infinity, Infinity}, {0.1, 2}]] &),
(*mesh lines according to magnitude, scaled to avoid the pole at z=1*)
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
(*turn off axes, because I don''t like them with frames*)
Axes -> False
]
No he pensado en una buena forma de hacer que las líneas de malla varíen en color. Lo más probable es que simplemente los genere con ContourPlot
lugar de MeshFunctions
.
¿Cómo puedo hacer un gráfico de Mathematica que copie el comportamiento de complex_plot en Sage? es decir
... toma una función compleja de una variable, y grafica la salida de la función sobre el rango especificado de xrange y yrange como se demuestra a continuación. La magnitud de la salida se indica mediante el brillo (donde el cero es negro y el infinito es blanco) mientras que el argumento está representado por el matiz (siendo el rojo real positivo, y aumentando a través de naranja, amarillo, ... a medida que aumenta el argumento) .
Aquí hay un ejemplo (robado de M. Hampton of Neutral Drifts ) de la función zeta con contornos superpuestos de valor absoluto:
En la página de documentación de Mathematica, Funciones de variables complejas , dice que puede visualizar funciones complejas utilizando ContourPlot
y DensityPlot
"potencialmente coloreado por fase". Pero el problema está en ambos tipos de gráficos, ColorFunction
solo toma una sola variable igual al contorno o densidad en el punto, por lo que parece imposible hacer que coloree la fase / argumento mientras se traza el valor absoluto. Tenga en cuenta que esto no es un problema con Plot3D
donde los 3 parámetros (x,y,z)
pasan a ColorFunction
.
Sé que hay otras maneras de visualizar funciones complejas, como el "buen ejemplo" en los documentos de Plot3D , pero eso no es lo que quiero.
Además, tengo una solución a continuación (que en realidad se ha usado para generar algunos gráficos utilizados en Wikipedia), pero define una función de nivel bastante bajo, y creo que debería ser posible con una función de alto nivel como ContourPlot
o DensityPlot
. ¡No es que esto te impida dar tu enfoque favorito que utiliza una construcción de nivel inferior!
Editar: Hubo algunos buenos artículos de Michael Trott en la revista Mathematica en:
Visualizando las superficies de Riemann de las funciones algebraicas , IIa , IIb , IIc , IId .
Visualizando la demostración de las superficies de Riemann.
Las superficies de Retorno de Riemann (actualizaciones para Mma v6)
Por supuesto, Michael Trott escribió los libros de guía de Mathematica , que contienen muchos gráficos hermosos, ¡pero parece que se han quedado atrás en el programa de lanzamiento acelerado de Mathematica!
Aquí está mi variación sobre la función dada por Axel Boldt quien fue inspirado por Jan Homann . Ambos enlaces a las páginas tienen algunos buenos gráficos.
ComplexGraph[f_, {xmin_, xmax_}, {ymin_, ymax_}, opts:OptionsPattern[]] :=
RegionPlot[True, {x, xmin, xmax}, {y, ymin, ymax}, opts,
PlotPoints -> 100, ColorFunctionScaling -> False,
ColorFunction -> Function[{x, y}, With[{ff = f[x + I y]},
Hue[(2. Pi)^-1 Mod[Arg[ff], 2 Pi], 1, 1 - (1.2 + 10 Log[Abs[ff] + 1])^-1]]]
]
Entonces podemos hacer la trama sin los contornos ejecutando
ComplexGraph[Zeta, {-7, 3}, {-3, 3}]
Podemos agregar contornos copiando Brett usando y mostrando una malla de parcela específica en ComplexGraph:
ComplexGraph[Zeta, {-7, 3}, {-3, 3}, Mesh -> 30,
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
MeshStyle -> {{Thin, Black}, None}, MaxRecursion -> 0]
o al combinarlo con una trama de contorno como
ContourPlot[Abs[Zeta[x + I y]], {x, -7, 3}, {y, -3, 3}, PlotPoints -> 100,
Contours -> Exp@Range[-7, 1, .25], ContourShading -> None];
Show[{ComplexGraph[Zeta, {-7, 3}, {-3, 3}],%}]
No es una respuesta adecuada, por dos razones:
- Esto no es lo que pediste
- Estoy usando desvergonzadamente el código de Brett
De todos modos, para mí lo siguiente es mucho más claro de interpretar (el brillo es ... bueno, solo brillo):
El código de Brett casi intacto:
Plot3D[
Log[Abs[Zeta[x + I y]]], {x, -6, 3}, {y, -3, 3},
(*color and mesh functions don''t trigger refinement,so just use a big grid*)
PlotPoints -> 50, MaxRecursion -> 0,
Mesh -> 50,
(*turn off scaling so we can do computations with the actual complex values*)
ColorFunctionScaling -> False,
ColorFunction -> (Hue[
(*hue according to argument,with shift so arg(z)==0 is red*)
Rescale[Arg[Zeta[# + I #2]], {-Pi, Pi}, {0, 1} + 0.5],
1,(*fudge brightness a bit:
0.1 keeps things from getting too dark,
2 forces some actual bright areas*)
Rescale[Log[Abs[Zeta[# + I #2]]], {-Infinity, Infinity}, {0.1, 2}]] &),
(*mesh lines according to magnitude,scaled to avoid the pole at z=1*)
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
(*turn off axes,because I don''t like them with frames*)
Axes -> False]