グラフの作り方




グラフを書くにはJavaアプレットを使います。普通のプログラムのことはアプリケーションと言い、HPに載せる画像はアプレットと言います。どうして区別するのか判りませんが、両者は同じJavaでもかなり異なる構造をしています。ですから、アプリケーションとアプレットは別物だと考えたほうが混乱がないと思います。

私は当初、同じJavaなので、アプリケーションとアプレットを同じプログラム内に書こうと思っていましたが、それはどうも無理らしいので、最終的には別にしました。もっと便利なやり方をご存じの方がおられるなら教えていただきたいのですが、ここでは、アプリケーションで動かしたものをデータにして、それをアプレットに移すという作業をすることになります。

Javaをインストールすると、アプレットもアプリケーションも使えるようになります。ただし、書式がまったく異なるので、別々のフォルダにしたほうが便利だと思います。先に「taketa」というフォルダを作りましたが、今回はその隣に「applet」というフォルダを作ったとして解説します。コンソールも別々のほうが便利なので、ふたつ立ち上げることにします。

書き込みに使うアプレット・プログラム名はgraphxy.javaで、自分で作るのは面倒でしょうから、差し上げます。図の大きさや色を変更したい人は、自分で修正するなり、自分で全部作るなりしてください。graphxy.javaも私が名付けたもので、別の名前でも動きます。また、画像を表示するgraphxy.htmlも差し上げます。以下のapplet.lzhに含まれているので、欲しい方はダウンロードしてください。解凍するとデスクトップにフォルダが出来るので、それを適当な場所に移動させてお使いください。


applet.lzhのダウンロード

Mn.javaのダウンロード


そこでまず、taketaソフトを使ってどのようにapplet用のデータを作るかを説明します。taketaに付属しているMn.javaはデータ受け渡しのプログラムがないので、上記のMn.javaをダウンロードします。taketaフォルダ内のMn.javaにすでにプログラムを書き込んでいるなら、それを別名に保存した上で、この新しいMn.javaを上書きして置き換えてください。内容は、先のMn.javaと基本的には同じですが、宣言部分にdoubleの数が付け加えられているのと、終わりのほうに Tk3.fwritedata02(aa,str,10400); という新しい命令が書き込まれているのが目新しいところです。Tk3.fwritedata02( ) はすでにTk3.classの中に含まれているので、動きます。

新しいMn.javaは、すでにデータ用のプログラムが書かれているので、それをそのままtaketaのコンソールで javac Mn.java java Mn を実行します。これで y = x^3-3x^2+2x-1  のx=-5 からx=5 までのデータを得ることができます。taketaフォルダに "data8.txt" というファイルが出来ていますので、それを開けて、「編集」プルダウンの「すべて選択」を選びます。そして上の欄にある「コピー」を選択します。次に、appletフォルダ内のgraphxy.javaを開けます。そのファイルの中程に「dataの書き込み場所」というのがあるので、その続きのところに張り付けます。すでに何かデータが書き込まれているときは、それを消した上で張り付けます。

次に、「dataの書き込み終わり」のあとに続けて書かれている部分に for(nn=-5.0; ... となっている{   }枠があります。この中の ff=bb*32/2-40; が幅を決める部分で、gg=cc*10; が高さを決める部分です。色については、 blue を別の単語に変えると色が変わります。また、幅と高さの数字を変えると、図の大きさや位置が変わります。ですから、ここは各自で調節してください。初期設定は 新しいMn.javaにあう幅・高さになっています。

データを張り付けたら、graphxy.javaを保存して、appletフォルダのコンソールで javac graphxy.java を実行します。そして、同じフォルダ内にあるgraphxy.htmlをクリックしてください。「ブロックされているコンテンツの実行」を許可して、もうひとつの許可をクリックすると、そこにグラフが現れるはずです。

次に、画像が見えるところで、キーボード右上の「PrintScreen」を押して、その後で、スタートボタンから、アクセサリーの中にあるペイントを立ち上げ、命令右上の「選択」ボタンを押して、編集プルダウンの「張り付け」をクリックします。すると、PCで見えた画面がそのままペイントの画像として現れます。あとは必要なところを切り取って、「ファイル」「新規作成」から、「編集」「張り付け」をクリックすると、適当な大きさの画像となります。あとはこれに名前を付けて保存します。

私の解説はここまでです。この画像をどのようにHPに張り付けるかは、HPの趣旨により様々なので、HPの作り方を参照してください。

data001 の図
たとえば、先のデータを画像にしたものは右図のように張り付けることが可能です。綺麗な判りやすい図になるかどうかは、それぞれの腕の見せ所ということですね。

なお、bmp画像をjpgやpngに変更するには画像編集ソフトを使います。いろいろありますが、私の場合、無料主義なのでPixiaを使っています。このソフトは非常に多機能で立派なのですが、bmpをjpgに変更するくらいにしか使わないので、申し訳ない気持ちがします。制作者には感謝するのみです。

(注   bmpをjpgやpngにするのはペイントソフトで可能です。別のソフトはいらないみたいですね。)


複素数のグラフを描くときは、graphxy.javaの後半にある「data書き込み終わり」に続くブロックアウトを元に戻して、青と赤の両方の線が描けるように変更します。Mn.javaにある a[i]=fx[i] から aa[0][p4]=cc; までが青用で、a[i]=gx[i] から aa[1][p4]=cc; までが赤用です。適宜、配列名を変えてご使用ください。

階乗とベルヌーイ数のデータを入れたフォルダをダウンロードする方は、
ここをクリックしてください。


リーマンゼータ関数 k( )を計算するプログラム (kr001.java)

試しに、ゼータ関数 k(s)を複素数で計算した結果をグラフにする作業を解説してみます。上記にあるように、graphxy.javaのブロックアウト部分を元にもとしておいてください。また、実部と虚部の高さを調節する箇所を 「 gg=cc*40; 」 のように書き換えてください。

k(s)を計算するには Tk4.kr(a,b,hx,ex,p3) もしくは Tk4.kr(aw,cw,p3) を使います。ここでは前者を使った事例を解説することにします。hxが実部、exが虚部です。答えは前の部分にあり、実部がa、虚部がb になります。p3が計算精度の深さを示します。通常はp3=8程度にしておきます。Tk4.kr( ) の計算には階乗(dash03)とベルヌーイ数(bernoulli)のdataが必要です。ふたつのフォルダを圧縮したのがdash03.lzhです。まずはこれをダウンロードして、解凍したふたつのフォルダ(dash03, bernoulli)をtaketaの中に起きます。その上でTk4.kr( )を使いますが、Tk4.kr( )自体はすでに Tk4.classの中に含まれています。

Tk4.kr( )を使って、k(0.5+b*i)の値を計算するプログラムをkr001.javaとします。これをダウンロードしてtaketaフォルダの中に入れます。先のMn.javaを別名で保存した後、名前をMn.javaに変更して上書き保存します。このプログラムは、a=0.5のとき、b=0 から b=20 までのk(s)の値を計算します。

kr001 の図
そこで、コンソールを出して、taketaフォルダに移動して、javac Mn.javaと java Mnを実行します。すると、なにやら動いて、kr8.datが出来上がるはずです。これを開けて、すべてコピーし、それをappletフォルダのgraphxy.javaのデータ書き込み覧に張り付けます。そして、もうひとつのコンソールを出して、appletに移動して、javac graphxy.javaを実行して、graphxy.htmlをクリックします。すると、そこにk(s)のグラフが描かれているはずです。実部は青で示され、虚部は赤で描かれています。その結果は右図のようになっているはずです。






表紙に戻る  前のページへ  次のページへ