質問編集履歴
9
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,158 +1,69 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ### 前提・実現したいこと
         
     | 
| 
       2 
     | 
    
         
            -
            温度分布の計算のプログラムをディリクレ条件のガウス・ザイデル法を用いて数値計算をし、温度分布のグラフを作成したい。
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            ガウス・ザイデル法を用いて、ある行列の値が収束していくようなプログラムを作成します。(main_01.cを参照)
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            その数値計算を行った後にその行列をdat形式(g-s_result.datを参照)で出力し、gnuplotで温度分布のグラフを描画します。(g-s_method.pltを参照)
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            ### 発生している問題・エラーメッセージ
         
     | 
| 
       9 
     | 
    
         
            -
            現在つまづいていている点として、main_01.cの実行後に出力されるdat形式のファイルをgnuplotでpm3dを用いてsplotしても以下のようにグラフが全く表示されない点です。
         
     | 
| 
       10 
     | 
    
         
            -
            
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            またgnuplot上で以下のエラーが表示されます。
         
     | 
| 
       13 
     | 
    
         
            -
            ```
         
     | 
| 
       14 
     | 
    
         
            -
              Warning: Single isoline (scan) is not enough for a pm3d plot.
         
     | 
| 
       15 
     | 
    
         
            -
                       Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
         
     | 
| 
       16 
     | 
    
         
            -
            ```
         
     | 
| 
       17 
     | 
    
         
            -
            ###追記1
         
     | 
| 
       18 
     | 
    
         
            -
            描画結果1
         
     | 
| 
       19 
     | 
    
         
            -
            
         
     | 
| 
       20 
     | 
    
         
            -
            描画できるようにはなりましたが、直線になってしまいます。
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            ###追記2
         
     | 
| 
       23 
     | 
    
         
            -
            描画結果2
         
     | 
| 
       24 
     | 
    
         
            -
            配列の描画なので`splot 'XXX.dat' matrix`とすれば描画できる。
         
     | 
| 
       25 
     | 
    
         
            -
            
         
     | 
| 
       26 
     | 
    
         
            -
            軸の範囲を0<=x<=2、0<=y<=1にしたいが、描画範囲をそのように指定すると、当然だが範囲が狭まるので正しい表示にはならない。
         
     | 
| 
       27 
     | 
    
         
            -
            軸の範囲が0<=x<=200、0<=y<=100になっているのは配列(行列)サイズがa[100][200]となっているためですが、軸は0<=x<=2、0<=y<=1としなければいけない制約があります。また、格子間隔(離散した間隔)が0.01という制約もあるためa[1/0.01][2/0.01]としております。この配列サイズを維持したまgnuplot上での軸を0<=x<=2、0<=y<=1と表示するにはどうすればよいのでしょうか。 
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            ### 試したこと
         
     | 
| 
       30 
     | 
    
         
            -
            pm3dを用いてグラフが表示されない原因をいろいろとインターネットで調べたところ、出力されるdatファイルに問題があると思います。
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            [参照サイト](http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/faq/faq-j.html#SECTION000510000000000000000)
         
     | 
| 
       33 
     | 
    
         
            -
            このサイトの
         
     | 
| 
       34 
     | 
    
         
            -
            > 3.10 pm3d によるデータファイルの splot で何も表示されません 
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            によるとdatファイルに2つのつながっている線 (孤立線) を分離する空行がないと描画できないとありましたが、今回私が作成しようとしているプログラムで出力されるdatファイルのどのタイミングで空行を入れるのかわかりません。つきましては、プログラムmain_01.cにてdatファイルを出力している箇所に適切な空行を入れる命令をご提示いただけますでしょうか。
         
     | 
| 
       37 
     | 
    
         
            -
            または、main_01.cのアルゴリズムが間違えていましたら、ご指摘いただければ幸いです。
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            かれこれ4時間以上考えたり、インターネットで調べてみましたが解決できませんでした。よろしくお願いいたします。
         
     | 
| 
       40 
     | 
    
         
            -
            ### 該当のソースコード
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            # 
     | 
| 
       53 
     | 
    
         
            -
            # 
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
            	//列番号を挿入
         
     | 
| 
       71 
     | 
    
         
            -
            	double num = 2.0;
         
     | 
| 
       72 
     | 
    
         
            -
            	fprintf(fp1, "%d\t", M);	//一番左上はデータの列数Mを書き込む
         
     | 
| 
       73 
     | 
    
         
            -
            	for (int i = 0; i < M; i++)
         
     | 
| 
       74 
     | 
    
         
            -
            	{
         
     | 
| 
       75 
     | 
    
         
            -
            		fprintf(fp1, "%6.6f\t", num);
         
     | 
| 
       76 
     | 
    
         
            -
            		num -= dt;
         
     | 
| 
       77 
     | 
    
         
            -
            	}
         
     | 
| 
       78 
     | 
    
         
            -
            	fprintf(fp1, "\n");
         
     | 
| 
       79 
     | 
    
         
            -
            	num = 0.0;	//初期化
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
            	//配列を書き込む
         
     | 
| 
       82 
     | 
    
         
            -
            	for (int i = 0; i < N; i++)
         
     | 
| 
       83 
     | 
    
         
            -
            	{
         
     | 
| 
       84 
     | 
    
         
            -
            		num += dt;
         
     | 
| 
       85 
     | 
    
         
            -
            		fprintf(fp1, "%6.6f\t", num);	//行頭に行番号を挿入
         
     | 
| 
       86 
     | 
    
         
            -
            		for (int j = 0; j < M; j++)
         
     | 
| 
       87 
     | 
    
         
            -
            		{
         
     | 
| 
       88 
     | 
    
         
            -
            			fprintf(fp1, "%6.6f\t", a[i][j]);
         
     | 
| 
       89 
     | 
    
         
            -
            		}
         
     | 
| 
       90 
     | 
    
         
            -
            		fprintf(fp1, "\n");	//1行終えたので改行
         
     | 
| 
       91 
     | 
    
         
            -
            	}
         
     | 
| 
       92 
     | 
    
         
            -
            	fclose(fp1);
         
     | 
| 
       93 
     | 
    
         
            -
            	//int tmp_count = 0;
         
     | 
| 
       94 
     | 
    
         
            -
            	//int prev = 0, cur = 0;
         
     | 
| 
       95 
     | 
    
         
            -
            	//double data[3];
         
     | 
| 
       96 
     | 
    
         
            -
            	//for (int i = 1; i < N - 1; i++)
         
     | 
| 
       97 
     | 
    
         
            -
            	//{
         
     | 
| 
       98 
     | 
    
         
            -
            	//	for (int j = 1; j < M - 1; j++)
         
     | 
| 
       99 
     | 
    
         
            -
            	//	{
         
     | 
| 
       100 
     | 
    
         
            -
            	//		data[tmp_count] = a[i][j];
         
     | 
| 
       101 
     | 
    
         
            -
            	//		tmp_count++;
         
     | 
| 
       102 
     | 
    
         
            -
            	//		if (tmp_count == 3)
         
     | 
| 
       103 
     | 
    
         
            -
            	//		{
         
     | 
| 
       104 
     | 
    
         
            -
            	//			// 有効数字の桁数
         
     | 
| 
       105 
     | 
    
         
            -
            	//			cur = (int)(data[0] * 10);
         
     | 
| 
       106 
     | 
    
         
            -
            	//			// 前の行の値と異なる場合は改行を出力
         
     | 
| 
       107 
     | 
    
         
            -
            	//			if (cur != prev) fprintf(fp1, "\n");
         
     | 
| 
       108 
     | 
    
         
            -
            	//			fprintf(fp1, "%6.6f\t%6.6f\t%6.6f\t\n", data[0], data[1], data[2]);
         
     | 
| 
       109 
     | 
    
         
            -
            	//			tmp_count = 0;
         
     | 
| 
       110 
     | 
    
         
            -
            	//			prev = cur;
         
     | 
| 
       111 
     | 
    
         
            -
            	//		}
         
     | 
| 
       112 
     | 
    
         
            -
            	//	}
         
     | 
| 
       113 
     | 
    
         
            -
            	//}
         
     | 
| 
       114 
     | 
    
         
            -
            	//fclose(fp1);
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
            	free(a);
         
     | 
| 
       117 
     | 
    
         
            -
            	free(tmp_a);
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
            	return 0;
         
     | 
| 
       120 
     | 
    
         
            -
            }
         
     | 
