Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Creating Hue Plots in Pari-GP
I've e-mailed sheldonison, but I'm getting the feeling he's super busy. I've scoured throughout the internet looking for help on this. I asked a question on stackoverflow. And now I'm asking this question here.

How do you plot complex valued functions in Pari-GP? Particularly; I mean, how do you create hue plots using Pari-GP? Is there something stupid I'm missing here?

I've got my Pari-gp code as good as I can get it at this point (there are still some jumps which occur because Pari is always choosing the principal branch; but in limited cases everything is working).

Do I make an array of values and use the colour plot function somehow? I'm fairly confused. I'm just wondering how Sheldon produces his graphs in Pari; and I feel I'm missing something stupid..?

Any help is greatly appreciated...

All of this is reminding me of why I dropped my major from computer science years ago. I god damn hate coding (unless it's theory, of course).

Regards, James
Hi James,

 I don't know at the moment, whether in Sheldon's "" there is also that picture_out routine for creating coloured images for complex coordinates. I remember a similar routine provided by tet-forum member Mike. It takes a matrix of complex values and writes a *.ppm file (some basic graphic-file-format) with rgb-values. File should be findable in appendices of tetration forum.     This is a version from 2010, don't know whether there are updates in the forum available.

Kind regards-


PHP Code:
/* =============================================================================  
** Color graphing system - mike3 - 20.11.10 04:07
** Hi.
** I thought I'd post the code I use to generate the color graphs from Pari/GP.
** Here it is.
** Note: the output is in .PPM format. 
** You'll need something else to convert that to .PNG. (I use GIMP.)
** Also, I might warn you: it takes a LONG time to graph a complex function
** with a significantly complicated calculation procedure, as it must be
** evaluated at every pixel of the graph.
** (updated 12/16/2010 -- program was not all good: 
**   * spurious "func" parameter in MakeGraph and "safetyarg" was missing.)
** ------------------------------------------------------------------------------------------ 
** ============================================================================= */

/* =============================== Code: ==================================================== */
/* Complex function magnitude/phase plotter. */

/* To use:
*     1. Define function to graph as func(z).
*     2. Load this program.
*     3. Execute MakeGraph(width, height, x0, y0, x1, y1, filename) with the parameters given as follows:
*        width, height = width/height of image in pixels
*        x0, y0, x1, y1 = rectangle of complex plane to graph: x0 + y0i in upper-left corner to x1 + y1i in lower-right corner
*        filename = name of file to save as.
* Output is in .PPM format.

/* Color conversion (HSB to RGB). */

HSB2RGB(hsb) = {

      HH floor(6*H)%6;
      F = (6*H) - floor(6*H);
      P B*(S);
      Q B*(- (F*S));
      T B*(- (1-F)*S);

      if(HH == 0, return([BTP]));
      if(HH == 1, return([QBP]));
      if(HH == 2, return([PBT]));
      if(HH == 3, return([PQB]));
      if(HH == 4, return([TPB]));
      if(HH == 5, return([BPQ]));

/* Safe argument. */
safetyarg(z) = if(== 00arg(z));

/* Make graph. */
MakeGraph(widthheightx0y0x1y1filename) = {
      xstep = (x1 x0)/width;
      ystep = (y1 y0)/height;
      write(filename"# "filename);
      write(filenamewidth" "height);

                 xx x0+(xstep*x);
                 yy y0+(ystep*y);
              z xx+yy*I;
              funcvalue func(z);
              mag abs(funcvalue);
              phase safetyarg(funcvalue);
              H phase/(2*Pi);
              S 1/(0.3*log(mag 1));
              B 1/(1.1 5*log(mag 1));
              RGB HSB2RGB([HSB]);
                 Red floor(RGB[1]*255.0);
                 Green floor(RGB[2]*255.0);
                 Blue floor(RGB[3]*255.0);
              write1(filenameRed" "Green" "Blue"  ");
Gottfried Helms, Kassel
Thanks so much, Gottfried! This works perfectly; albeit, it's a little slow.

I'm going to try and make some graphs now.

Regards, James

I don't think this is the same program Sheldon uses, but god damned is this better.

Here's my solution to the Abel equation with multiplier over and :


EDIT: This is about 8 digit precision; it may dip to 4 occasionally, but it hovers around 12; so let's just say 8.

Possibly Related Threads...
Thread Author Replies Views Last Post
  PARI/gp Xorter 14 25,448 07/09/2018, 08:54 AM
Last Post: Xorter
  Pari-TTY - update Gottfried 0 3,690 10/13/2007, 04:02 PM
Last Post: Gottfried

Users browsing this thread: 1 Guest(s)