以下のプログラムは http://nalab.mind.meiji.ac.jp/~mk/labo/howto/glsc-progs/に置いてあります (curl -O http://nalab.mind.meiji.ac.jp/ mk/labo/howto/glsc-progs/draw-graph.c で入手可能)。
1 /* 2 * draw-graph.c -- 1変数関数のグラフを描く 3 * コンパイル: ccmg draw-graph.c 4 */ 5 6 7 #include <stdio.h> 8 #include <math.h> 9 10 #define G_DOUBLE 11 #include <glsc.h> 12 13 double pi; 14 15 int main() 16 { 17 int i, n; 18 double a, b, c, d; 19 double h, x; 20 double f(double); 21 char title[100]; 22 double win_width, win_height, w_margin, h_margin; 23 24 pi = 4 * atan(1.0); 25 26 /* 表示する範囲 [a,b]×[c,d] を決定 */ 27 a = - 10 * pi; b = 10 * pi; c = - 2.0; d = 2.0; 28 29 /* 区間の分割数 n */ 30 n = 200; 31 32 /* GLSC の開始 33 メタファイル名、ウィンドウ・サイズの決定 */ 34 win_width = 200.0; win_height = 200.0; w_margin = 10.0; h_margin = 10.0; 35 g_init("GRAPH", win_width + 2 * w_margin, win_height + 2 * h_margin); 36 37 /* 出力デバイスの決定 */ 38 g_device(G_BOTH); 39 40 /* 座標系の定義: [a,b]×[c,d] という閉領域を表示する */ 41 g_def_scale(0, 42 a, b, c, d, 43 w_margin, h_margin, win_width, win_height); 44 45 /* 線を二種類用意する */ 46 g_def_line(0, G_BLACK, 2, G_LINE_SOLID); 47 g_def_line(1, G_RED, 0, G_LINE_SOLID); 48 49 /* 表示するための文字列の属性を定義する */ 50 g_def_text(0, G_BLACK, 3); 51 52 /* 定義したものを選択する */ 53 g_sel_scale(0); g_sel_line(0); g_sel_text(0); 54 55 /* 座標軸を描く */ 56 g_move(a, 0.0); g_plot(b, 0.0); 57 g_move(0.0, c); g_plot(0.0, d); 58 59 /* タイトルを表示する */ 60 sprintf(title, "Bessel function J0(x) (%g<=x<=%g)", a, b); 61 g_text(20.0, 10.0, title); 62 63 /* 刻み幅 */ 64 h = (b - a) / n; 65 /* グラフを描くための線種の選択 */ 66 g_sel_line(1); 67 /* 折れ線でグラフを描く */ 68 g_move(a, f(a)); 69 for (i = 1; i <= n; i++) { 70 x = a + i * h; 71 g_plot(x, f(x)); 72 } 73 74 /* ユーザーのマウス入力を待つ */ 75 printf("終りました。X の場合はウィンドウをクリックして下さい。\n"); 76 g_sleep(-1.0); 77 /* ウィンドウを閉じる */ 78 g_term(); 79 return 0; 80 } 81 82 double f(double x) 83 { 84 /* 0 次 Bessel 関数 */ 85 return j0(x); 86 }