| 
       121 
     | 
    
         
            -
            ```
         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
            ```dat
         
     | 
| 
       124 
     | 
    
         
            -
            //文字数overのため省略
         
     | 
| 
       125 
     | 
    
         
            -
            配列列数 0.01 0.02 ・・・
         
     | 
| 
       126 
     | 
    
         
            -
            0.01
         
     | 
| 
       127 
     | 
    
         
            -
            0.02
         
     | 
| 
       128 
     | 
    
         
            -
            ・
         
     | 
| 
       129 
     | 
    
         
            -
            ・
         
     | 
| 
       130 
     | 
    
         
            -
            ・
         
     | 
| 
       131 
     | 
    
         
            -
            ```
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
            ```gnuplot
         
     | 
| 
       134 
     | 
    
         
            -
            cd 'C:\Users\%USERNAME%\Desktop\gnuplot'
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
            set pm3d
         
     | 
| 
       137 
     | 
    
         
            -
            set pm3d map
         
     | 
| 
       138 
     | 
    
         
            -
            set pm3d interpolate 5, 5
         
     | 
| 
       139 
     | 
    
         
            -
            set ticslevel 0
         
     | 
| 
       140 
     | 
    
         
            -
            #set cbrange[0:1]
         
     | 
| 
       141 
     | 
    
         
            -
            #set xrange [0:200]
         
     | 
| 
       142 
     | 
    
         
            -
            #set yrange [100:0]
         
     | 
| 
       143 
     | 
    
         
            -
            set autoscale xfix
         
     | 
| 
       144 
     | 
    
         
            -
            set autoscale yfix
         
     | 
| 
       145 
     | 
    
         
            -
            set yrange [] reverse
         
     | 
| 
       146 
     | 
    
         
            -
            set autoscale cbfix
         
     | 
| 
       147 
     | 
    
         
            -
            set palette defined(0"#00008b",1"#2ca9e1",2"#38b48b",3.5"#ffff00",5"#eb6101",5.3"#c9171e")
         
     | 
| 
       148 
     | 
    
         
            -
            splot 'g-s_result.dat' matrix nonuniform
         
     | 
| 
       149 
     | 
    
         
            -
            ```
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
            ###最終結果
         
     | 
| 
       152 
     | 
    
         
            -
            
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
| 
       155 
     | 
    
         
            -
            以下の環境で実施しております。
         
     | 
| 
       156 
     | 
    
         
            -
            Visual Studio 2019 (C言語の実行環境)
         
     | 
| 
       157 
     | 
    
         
            -
            Visual Studio Code
         
     | 
| 
      
 1 
     | 
    
         
            +
            ### 前提・実現したいこと
         
     | 
| 
      
 2 
     | 
    
         
            +
            温度分布の計算のプログラムをディリクレ条件のガウス・ザイデル法を用いて数値計算をし、温度分布のグラフを作成したい。
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            ガウス・ザイデル法を用いて、ある行列の値が収束していくようなプログラムを作成します。(main_01.cを参照)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            その数値計算を行った後にその行列をdat形式(g-s_result.datを参照)で出力し、gnuplotで温度分布のグラフを描画します。(g-s_method.pltを参照)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ### 発生している問題・エラーメッセージ
         
     | 
| 
      
 9 
     | 
    
         
            +
            現在つまづいていている点として、main_01.cの実行後に出力されるdat形式のファイルをgnuplotでpm3dを用いてsplotしても以下のようにグラフが全く表示されない点です。
         
     | 
| 
      
 10 
     | 
    
         
            +
            
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            またgnuplot上で以下のエラーが表示されます。
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     | 
| 
      
 14 
     | 
    
         
            +
              Warning: Single isoline (scan) is not enough for a pm3d plot.
         
     | 
| 
      
 15 
     | 
    
         
            +
                       Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
         
     | 
| 
      
 16 
     | 
    
         
            +
            ```
         
     | 
| 
      
 17 
     | 
    
         
            +
            ###追記1
         
     | 
| 
      
 18 
     | 
    
         
            +
            描画結果1
         
     | 
| 
      
 19 
     | 
    
         
            +
            
         
     | 
| 
      
 20 
     | 
    
         
            +
            描画できるようにはなりましたが、直線になってしまいます。
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ###追記2
         
     | 
| 
      
 23 
     | 
    
         
            +
            描画結果2
         
     | 
| 
      
 24 
     | 
    
         
            +
            配列の描画なので`splot 'XXX.dat' matrix`とすれば描画できる。
         
     | 
| 
      
 25 
     | 
    
         
            +
            
         
     | 
| 
      
 26 
     | 
    
         
            +
            軸の範囲を0<=x<=2、0<=y<=1にしたいが、描画範囲をそのように指定すると、当然だが範囲が狭まるので正しい表示にはならない。
         
     | 
| 
      
 27 
     | 
    
         
            +
            軸の範囲が0<=x<=200、0<=y<=100になっているのは配列(行列)サイズがa[100][200]となっているためですが、軸は0<=x<=2、0<=y<=1としなければいけない制約があります。また、格子間隔(離散した間隔)が0.01という制約もあるためa[1/0.01][2/0.01]としております。この配列サイズを維持したまgnuplot上での軸を0<=x<=2、0<=y<=1と表示するにはどうすればよいのでしょうか。 
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            ### 試したこと
         
     | 
| 
      
 30 
     | 
    
         
            +
            pm3dを用いてグラフが表示されない原因をいろいろとインターネットで調べたところ、出力されるdatファイルに問題があると思います。
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            [参照サイト](http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/faq/faq-j.html#SECTION000510000000000000000)
         
     | 
| 
      
 33 
     | 
    
         
            +
            このサイトの
         
     | 
| 
      
 34 
     | 
    
         
            +
            > 3.10 pm3d によるデータファイルの splot で何も表示されません 
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            によるとdatファイルに2つのつながっている線 (孤立線) を分離する空行がないと描画できないとありましたが、今回私が作成しようとしているプログラムで出力されるdatファイルのどのタイミングで空行を入れるのかわかりません。つきましては、プログラムmain_01.cにてdatファイルを出力している箇所に適切な空行を入れる命令をご提示いただけますでしょうか。
         
     | 
| 
      
 37 
     | 
    
         
            +
            または、main_01.cのアルゴリズムが間違えていましたら、ご指摘いただければ幸いです。
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            かれこれ4時間以上考えたり、インターネットで調べてみましたが解決できませんでした。よろしくお願いいたします。
         
     | 
| 
      
 40 
     | 
    
         
            +
            ### 該当のソースコード
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            ```gnuplot
         
     | 
| 
      
 45 
     | 
    
         
            +
            cd 'C:\Users\%USERNAME%\Desktop\gnuplot'
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            set pm3d
         
     | 
| 
      
 48 
     | 
    
         
            +
            set pm3d map
         
     | 
| 
      
 49 
     | 
    
         
            +
            set pm3d interpolate 5, 5
         
     | 
| 
      
 50 
     | 
    
         
            +
            set ticslevel 0
         
     | 
| 
      
 51 
     | 
    
         
            +
            #set cbrange[0:1]
         
     | 
| 
      
 52 
     | 
    
         
            +
            #set xrange [0:200]
         
     | 
| 
      
 53 
     | 
    
         
            +
            #set yrange [100:0]
         
     | 
| 
      
 54 
     | 
    
         
            +
            set autoscale xfix
         
     | 
| 
      
 55 
     | 
    
         
            +
            set autoscale yfix
         
     | 
| 
      
 56 
     | 
    
         
            +
            set yrange [] reverse
         
     | 
| 
      
 57 
     | 
    
         
            +
            set autoscale cbfix
         
     | 
| 
      
 58 
     | 
    
         
            +
            set palette defined(0"#00008b",1"#2ca9e1",2"#38b48b",3.5"#ffff00",5"#eb6101",5.3"#c9171e")
         
     | 
| 
      
 59 
     | 
    
         
            +
            splot 'g-s_result.dat' matrix nonuniform
         
     | 
| 
      
 60 
     | 
    
         
            +
            ```
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            ###最終結果
         
     | 
| 
      
 63 
     | 
    
         
            +
            
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
| 
      
 66 
     | 
    
         
            +
            以下の環境で実施しております。
         
     | 
| 
      
 67 
     | 
    
         
            +
            Visual Studio 2019 (C言語の実行環境)
         
     | 
| 
      
 68 
     | 
    
         
            +
            Visual Studio Code
         
     | 
| 
       158 
69 
     | 
    
         
             
            gnuplot 5.4(グラフ描画ソフト)
         
     | 
8
プログラムの修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -57,98 +57,6 @@ 
     | 
|
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
            int main(void)
         
     | 
| 
       59 
59 
     | 
    
         
             
            {
         
     | 
| 
       60 
     | 
    
         
            -
            	//double型の2次元配列 N行M列の行列
         
     | 
| 
       61 
     | 
    
         
            -
            	double** a;
         
     | 
| 
       62 
     | 
    
         
            -
            	a = (double**)malloc(sizeof(double*) * N);
         
     | 
| 
       63 
     | 
    
         
            -
            	for (int i = 0; i < N; i++) {
         
     | 
| 
       64 
     | 
    
         
            -
            		a[i] = (double*)malloc(sizeof(double) * M);
         
     | 
| 
       65 
     | 
    
         
            -
            		//N個の各配列がM個の要素を持つイメージ
         
     | 
| 
       66 
     | 
    
         
            -
            	}
         
     | 
| 
       67 
     | 
    
         
            -
            	double** tmp_a;
         
     | 
| 
       68 
     | 
    
         
            -
            	tmp_a = (double**)malloc(sizeof(double*) * N);
         
     | 
| 
       69 
     | 
    
         
            -
            	for (int i = 0; i < N; i++) {
         
     | 
| 
       70 
     | 
    
         
            -
            		tmp_a[i] = (double*)malloc(sizeof(double) * M);
         
     | 
| 
       71 
     | 
    
         
            -
            		//N個の各配列がM個の要素を持つイメージ
         
     | 
| 
       72 
     | 
    
         
            -
            	}
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
            	//まず、すべての要素を0で初期化
         
     | 
| 
       75 
     | 
    
         
            -
            	for (int i = 0; i < N; i++)
         
     | 
| 
       76 
     | 
    
         
            -
            	{
         
     | 
| 
       77 
     | 
    
         
            -
            		for (int j = 0; j < M; j++)
         
     | 
| 
       78 
     | 
    
         
            -
            		{
         
     | 
| 
       79 
     | 
    
         
            -
            			a[i][j] = 0.0;
         
     | 
| 
       80 
     | 
    
         
            -
            		}
         
     | 
| 
       81 
     | 
    
         
            -
            	}
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
            	//0行目の要素はすべて1で初期化
         
     | 
| 
       84 
     | 
    
         
            -
            	for (int j = 0; j < M; j++)
         
     | 
| 
       85 
     | 
    
         
            -
            	{
         
     | 
| 
       86 
     | 
    
         
            -
            		a[0][j] = 1.0;
         
     | 
| 
       87 
     | 
    
         
            -
            	}
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
            	//1行目からi-1行目までの0列目の要素は-1で初期化
         
     | 
| 
       90 
     | 
    
         
            -
            	for (int i = 1; i < N - 1; i++)
         
     | 
| 
       91 
     | 
    
         
            -
            	{
         
     | 
| 
       92 
     | 
    
         
            -
            		a[i][0] = -1.0;
         
     | 
| 
       93 
     | 
    
         
            -
            	}
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            	//1行目からi-1行目までのj列目の要素は-1で初期化
         
     | 
| 
       96 
     | 
    
         
            -
            	for (int i = 1; i < N - 1; i++)
         
     | 
| 
       97 
     | 
    
         
            -
            	{
         
     | 
| 
       98 
     | 
    
         
            -
            		a[i][M - 1] = -1.0;
         
     | 
| 
       99 
     | 
    
         
            -
            	}
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
            	//i行目の要素はすべて-1で初期化
         
     | 
| 
       102 
     | 
    
         
            -
            	for (int j = 0; j < M; j++)
         
     | 
| 
       103 
     | 
    
         
            -
            	{
         
     | 
| 
       104 
     | 
    
         
            -
            		a[N - 1][j] = -1.0;
         
     | 
| 
       105 
     | 
    
         
            -
            	}
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
            	/*G-S法*/
         
     | 
| 
       109 
     | 
    
         
            -
            	int count = 0;
         
     | 
| 
       110 
     | 
    
         
            -
            	while (count != cycle)
         
     | 
| 
       111 
     | 
    
         
            -
            	{
         
     | 
| 
       112 
     | 
    
         
            -
            		//aの配列の中身をtmp_a配列にコピー
         
     | 
| 
       113 
     | 
    
         
            -
            		for (int i = 0; i < N; i++)
         
     | 
| 
       114 
     | 
    
         
            -
            		{
         
     | 
| 
       115 
     | 
    
         
            -
            			for (int j = 0; j < M; j++)
         
     | 
| 
       116 
     | 
    
         
            -
            			{
         
     | 
| 
       117 
     | 
    
         
            -
            				tmp_a[i][j] = a[i][j];
         
     | 
| 
       118 
     | 
    
         
            -
            			}
         
     | 
| 
       119 
     | 
    
         
            -
            		}
         
     | 
| 
       120 
     | 
    
         
            -
            		//G-S法による計算
         
     | 
| 
       121 
     | 
    
         
            -
            		for (int i = 1; i < N - 1; i++)
         
     | 
| 
       122 
     | 
    
         
            -
            		{
         
     | 
| 
       123 
     | 
    
         
            -
            			for (int j = 1; j < M - 1; j++)
         
     | 
| 
       124 
     | 
    
         
            -
            			{
         
     | 
| 
       125 
     | 
    
         
            -
            				a[i][j] = (a[i - 1][j] + a[i][j + 1] + a[i + 1][j] + a[i][j - 1]) / 4;
         
     | 
| 
       126 
     | 
    
         
            -
            			}
         
     | 
| 
       127 
     | 
    
         
            -
            		}
         
     | 
| 
       128 
     | 
    
         
            -
            		//収束したか否かの判定
         
     | 
| 
       129 
     | 
    
         
            -
            		double error = fabs(a[1][1] - tmp_a[1][1]);
         
     | 
| 
       130 
     | 
    
         
            -
            		double tmp_error = 0.0;
         
     | 
| 
       131 
     | 
    
         
            -
            		double sum_error = 0.0;
         
     | 
| 
       132 
     | 
    
         
            -
            		for (int i = 1; i < N - 1; i++) {
         
     | 
| 
       133 
     | 
    
         
            -
            			for (int j = 1; j < M - 1; j++) {
         
     | 
| 
       134 
     | 
    
         
            -
            				tmp_error = fabs(a[i][j] - tmp_a[i][j]);
         
     | 
| 
       135 
     | 
    
         
            -
            				if (tmp_error > error)
         
     | 
| 
       136 
     | 
    
         
            -
            					error = tmp_error;
         
     | 
| 
       137 
     | 
    
         
            -
            				sum_error += error;
         
     | 
| 
       138 
     | 
    
         
            -
            			}
         
     | 
| 
       139 
     | 
    
         
            -
            		}
         
     | 
| 
       140 
     | 
    
         
            -
            		//errorの合計/N*M<eps
         
     | 
| 
       141 
     | 
    
         
            -
            		error = sum_error / (N * M);
         
     | 
| 
       142 
     | 
    
         
            -
            		if (error < eps)
         
     | 
| 
       143 
     | 
    
         
            -
            		{
         
     | 
| 
       144 
     | 
    
         
            -
            			printf("%dサイクル目で収束\n", count);
         
     | 
| 
       145 
     | 
    
         
            -
            			break;
         
     | 
| 
       146 
     | 
    
         
            -
            		}
         
     | 
| 
       147 
     | 
    
         
            -
            		count++;
         
     | 
| 
       148 
     | 
    
         
            -
            	}
         
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
60 
     | 
    
         
             
            	//datファイルに書き込む
         
     | 
| 
       153 
61 
     | 
    
         
             
            	FILE* fp1;
         
     | 
| 
       154 
62 
     | 
    
         
             
            	double* file1 = "g-s_result.dat";
         
     | 
7
誤字の修正
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -15,12 +15,13 @@ 
     | 
|
| 
       15 
15 
     | 
    
         
             
                       Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
         
     | 
| 
       16 
16 
     | 
    
         
             
            ```
         
     | 
| 
       17 
17 
     | 
    
         
             
            ###追記1
         
     | 
| 
       18 
     | 
    
         
            -
            描画結果
         
     | 
| 
      
 18 
     | 
    
         
            +
            描画結果1
         
     | 
| 
       19 
19 
     | 
    
         
             
            
         
     | 
| 
       20 
20 
     | 
    
         
             
            描画できるようにはなりましたが、直線になってしまいます。
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            ###追記2
         
     | 
| 
       23 
23 
     | 
    
         
             
            描画結果2
         
     | 
| 
      
 24 
     | 
    
         
            +
            配列の描画なので`splot 'XXX.dat' matrix`とすれば描画できる。
         
     | 
| 
       24 
25 
     | 
    
         
             
            
         
     | 
| 
       25 
26 
     | 
    
         
             
            軸の範囲を0<=x<=2、0<=y<=1にしたいが、描画範囲をそのように指定すると、当然だが範囲が狭まるので正しい表示にはならない。
         
     | 
| 
       26 
27 
     | 
    
         
             
            軸の範囲が0<=x<=200、0<=y<=100になっているのは配列(行列)サイズがa[100][200]となっているためですが、軸は0<=x<=2、0<=y<=1としなければいけない制約があります。また、格子間隔(離散した間隔)が0.01という制約もあるためa[1/0.01][2/0.01]としております。この配列サイズを維持したまgnuplot上での軸を0<=x<=2、0<=y<=1と表示するにはどうすればよいのでしょうか。 
         
     | 
6
datの追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -211,6 +211,16 @@ 
     | 
|
| 
       211 
211 
     | 
    
         
             
            }
         
     | 
| 
       212 
212 
     | 
    
         
             
            ```
         
     | 
| 
       213 
213 
     | 
    
         | 
| 
      
 214 
     | 
    
         
            +
            ```dat
         
     | 
| 
      
 215 
     | 
    
         
            +
            //文字数overのため省略
         
     | 
| 
      
 216 
     | 
    
         
            +
            配列列数 0.01 0.02 ・・・
         
     | 
| 
      
 217 
     | 
    
         
            +
            0.01
         
     | 
| 
      
 218 
     | 
    
         
            +
            0.02
         
     | 
| 
      
 219 
     | 
    
         
            +
            ・
         
     | 
| 
      
 220 
     | 
    
         
            +
            ・
         
     | 
| 
      
 221 
     | 
    
         
            +
            ・
         
     | 
| 
      
 222 
     | 
    
         
            +
            ```
         
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
       214 
224 
     | 
    
         
             
            ```gnuplot
         
     | 
| 
       215 
225 
     | 
    
         
             
            cd 'C:\Users\%USERNAME%\Desktop\gnuplot'
         
     | 
| 
       216 
226 
     | 
    
         | 
5
結果の追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -230,8 +230,8 @@ 
     | 
|
| 
       230 
230 
     | 
    
         
             
            ```
         
     | 
| 
       231 
231 
     | 
    
         | 
| 
       232 
232 
     | 
    
         
             
            ###最終結果
         
     | 
| 
      
 233 
     | 
    
         
            +
            
         
     | 
| 
       233 
234 
     | 
    
         | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
235 
     | 
    
         
             
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
| 
       236 
236 
     | 
    
         
             
            以下の環境で実施しております。
         
     | 
| 
       237 
237 
     | 
    
         
             
            Visual Studio 2019 (C言語の実行環境)
         
     | 
4
ソースコードの変更
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,12 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ### 前提・実現したいこと
         
     | 
| 
       2 
2 
     | 
    
         
             
            温度分布の計算のプログラムをディリクレ条件のガウス・ザイデル法を用いて数値計算をし、温度分布のグラフを作成したい。
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            ガウス・ザイデル法を用いて、ある行列の値が収束していくようなプログラムを作成します。(main_01.cを参照)
         
     | 
| 
       5 
     | 
    
         
            -
            
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            その数値計算を行った後にその行列 
     | 
| 
      
 6 
     | 
    
         
            +
            その数値計算を行った後にその行列をdat形式(g-s_result.datを参照)で出力し、gnuplotで温度分布のグラフを描画します。(g-s_method.pltを参照)
         
     | 
| 
       8 
     | 
    
         
            -
            
         
     | 
| 
       9 
     | 
    
         
            -
            このグラフは見本のグラフです。
         
     | 
| 
       10 
7 
     | 
    
         | 
| 
       11 
8 
     | 
    
         
             
            ### 発生している問題・エラーメッセージ
         
     | 
| 
       12 
9 
     | 
    
         
             
            現在つまづいていている点として、main_01.cの実行後に出力されるdat形式のファイルをgnuplotでpm3dを用いてsplotしても以下のようにグラフが全く表示されない点です。
         
     | 
| 
         @@ -161,8 +158,22 @@ 
     | 
|
| 
       161 
158 
     | 
    
         
             
            		return -1;
         
     | 
| 
       162 
159 
     | 
    
         
             
            	}
         
     | 
| 
       163 
160 
     | 
    
         | 
| 
      
 161 
     | 
    
         
            +
            	//列番号を挿入
         
     | 
| 
      
 162 
     | 
    
         
            +
            	double num = 2.0;
         
     | 
| 
      
 163 
     | 
    
         
            +
            	fprintf(fp1, "%d\t", M);	//一番左上はデータの列数Mを書き込む
         
     | 
| 
      
 164 
     | 
    
         
            +
            	for (int i = 0; i < M; i++)
         
     | 
| 
      
 165 
     | 
    
         
            +
            	{
         
     | 
| 
      
 166 
     | 
    
         
            +
            		fprintf(fp1, "%6.6f\t", num);
         
     | 
| 
      
 167 
     | 
    
         
            +
            		num -= dt;
         
     | 
| 
      
 168 
     | 
    
         
            +
            	}
         
     | 
| 
      
 169 
     | 
    
         
            +
            	fprintf(fp1, "\n");
         
     | 
| 
      
 170 
     | 
    
         
            +
            	num = 0.0;	//初期化
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
            	//配列を書き込む
         
     | 
| 
       164 
173 
     | 
    
         
             
            	for (int i = 0; i < N; i++)
         
     | 
| 
       165 
174 
     | 
    
         
             
            	{
         
     | 
| 
      
 175 
     | 
    
         
            +
            		num += dt;
         
     | 
| 
      
 176 
     | 
    
         
            +
            		fprintf(fp1, "%6.6f\t", num);	//行頭に行番号を挿入
         
     | 
| 
       166 
177 
     | 
    
         
             
            		for (int j = 0; j < M; j++)
         
     | 
| 
       167 
178 
     | 
    
         
             
            		{
         
     | 
| 
       168 
179 
     | 
    
         
             
            			fprintf(fp1, "%6.6f\t", a[i][j]);
         
     | 
| 
         @@ -201,21 +212,28 @@ 
     | 
|
| 
       201 
212 
     | 
    
         
             
            ```
         
     | 
| 
       202 
213 
     | 
    
         | 
| 
       203 
214 
     | 
    
         
             
            ```gnuplot
         
     | 
| 
       204 
     | 
    
         
            -
            #g-s_method.plt
         
     | 
| 
       205 
215 
     | 
    
         
             
            cd 'C:\Users\%USERNAME%\Desktop\gnuplot'
         
     | 
| 
       206 
216 
     | 
    
         | 
| 
       207 
217 
     | 
    
         
             
            set pm3d
         
     | 
| 
       208 
218 
     | 
    
         
             
            set pm3d map
         
     | 
| 
       209 
219 
     | 
    
         
             
            set pm3d interpolate 5, 5
         
     | 
| 
       210 
220 
     | 
    
         
             
            set ticslevel 0
         
     | 
| 
       211 
     | 
    
         
            -
            set cbrange[0:1]
         
     | 
| 
      
 221 
     | 
    
         
            +
            #set cbrange[0:1]
         
     | 
| 
       212 
     | 
    
         
            -
            set xrange [0:200]
         
     | 
| 
      
 222 
     | 
    
         
            +
            #set xrange [0:200]
         
     | 
| 
       213 
     | 
    
         
            -
            set yrange [100:0]
         
     | 
| 
      
 223 
     | 
    
         
            +
            #set yrange [100:0]
         
     | 
| 
      
 224 
     | 
    
         
            +
            set autoscale xfix
         
     | 
| 
      
 225 
     | 
    
         
            +
            set autoscale yfix
         
     | 
| 
      
 226 
     | 
    
         
            +
            set yrange [] reverse
         
     | 
| 
      
 227 
     | 
    
         
            +
            set autoscale cbfix
         
     | 
| 
       214 
228 
     | 
    
         
             
            set palette defined(0"#00008b",1"#2ca9e1",2"#38b48b",3.5"#ffff00",5"#eb6101",5.3"#c9171e")
         
     | 
| 
       215 
     | 
    
         
            -
            splot 'g-s_result.dat' matrix
         
     | 
| 
      
 229 
     | 
    
         
            +
            splot 'g-s_result.dat' matrix nonuniform
         
     | 
| 
       216 
230 
     | 
    
         
             
            ```
         
     | 
| 
       217 
231 
     | 
    
         | 
| 
      
 232 
     | 
    
         
            +
            ###最終結果
         
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
       218 
235 
     | 
    
         
             
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
| 
       219 
236 
     | 
    
         
             
            以下の環境で実施しております。
         
     | 
| 
       220 
237 
     | 
    
         
             
            Visual Studio 2019 (C言語の実行環境)
         
     | 
| 
      
 238 
     | 
    
         
            +
            Visual Studio Code
         
     | 
| 
       221 
239 
     | 
    
         
             
            gnuplot 5.4(グラフ描画ソフト)
         
     | 
3
追記2
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -26,6 +26,7 @@ 
     | 
|
| 
       26 
26 
     | 
    
         
             
            描画結果2
         
     | 
| 
       27 
27 
     | 
    
         
             
            
         
     | 
| 
       28 
28 
     | 
    
         
             
            軸の範囲を0<=x<=2、0<=y<=1にしたいが、描画範囲をそのように指定すると、当然だが範囲が狭まるので正しい表示にはならない。
         
     | 
| 
      
 29 
     | 
    
         
            +
            軸の範囲が0<=x<=200、0<=y<=100になっているのは配列(行列)サイズがa[100][200]となっているためですが、軸は0<=x<=2、0<=y<=1としなければいけない制約があります。また、格子間隔(離散した間隔)が0.01という制約もあるためa[1/0.01][2/0.01]としております。この配列サイズを維持したまgnuplot上での軸を0<=x<=2、0<=y<=1と表示するにはどうすればよいのでしょうか。 
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
       30 
31 
     | 
    
         
             
            ### 試したこと
         
     | 
| 
       31 
32 
     | 
    
         
             
            pm3dを用いてグラフが表示されない原因をいろいろとインターネットで調べたところ、出力されるdatファイルに問題があると思います。
         
     | 
2
描画結果の追加、プログラムの更新
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -17,11 +17,16 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
              Warning: Single isoline (scan) is not enough for a pm3d plot.
         
     | 
| 
       18 
18 
     | 
    
         
             
                       Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
         
     | 
| 
       19 
19 
     | 
    
         
             
            ```
         
     | 
| 
       20 
     | 
    
         
            -
            追記
         
     | 
| 
      
 20 
     | 
    
         
            +
            ###追記1
         
     | 
| 
       21 
21 
     | 
    
         
             
            描画結果
         
     | 
| 
       22 
22 
     | 
    
         
             
            
         
     | 
| 
       23 
23 
     | 
    
         
             
            描画できるようにはなりましたが、直線になってしまいます。
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
            ###追記2
         
     | 
| 
      
 26 
     | 
    
         
            +
            描画結果2
         
     | 
| 
      
 27 
     | 
    
         
            +
            
         
     | 
| 
      
 28 
     | 
    
         
            +
            軸の範囲を0<=x<=2、0<=y<=1にしたいが、描画範囲をそのように指定すると、当然だが範囲が狭まるので正しい表示にはならない。
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       25 
30 
     | 
    
         
             
            ### 試したこと
         
     | 
| 
       26 
31 
     | 
    
         
             
            pm3dを用いてグラフが表示されない原因をいろいろとインターネットで調べたところ、出力されるdatファイルに問題があると思います。
         
     | 
| 
       27 
32 
     | 
    
         | 
| 
         @@ -43,10 +48,10 @@ 
     | 
|
| 
       43 
48 
     | 
    
         
             
            #include <stdlib.h>
         
     | 
| 
       44 
49 
     | 
    
         
             
            #include <math.h>
         
     | 
| 
       45 
50 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
            //#define dt (0. 
     | 
| 
      
 51 
     | 
    
         
            +
            //#define dt (0.01)	//格子間隔
         
     | 
| 
       47 
52 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
            #define N ( 
     | 
| 
      
 53 
     | 
    
         
            +
            #define N (100)	// 1/dt
         
     | 
| 
       49 
     | 
    
         
            -
            #define M ( 
     | 
| 
      
 54 
     | 
    
         
            +
            #define M (200)	// 2/dt
         
     | 
| 
       50 
55 
     | 
    
         | 
| 
       51 
56 
     | 
    
         
             
            #define cycle (50000)		//サイクル数
         
     | 
| 
       52 
57 
     | 
    
         
             
            #define eps (pow(10,-12))	//収束判定
         
     | 
| 
         @@ -155,146 +160,58 @@ 
     | 
|
| 
       155 
160 
     | 
    
         
             
            		return -1;
         
     | 
| 
       156 
161 
     | 
    
         
             
            	}
         
     | 
| 
       157 
162 
     | 
    
         | 
| 
       158 
     | 
    
         
            -
            	int tmp_count = 0;
         
     | 
| 
       159 
     | 
    
         
            -
            	for (int i =  
     | 
| 
      
 163 
     | 
    
         
            +
            	for (int i = 0; i < N; i++)
         
     | 
| 
       160 
164 
     | 
    
         
             
            	{
         
     | 
| 
       161 
     | 
    
         
            -
            		for (int j =  
     | 
| 
      
 165 
     | 
    
         
            +
            		for (int j = 0; j < M; j++)
         
     | 
| 
       162 
166 
     | 
    
         
             
            		{
         
     | 
| 
       163 
     | 
    
         
            -
            			fprintf(fp1,"%6.6f\t", a[i][j]);
         
     | 
| 
      
 167 
     | 
    
         
            +
            			fprintf(fp1, "%6.6f\t", a[i][j]);
         
     | 
| 
       164 
     | 
    
         
            -
            			tmp_count++;
         
     | 
| 
       165 
     | 
    
         
            -
            			if (tmp_count == 3)//3つ値を書き込んだら改行
         
     | 
| 
       166 
     | 
    
         
            -
            			{
         
     | 
| 
       167 
     | 
    
         
            -
            				tmp_count = 0;
         
     | 
| 
       168 
     | 
    
         
            -
            				fprintf(fp1,"\n");
         
     | 
| 
       169 
     | 
    
         
            -
            			}
         
     | 
| 
       170 
168 
     | 
    
         
             
            		}
         
     | 
| 
      
 169 
     | 
    
         
            +
            		fprintf(fp1, "\n");	//1行終えたので改行
         
     | 
| 
       171 
170 
     | 
    
         
             
            	}
         
     | 
| 
       172 
171 
     | 
    
         
             
            	fclose(fp1);
         
     | 
| 
      
 172 
     | 
    
         
            +
            	//int tmp_count = 0;
         
     | 
| 
      
 173 
     | 
    
         
            +
            	//int prev = 0, cur = 0;
         
     | 
| 
      
 174 
     | 
    
         
            +
            	//double data[3];
         
     | 
| 
      
 175 
     | 
    
         
            +
            	//for (int i = 1; i < N - 1; i++)
         
     | 
| 
      
 176 
     | 
    
         
            +
            	//{
         
     | 
| 
      
 177 
     | 
    
         
            +
            	//	for (int j = 1; j < M - 1; j++)
         
     | 
| 
      
 178 
     | 
    
         
            +
            	//	{
         
     | 
| 
      
 179 
     | 
    
         
            +
            	//		data[tmp_count] = a[i][j];
         
     | 
| 
      
 180 
     | 
    
         
            +
            	//		tmp_count++;
         
     | 
| 
      
 181 
     | 
    
         
            +
            	//		if (tmp_count == 3)
         
     | 
| 
      
 182 
     | 
    
         
            +
            	//		{
         
     | 
| 
      
 183 
     | 
    
         
            +
            	//			// 有効数字の桁数
         
     | 
| 
      
 184 
     | 
    
         
            +
            	//			cur = (int)(data[0] * 10);
         
     | 
| 
      
 185 
     | 
    
         
            +
            	//			// 前の行の値と異なる場合は改行を出力
         
     | 
| 
      
 186 
     | 
    
         
            +
            	//			if (cur != prev) fprintf(fp1, "\n");
         
     | 
| 
      
 187 
     | 
    
         
            +
            	//			fprintf(fp1, "%6.6f\t%6.6f\t%6.6f\t\n", data[0], data[1], data[2]);
         
     | 
| 
      
 188 
     | 
    
         
            +
            	//			tmp_count = 0;
         
     | 
| 
      
 189 
     | 
    
         
            +
            	//			prev = cur;
         
     | 
| 
      
 190 
     | 
    
         
            +
            	//		}
         
     | 
| 
      
 191 
     | 
    
         
            +
            	//	}
         
     | 
| 
      
 192 
     | 
    
         
            +
            	//}
         
     | 
| 
      
 193 
     | 
    
         
            +
            	//fclose(fp1);
         
     | 
| 
       173 
194 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
195 
     | 
    
         
             
            	free(a);
         
     | 
| 
       176 
196 
     | 
    
         
             
            	free(tmp_a);
         
     | 
| 
       177 
197 
     | 
    
         | 
| 
       178 
198 
     | 
    
         
             
            	return 0;
         
     | 
| 
       179 
199 
     | 
    
         
             
            }
         
     | 
| 
       180 
200 
     | 
    
         
             
            ```
         
     | 
| 
       181 
     | 
    
         
            -
            ```dat
         
     | 
| 
       182 
     | 
    
         
            -
            //g-s_result.dat
         
     | 
| 
       183 
     | 
    
         
            -
            -0.000028	0.395250	0.581139	
         
     | 
| 
       184 
     | 
    
         
            -
            0.682899	0.745610	0.787775	
         
     | 
| 
       185 
     | 
    
         
            -
            0.817980	0.840656	0.858298	
         
     | 
| 
       186 
     | 
    
         
            -
            0.872410	0.883954	0.893570	
         
     | 
| 
       187 
     | 
    
         
            -
            0.901703	0.908670	0.914705	
         
     | 
| 
       188 
     | 
    
         
            -
            0.919982	0.924635	0.928769	
         
     | 
| 
       189 
     | 
    
         
            -
            0.932464	0.935787	0.938791	
         
     | 
| 
       190 
     | 
    
         
            -
            0.941519	0.944008	0.946287	
         
     | 
| 
       191 
     | 
    
         
            -
            0.948382	0.950313	0.952099	
         
     | 
| 
       192 
     | 
    
         
            -
            0.953756	0.955296	0.956732	
         
     | 
| 
       193 
     | 
    
         
            -
            0.958074	0.959330	0.960508	
         
     | 
| 
       194 
     | 
    
         
            -
            0.961616	0.962658	0.963642	
         
     | 
| 
       195 
     | 
    
         
            -
            0.964570	0.965448	0.966280	
         
     | 
| 
       196 
     | 
    
         
            -
            0.967069	0.967818	0.968530	
         
     | 
| 
       197 
     | 
    
         
            -
            0.969208	0.969854	0.970469	
         
     | 
| 
       198 
     | 
    
         
            -
            0.971057	0.971619	0.972156	
         
     | 
| 
       199 
     | 
    
         
            -
            0.972670	0.973163	0.973635	
         
     | 
| 
       200 
     | 
    
         
            -
            0.974088	0.974523	0.974940	
         
     | 
| 
       201 
     | 
    
         
            -
            0.975342	0.975728	0.976100	
         
     | 
| 
       202 
     | 
    
         
            -
            0.976458	0.976803	0.977136	
         
     | 
| 
       203 
     | 
    
         
            -
            0.977457	0.977766	0.978065	
         
     | 
| 
       204 
     | 
    
         
            -
            0.978354	0.978633	0.978903	
         
     | 
| 
       205 
     | 
    
         
            -
            0.979164	0.979417	0.979661	
         
     | 
| 
       206 
     | 
    
         
            -
            0.979898	0.980127	0.980349	
         
     | 
| 
       207 
     | 
    
         
            -
            0.980565	0.980774	0.980976	
         
     | 
| 
       208 
     | 
    
         
            -
            0.981173	0.981364	0.981549	
         
     | 
| 
       209 
     | 
    
         
            -
            0.981729	0.981904	0.982073	
         
     | 
| 
       210 
     | 
    
         
            -
            0.982238	0.982399	0.982555	
         
     | 
| 
       211 
     | 
    
         
            -
            0.982707	0.982854	0.982998	
         
     | 
| 
       212 
     | 
    
         
            -
            0.983137	0.983273	0.983406	
         
     | 
| 
       213 
     | 
    
         
            -
            0.983535	0.983660	0.983783	
         
     | 
| 
       214 
     | 
    
         
            -
            0.983902	0.984018	0.984131	
         
     | 
| 
       215 
     | 
    
         
            -
            0.984241	0.984349	0.984453	
         
     | 
| 
       216 
     | 
    
         
            -
            0.984556	0.984655	0.984752	
         
     | 
| 
       217 
     | 
    
         
            -
            0.984847	0.984940	0.985030	
         
     | 
| 
       218 
     | 
    
         
            -
            0.985118	0.985204	0.985288	
         
     | 
| 
       219 
     | 
    
         
            -
            0.985369	0.985449	0.985527	
         
     | 
| 
       220 
     | 
    
         
            -
            0.985603	0.985678	0.985750	
         
     | 
| 
       221 
     | 
    
         
            -
            0.985821	0.985890	0.985957	
         
     | 
| 
       222 
     | 
    
         
            -
            0.986023	0.986088	0.986150	
         
     | 
| 
       223 
     | 
    
         
            -
            0.986212	0.986272	0.986330	
         
     | 
| 
       224 
     | 
    
         
            -
            0.986387	0.986443	0.986498	
         
     | 
| 
       225 
     | 
    
         
            -
            0.986551	0.986603	0.986653	
         
     | 
| 
       226 
     | 
    
         
            -
            0.986703	0.986751	0.986798	
         
     | 
| 
       227 
     | 
    
         
            -
            0.986844	0.986889	0.986933	
         
     | 
| 
       228 
     | 
    
         
            -
            0.986976	0.987018	0.987059	
         
     | 
| 
       229 
     | 
    
         
            -
            0.987099	0.987137	0.987175	
         
     | 
| 
       230 
     | 
    
         
            -
            0.987212	0.987248	0.987283	
         
     | 
| 
       231 
     | 
    
         
            -
            0.987318	0.987351	0.987384	
         
     | 
| 
       232 
     | 
    
         
            -
            0.987415	0.987446	0.987476	
         
     | 
| 
       233 
     | 
    
         
            -
            0.987506	0.987534	0.987562	
         
     | 
| 
       234 
     | 
    
         
            -
            0.987589	0.987615	0.987640	
         
     | 
| 
       235 
     | 
    
         
            -
            0.987665	0.987689	0.987713	
         
     | 
| 
       236 
     | 
    
         
            -
            0.987735	0.987757	0.987779	
         
     | 
| 
       237 
     | 
    
         
            -
            0.987799	0.987819	0.987839	
         
     | 
| 
       238 
     | 
    
         
            -
            0.987857	0.987875	0.987893	
         
     | 
| 
       239 
     | 
    
         
            -
            0.987910	0.987926	0.987942	
         
     | 
| 
       240 
     | 
    
         
            -
            0.987957	0.987971	0.987985	
         
     | 
| 
       241 
     | 
    
         
            -
            0.987998	0.988011	0.988023	
         
     | 
| 
       242 
     | 
    
         
            -
            0.988035	0.988046	0.988056	
         
     | 
| 
       243 
     | 
    
         
            -
            0.988066	0.988075	0.988084	
         
     | 
| 
       244 
     | 
    
         
            -
            0.988093	0.988100	0.988108	
         
     | 
| 
       245 
     | 
    
         
            -
            0.988114	0.988120	0.988126	
         
     | 
| 
       246 
     | 
    
         
            -
            0.988131	0.988136	0.988140	
         
     | 
| 
       247 
     | 
    
         
            -
            0.988144	0.988147	0.988149	
         
     | 
| 
       248 
     | 
    
         
            -
            0.988151	0.988153	0.988154	
         
     | 
| 
       249 
     | 
    
         
            -
            0.988154	0.988154	0.988154	
         
     | 
| 
       250 
     | 
    
         
            -
            0.988153	0.988151	0.988149	
         
     | 
| 
       251 
     | 
    
         
            -
            0.988147	0.988144	0.988140	
         
     | 
| 
       252 
     | 
    
         
            -
            0.988136	0.988131	0.988126	
         
     | 
| 
       253 
     | 
    
         
            -
            0.988120	0.988114	0.988108	
         
     | 
| 
       254 
     | 
    
         
            -
            0.988100	0.988093	0.988084	
         
     | 
| 
       255 
     | 
    
         
            -
            0.988075	0.988066	0.988056	
         
     | 
| 
       256 
     | 
    
         
            -
            0.988046	0.988035	0.988023	
         
     | 
| 
       257 
     | 
    
         
            -
            0.988011	0.987998	0.987985	
         
     | 
| 
       258 
     | 
    
         
            -
            0.987971	0.987957	0.987941	
         
     | 
| 
       259 
     | 
    
         
            -
            0.987926	0.987910	0.987893	
         
     | 
| 
       260 
     | 
    
         
            -
            0.987875	0.987857	0.987839	
         
     | 
| 
       261 
     | 
    
         
            -
            0.987819	0.987799	0.987779	
         
     | 
| 
       262 
     | 
    
         
            -
            0.987757	0.987735	0.987713	
         
     | 
| 
       263 
     | 
    
         
            -
            0.987689	0.987665	0.987640	
         
     | 
| 
       264 
     | 
    
         
            -
            0.987615	0.987589	0.987562	
         
     | 
| 
       265 
     | 
    
         
            -
            0.987534	0.987506	0.987476	
         
     | 
| 
       266 
     | 
    
         
            -
            0.987446	0.987415	0.987384	
         
     | 
| 
       267 
     | 
    
         
            -
            0.987351	0.987318	0.987283	
         
     | 
| 
       268 
     | 
    
         
            -
            0.987248	0.987212	0.987175	
         
     | 
| 
       269 
     | 
    
         
            -
            0.987137	0.987099	0.987059	
         
     | 
| 
       270 
     | 
    
         
            -
            0.987018	0.986976	0.986933	
         
     | 
| 
       271 
     | 
    
         
            -
            0.986889	0.986844	0.986798	
         
     | 
| 
       272 
     | 
    
         
            -
            0.986751	0.986703	0.986653	
         
     | 
| 
       273 
     | 
    
         
            -
            0.986603	0.986551	0.986498	
         
     | 
| 
       274 
     | 
    
         
            -
            0.986443	0.986387	0.986330	
         
     | 
| 
       275 
     | 
    
         
            -
            0.986272	0.986212	0.986150	
         
     | 
| 
       276 
     | 
    
         
            -
            0.986088	0.986023	0.985957	
         
     | 
| 
       277 
     | 
    
         
            -
            0.985890	0.985821	0.985750	
         
     | 
| 
       278 
     | 
    
         
            -
            0.985678	0.985603	0.985527	
         
     | 
| 
       279 
     | 
    
         
            -
            0.985449	0.985369	0.985288	
         
     | 
| 
       280 
     | 
    
         
            -
            0.985204	0.985118	0.985030	
         
     | 
| 
       281 
     | 
    
         
            -
            0.984940	0.984847	0.984752	
         
     | 
| 
       282 
     | 
    
         
            -
            0.984655	0.984556	0.984453	
         
     | 
| 
       283 
     | 
    
         
            -
            ・・・(つづく)
         
     | 
| 
       284 
     | 
    
         
            -
            ```
         
     | 
| 
       285 
201 
     | 
    
         | 
| 
       286 
     | 
    
         
            -
            ``` 
     | 
| 
      
 202 
     | 
    
         
            +
            ```gnuplot
         
     | 
| 
       287 
203 
     | 
    
         
             
            #g-s_method.plt
         
     | 
| 
       288 
204 
     | 
    
         
             
            cd 'C:\Users\%USERNAME%\Desktop\gnuplot'
         
     | 
| 
       289 
205 
     | 
    
         | 
| 
       290 
206 
     | 
    
         
             
            set pm3d
         
     | 
| 
       291 
207 
     | 
    
         
             
            set pm3d map
         
     | 
| 
      
 208 
     | 
    
         
            +
            set pm3d interpolate 5, 5
         
     | 
| 
       292 
209 
     | 
    
         
             
            set ticslevel 0
         
     | 
| 
       293 
210 
     | 
    
         
             
            set cbrange[0:1]
         
     | 
| 
       294 
     | 
    
         
            -
            set xrange [ 
     | 
| 
      
 211 
     | 
    
         
            +
            set xrange [0:200]
         
     | 
| 
       295 
     | 
    
         
            -
            set yrange [ 
     | 
| 
      
 212 
     | 
    
         
            +
            set yrange [100:0]
         
     | 
| 
       296 
     | 
    
         
            -
            set palette  
     | 
| 
      
 213 
     | 
    
         
            +
            set palette defined(0"#00008b",1"#2ca9e1",2"#38b48b",3.5"#ffff00",5"#eb6101",5.3"#c9171e")
         
     | 
| 
       297 
     | 
    
         
            -
            splot 'g-s_result.dat'  
     | 
| 
      
 214 
     | 
    
         
            +
            splot 'g-s_result.dat' matrix
         
     | 
| 
       298 
215 
     | 
    
         
             
            ```
         
     | 
| 
       299 
216 
     | 
    
         | 
| 
       300 
217 
     | 
    
         
             
            ### 補足情報(FW/ツールのバージョンなど)
         
     | 
1
g-s_metod.pltの更新、描画結果の表示
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -17,6 +17,10 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
              Warning: Single isoline (scan) is not enough for a pm3d plot.
         
     | 
| 
       18 
18 
     | 
    
         
             
                       Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
         
     | 
| 
       19 
19 
     | 
    
         
             
            ```
         
     | 
| 
      
 20 
     | 
    
         
            +
            追記
         
     | 
| 
      
 21 
     | 
    
         
            +
            描画結果
         
     | 
| 
      
 22 
     | 
    
         
            +
            
         
     | 
| 
      
 23 
     | 
    
         
            +
            描画できるようにはなりましたが、直線になってしまいます。
         
     | 
| 
       20 
24 
     | 
    
         | 
| 
       21 
25 
     | 
    
         
             
            ### 試したこと
         
     | 
| 
       22 
26 
     | 
    
         
             
            pm3dを用いてグラフが表示されない原因をいろいろとインターネットで調べたところ、出力されるdatファイルに問題があると思います。
         
     | 
| 
         @@ -286,12 +290,9 @@ 
     | 
|
| 
       286 
290 
     | 
    
         
             
            set pm3d
         
     | 
| 
       287 
291 
     | 
    
         
             
            set pm3d map
         
     | 
| 
       288 
292 
     | 
    
         
             
            set ticslevel 0
         
     | 
| 
       289 
     | 
    
         
            -
            set cbrange[ 
     | 
| 
      
 293 
     | 
    
         
            +
            set cbrange[0:1]
         
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
            #描画のx,y軸は以下の範囲で指定されております
         
     | 
| 
       292 
     | 
    
         
            -
            set xrange [ 
     | 
| 
      
 294 
     | 
    
         
            +
            set xrange [-2:2]
         
     | 
| 
       293 
     | 
    
         
            -
            set yrange [1: 
     | 
| 
      
 295 
     | 
    
         
            +
            set yrange [-1:1]
         
     | 
| 
       294 
     | 
    
         
            -
             
     | 
| 
       295 
296 
     | 
    
         
             
            set palette rgbformulae 15, 5, 7
         
     | 
| 
       296 
297 
     | 
    
         
             
            splot 'g-s_result.dat' with pm3d
         
     | 
| 
       297 
298 
     | 
    
         
             
            ```
         
     |