
確ãã«ã西æŽã®ç§åŠåºçç©ãããã£ãŠããå€ãã®äººã¯ãçŸããã·ã³ãã«ãªã°ã©ãã£ãã¯ãèŠãŠããŸãããããããããªãæ¹ã®äœäººãã¯ããããã®å°éå®¶ã圌ãã®ããŒã¿ãèŠèŠåããã®ãçåã«æã£ãŠããã§ãããããããŠä»ããŽãŒãžã£ã¹ã§éåžžã«ã·ã³ãã«ãªã°ã©ãäœæããŒã«ããããŸããããã¯ãWindowsãlinuxãandroidãªã©ãã»ãŒãã¹ãŠã®å Žæã«ãããŸããDOSã§ãååšãããšç¢ºä¿¡ããŠããŸããä¿¡é Œæ§ãé«ããã·ã³ãã«ã§ãããã¹ã衚圢åŒã®ããŒã¿ãçŸããã°ã©ãã®åœ¢åŒã§è¡šç€ºã§ããŸãã
ãªãgnuplotïŒ
ç§ã®èšäºãè€æ°ã®LTEã¢ãã ã§ã®åæã¹ããŒããã¹ããããèª¿åæ¯åãããããŒããŠã§ã¢ã©ã³ãã ãã³ããŒãžã§ãã¬ãŒã¿ãŒã®äœæãããã§ã«èªãã§ããå Žåã¯ãçŸããã°ã©ãã«æ°ã¥ãããããããŸããã

ã©ã³ãã çªå·ãžã§ãã¬ãŒã¿ãŒã«é¢ããæçš¿ããã®ã°ã©ã

speetestã¢ãã ã«é¢ããæçš¿ããã®åç
ã°ã©ãã¯ã·ã³ãã«ã§ãã£ãããã§ããgnuplotã®æã䟡å€ã®ããå©ç¹ã¯ãããããããããããããã«ãçããŒã¿ãå«ãããã¹ããã¡ã€ã«ããæ°ã«å ¥ãã®OSïŒOpenWRTïŒã®gnuplotãããã³ãæ°ã«å ¥ãã®ãã¹ããšãã£ã¿ãŒ
äžèŠãããšãgnuplotã¯MSExcelãããããããã«äœ¿çšããã®ãé£ããããã«æããããããããŸããããããããã®ããã«èŠããã ãã§ããšã³ããªã®ãããå€ã¯å°ãé«ããªããŸãïŒããŠã¹ã䜿çšããŠã¯ãªãã¯ããããšã¯ã§ããŸãããããã®ããã¥ã¡ã³ããèªãå¿ èŠããããŸãïŒããå®éã«ã¯ã¯ããã«ç°¡åã§äŸ¿å©ã§ããç§ã¯äžåºŠã¹ã¯ãªãããæžããããããã£ãšäœ¿ã£ãŠããŸããããã¹ãŠãè«ççã§ã¯ãªãExelã§ã°ã©ããããããããããšã¯ãgnuplotãããã¯ããã«å°é£ã§ãããŸããgnuplotã®äž»ãªå©ç¹ã¯ãããã°ã©ã ã«åã蟌ãã§ããŒã¿ããã®å Žã§èŠèŠåã§ããããšã§ãããŸããåé¡ãªãgnuplotã¯ãçµ±èšããŒã¿ã®30ã®ã¬ãã€ãã®ãã¡ã€ã«ããã°ã©ããäœæããŸãããExelã¯åã«ã¯ã©ãã·ã¥ãããããéãããšãã§ããŸããã§ããã
gnuplotã®å©ç¹ã«ã¯ãæšæºã®ããã°ã©ãã³ã°èšèªã®ã³ãŒãã«ç°¡åã«çµ±åã§ãããšããäºå®ãå«ãŸããŸããå€ãã®èšèªçšã®æ¢è£œã®ã©ã€ãã©ãªããããŸããç§ã¯å人çã«phpãšpythonã«åºããããŸããããããã£ãŠãããã°ã©ã ããçŽæ¥ã°ã©ããçæã§ããŸãã
ããšãã°ãç§ã®èŠªåã¯ã圌女ãè«æãæžããŠãããšãã«ãgnuplotãç¿åŸãããšèšããŸãïŒç§ã®ææ¡ã§ïŒãåœŒå¥³ã¯æ±ºããŠæè¡è ã§ã¯ãããŸããããããå€ã«ãããçè§£ããŸããããã®åŸã圌女ã¯ããã§ã®ã¿ãã£ãŒããäœæãã圌女ã®ä»äºã®ã¬ãã«ã¯ãExcelã䜿çšããŠããååã®èæ¯ãšæ¯ã¹ãŠå¥œæçã«ç°ãªãå§ããŸãããç§å人ãšããŠã¯ãç§åŠçç ç©¶ã®è³ªã®é«ããç€ºãææšã¯ãå°éçãªããã°ã©ã ã«ãã£ãŠäœæãããã°ã©ãã§ãã
ãããã£ãŠãgnuplotã¯ã·ã³ãã«ã§ãã¢ã¯ã»ã¹ãããããçŸãããã®ã§ããããã«é²ãã§ã¿ãŸãããã
Gnuplot-ã¢ããªã±ãŒã·ã§ã³
gnuplotãæäœããã«ã¯ãã³ãã³ãã¢ãŒããšã¹ã¯ãªããå®è¡ã¢ãŒãã®2ã€ã®æ¹æ³ããããŸãã 2çªç®ã®ã¢ãŒãã¯æã䟿å©ã§æéãªã®ã§ãããã«äœ¿çšããããšããå§ãããŸãããŸããæ©èœã¯å šãåãã§ãã
ãã ããæåã«ãã³ãã³ãã¢ãŒãã§gnuplotãå®è¡ããŸããã³ãã³ãã©ã€ã³ããããŸãã¯OSã§äœ¿çšå¯èœãªæ¹æ³ã§gnuplotãå®è¡ããŸãããã®èšäºãèªãã§ããæåã®ãã«ãã³ãã³ããããã¬ãŒãã³ã°ãéå§ã§ããŸãã圌女ã¯ãŽãŒãžã£ã¹ãªãã«ãã衚瀺ããããªãã¯ãããããã«é²ããããšãã§ããŸãããã ãããã€ã©ã€ãã«ã€ããŠã¯èª¬æããŸãã
ã°ã©ãã¯ãplotã³ãã³ãã«ãã£ãŠãããããããŸããã³ãã³ããã©ã¡ãŒã¿ãšããŠã颿°ãŸãã¯ããŒã¿ãã¡ã€ã«ã®ååãæå®ã§ããŸãã䜿çšããããŒã¿ã®åããããã®æ¥ç¶æ¹æ³ããããã®è¡šç€ºæ¹æ³ãªã©ãåæ§ã§ãã説æããŸãããã
gnuplot> plot sin(x)

ã³ãã³ããå®è¡ãããšãããã©ã«ãã®çœ²åãä»ãããµã€ã³ã°ã©ãã衚瀺ããããŠã£ã³ããŠãéããŸãããã®ã°ã©ããæ¹åããåæã«ããã€ãã®è¿œå ãªãã·ã§ã³ãèŠã€ããŸãããã
軞ã«çœ²åããŸãããã
set xlabel "X"
暪軞ã®ã©ãã«ãæå®ããŸãã
set ylabel "Y"
瞊軞ã®ã©ãã«ãæå®ããŸãã
ã°ã©ããäœæãããå Žæã瀺ãã°ãªããã远å ããŸãããã
set grid
çžŠè»žã®æ£åŒŠæ³¢ãã°ã©ãã®ç«¯ã«ãããšããäºå®ã奜ãã§ã¯ãªãã®ã§ãã°ã©ããå¶éãããå€ã®å¶éãèšå®ããŸãã
set yrange [-1.1:1.1]
ãããã£ãŠãã°ã©ãã¯æå°å€ã®-1.1ããæå€§å€ã®1.1ãŸã§æç»ãããŸãã
åæ§ã«ãæ£åŒŠæ³¢ã®1ã€ã®åšæã ãã衚瀺ãããããã«ã暪軞ã®ç¯å²ãèšå®ããŸãã
set xrange[-pi:pi]
ãã¹ãŠãFengShuiã«ãªãããã«ãã¹ã±ãžã¥ãŒã«ã«ã¿ã€ãã«ã远å ããå¿ èŠããããŸãã
set title "Gnuplot for habr" font "Helvetica Bold, 20"
ãã©ã³ããšãã®ãµã€ãºãèšå®ã§ããããšã«æ³šæããŠãã ããã䜿çšã§ãããã©ã³ãã«ã€ããŠã¯ãgnuplotã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ãããŠæåŸã«ãã°ã©ãã®ãµã€ã³ã«å ããŠãã³ãµã€ã³ãæããç·çš®ãšè²ãèšå®ããŸãããããŸããå¡äŸã远å ããŸããäœãæããŠããã®ã§ããããã
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
ããã§ã¯ã1ã€ã®ãã£ã³ãã¹ã«èµ€ãšç·ã®2ã€ã®ã°ã©ããæç»ããŸããäžè¬ã«ãç·ïŒç¹ç·ãã¹ãããŒã¯ãå®ç·ïŒãç·å¹ ãè²ã«ã¯å€ãã®ãªãã·ã§ã³ããããŸãããã€ã³ãã®çš®é¡ã ãã§ãªããç§ã®ç®æšã¯ãå¯èœæ§ã®ç¯å²ã瀺ãããšã ãã§ãããã¹ãŠã®ã³ãã³ãã1ã€ã®å±±ã«ãŸãšããŠãé çªã«å®è¡ããŠã¿ãŸãããã以åã®èšå®ããªã»ããããã«ã¯ãresetãšå ¥åããŸãã
reset
set xlabel "X"
set ylabel "Y"
set grid
set yrange [-1.1:1.1]
set xrange[-pi:pi]
set title "Gnuplot for habr" font "Helvetica Bold, 20"
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
ãã®çµæãç§ãã¡ã¯ãŸãã«ãã®ãããªçŸãããæã«å ¥ããŸãã

ç§åŠéèªã«ã¹ã±ãžã¥ãŒã«ãæ²èŒããããšã¯ãã¯ãæ¥ã§ã¯ãããŸããã
ç§ã®åŸã§æ£çŽã«ããããã¹ãŠç¹°ãè¿ããå Žåãã³ããŒããå Žåã§ããæ¯åæåã§å ¥åããããšã¯ãã©ããããããééãã§ã¯ãªãããšã«æ°ã¥ãããããããŸãããããããããã¯æ¢è£œã®ã¹ã¯ãªããã§ããïŒãã£ãŠã¿ããïŒ
exitã³ãã³ãã§ã³ãã³ãã¢ãŒããçµäºãããã¡ã€ã«ãäœæããŸãã
vim testsin.gpi
#! /usr/bin/gnuplot -persist
set xlabel "X"
set ylabel "Y"
set grid
set yrange [-1.1:1.1]
set xrange[-pi:pi]
set title "Gnuplot for habr" font "Helvetica Bold, 20"
plot sin(x) title "sinux" lc rgb "red", cos(x) title "cosinus" lc rgb "green"
å®è¡å¯èœã«ããŠå®è¡ããŸãã
chmod +x testsin.gpi
./testsin.gpi
ãã®çµæããã£ãŒããšåããŠã£ã³ããŠã衚瀺ãããŸããã¿ã€ãã«ã«ã-persistãã远å ããªãå Žåãã¹ã¯ãªããã®å®è¡åŸã«ãŠã£ã³ããŠãèªåçã«éããŸãã
ãã ãããŠã£ã³ããŠãäœæããå¿ èŠã¯ããŸããªãå Žåãå€ãããŠã£ã³ããŠã䜿çšãããšå¿ ããã䟿å©ã§ãããšã¯éããŸããããŸããGUIããªããŠããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœæ¥ã§ããŸããå€ãã®å Žåãã°ã©ãã£ãã¯ãã¡ã€ã«ãåä¿¡ããå¿ èŠããããŸããå人çã«ã¯ããã¹ãã¹ã¯ãªãããã¯ãã«åœ¢åŒã奜ãã§ãããã€ã³ããå€ããšãå質ãæãªãããšãªãã°ã©ãã®ããŸããŸãªéšåãæ¡å€§ã§ããããã§ãããŸããLinuxã®ãã¥ãŒã¢ã¯ããã¹ãã¹ã¯ãªãããã¡ã€ã«ã倿Žããããšãã°ã©ãã§ãŠã£ã³ããŠãèªåçã«æŽæ°ããŸãããããéåžžã«äŸ¿å©ã§ãã
ç»é¢ã§ã¯ãªããã¡ã€ã«ã«ããŒã¿ãåºåããã«ã¯ã端æ«ãåå²ãåœãŠããå¿ èŠããããŸãã
set terminal png size 800, 600
set output "result.png"
ãæ³åã®ãšããããã¡ã€ã«ã®çš®é¡ãšè§£å床ã瀺ããŠããããã¡ã€ã«åã瀺ããŸãããããã®2è¡ãã¹ã¯ãªããã®å é ã«è¿œå ãããšããã®ç»åãçŸåšã®ãã©ã«ããŒã«è¡šç€ºãããŸãã

postscriptã«ä¿åããã«ã¯ã次ã®ã³ãã³ãã䜿çšããå¿ èŠããããŸãã
set terminal postscript eps enhanced color solid
set output "result.ps"
å®éã®ããŒã¿
ã·ããã³ã·ãã¯ç¢ºãã«æãã®ãã¯ãŒã«ã§ãããããã§ãå®éã®ããŒã¿ãæãããšã¯ã¯ããã«è峿·±ãã§ãïŒç§ãèšäºãæžããæè¿ã®ã¿ã¹ã¯ãã€ãŸãé·æéã«ãããã€ã³ã¿ãŒãããé床ã®ã°ã©ãã衚瀺ããããšãæãåºãããŠãã ãããããŒã¿åœ¢åŒã¯ä»¥äžã®ãšããã§ãã
ãªãã¬ãŒã¿ãŒ; ïŒãã¹ã; æ¥ä»; æé; 調æŽ; Mb / sãããŠã³ããŒãããŸããMb / sãã¢ããããŒãããŸããping; Testserver
Rostelecom; 0; 05/21/2020; 09ïŒ56ïŒ00; NAãNA; 3.7877656948451692; 5.231226008184113; 132.227; MaximaTelecomïŒã¢ã¹ã¯ã¯ïŒ[0.12 km]ïŒ132.227 ms
Rostelecom; 1; 05/21/2020; 10ïŒ01ïŒ02; NAãNA; 5.274994541394363; 5.1088572634075815; 127.52; MaximaTelecomïŒã¢ã¹ã¯ã¯ïŒ[0.12 km]ïŒ127.52 ms
Rostelecom; 2; 05.21.2020; 10ïŒ04ïŒ35; NAãNA; 3.61044819424076; 4.624132180211938; 135.456; MaximaTe 0.12 km]ïŒ135.456ããªç§
åºåãæåãšããŠã»ãã³ãã³ãããããšãããããŸããããŠã³ããŒãé床ãæéã«å¿ããã¢ããããŒãé床ã衚瀺ããå¿ èŠããããŸããããã«ãæ¥ä»ãšæå»ã«æ³šæãæããšãç°ãªãåã«è¡šç€ºãããŸããããã§ã¯ãã©ããã£ãŠãããåé¿ãããã説æããŸããã°ã©ããäœæããã¹ã¯ãªãããããã«åŒçšããŸãã
#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "Rostelecom.ps"
#set terminal png size 1024, 768
#set output "Rostelecom.png"
set datafile separator ';'
set grid xtics ytics
set xdata time
set timefmt '%d.%m.%Y;%H:%M:%S'
set ylabel "Speed Mb/s"
set xlabel 'Time'
set title "Rostelecom Speed"
plot "Rostelecom.csv" using 3:6 with lines title "Download", '' using 3:7 with lines title "Upload"
set title "Rostelecom 2 Ping"
set ylabel "Ping ms"
plot "Rostelecom.csv" using 3:8 with lines title "Ping"
ãã¡ã€ã«ã®å é ã«ãpostscriptåºåãã¡ã€ã«ïŒãŸãã¯å¿ èŠã«å¿ããŠpngïŒãèšå®ããŸãã
ããŒã¿ãã¡ã€ã«ã»ãã¬ãŒã¿ãèšå®ããŸã ';' -åºåãæåãèšå®ããŸããããã©ã«ãã§ã¯ãåã¯ã¹ããŒã¹ã§åºåãããŠããŸãããcsvãã¡ã€ã«ã«ã¯å€ãã®åºåããªãã·ã§ã³ããããããããã¹ãŠã䜿çšã§ããã¯ãã§ãã
set grid xtics ytics-ã°ãªãããèšå®ããŸãïŒã°ãªããã¯1ã€ã®è»žã«æ²¿ã£ãŠã®ã¿èšå®ã§ããŸãïŒã
xdataæéãèšå®ããããšã¯éèŠãªãã€ã³ãã§ããX軞äžã§ããŒã¿åœ¢åŒãæéã«ãªããšããäºå®ã«ã€ããŠè©±ããŠããŸãã
set timefmt 'ïŒ dãïŒ mãïŒ Y;ïŒ HïŒïŒ MïŒïŒ S'-æéããŒã¿åœ¢åŒãèšå®ããŸããæé圢åŒã«ã¯ååºåãæåïŒ ";"ïŒãå«ãŸããŠããããã2åã1åãšããŠæ±ããŸãã®ã§ã泚æãã ããã
軞ãšã°ã©ãã®ã©ãã«ãèšå®ããŸããæ¬¡ã«ãã°ã©ããäœæããŸãã
3ïŒ6ã䜿çšããŠãDownloadããšããè¡ã¿ã€ãã«ã§ãRostelecom.csvããããããããã3ïŒ7ãè¡ã¿ã€ãã«ãUploadãã§äœ¿çšããŠã -ããŠã³ããŒãé床ãšã¢ããããŒãé床ã®äž¡æ¹ã1ã€ã®ã°ã©ãã«ããããããŸãã3ïŒ6ã䜿çšãããšããœãŒã¹ããŒã¿ãã¡ã€ã«ã®åçªå·ãäœæãããŸãïŒXïŒYïŒã
次ã«ãåãæ¹æ³ã§pingã°ã©ããããããããŸããçµæã®ã°ã©ãã¯æ¬¡ã®ããã«ãªããŸãã

ããã¯è¿œèšã®ã¹ã¯ãªãŒã³ã·ã§ããã§ããã°ã©ãã®çŽç·ã¯ãããŒã¿ã®ã®ã£ãããããããã§ããããã¯ãããããã®éåžžã«çŸå®çãªäŸã§ãã
ãããŠ3D ???
3Dãå¿ èŠã§ããïŒç§ã¯ããããæã€ïŒ
ç§ã¯é·ãéãã©ã®ãããª3次å ã°ã©ãã£ãã¯ã¹ã®äŸã瀺ãã¹ãããèããŠããŸããããç»åãèŠèŠåããããšä»¥äžã®ããšã¯æãã€ããŸããã§ãããå®éãæ¬è³ªçã«ãç»åã¯3次å ã°ã©ãã§ããããã¯ã»ã«ã®æããã¯z座æšã§ããããã§ã¯ãã¡ãã£ãšããããŒãªã¬ã³ããã¬ã€ããŸãããã
ã¢ã€ã³ã·ã¥ã¿ã€ã³ã®æãæåãªåçãæ®ããŸãã

ãããŠãããããã°ã©ããäœæããŸãããããããè¡ãã«ã¯ããããpgm ASCII圢åŒã«å€æãããã¹ãŠã®ã¹ããŒã¹ãåé€ããŠããã®ãããªåçŽãªã³ãã³ãã§æ°ããè¡ã«çœ®ãæããŸãã
convert Einstein.jpg -compress none pgm:- | tr -s '\012\015' ' ' | tr -s ' ' '\012'> outfile.pgm
ããã§äœãèµ·ãã£ãŠããã®ãããããªã人ã®ããã«ãç§ã¯èª¬æããŸãïŒimagemagicã䜿çšããŠç»åãpgm圢åŒã«å€æããæ¬¡ã«trã䜿çšããŠãã£ãªããžãªã¿ãŒã³ãã¹ããŒã¹ãžã®æ°ããè¡ã«çœ®ãæããæ¬¡ã«ãã¹ãŠã®ã¹ããŒã¹ããã£ãªããžãªã¿ãŒã³ã«çœ®ãæããŠãã¹ãŠãoutfileã«ä¿åããŸãã pgmãé£ãã人ã¯èª°ã§ãgimpã§ãã¡ã€ã«ãéããpgm-ASCIIãšããŠãšã¯ã¹ããŒãã§ããŸãã
ãã®åŸããæ°ã«å ¥ãã®ãšãã£ã¿ãŒ
f = open('outfile.pgm')
for x in range(408):
for y in range(325):
line = f.readline()
print ('%d %d %s' % (x, y, line)),
f.close()
ãããconvert.pyãšããŠä¿åããæ¬¡ãå®è¡ããŸãã
python convert.py > res.txt
ããã§ãres.txtã«ã¯Einsteinã®åº§æšãå«ãŸããŠããŸã...ããŒãããšãããã圌ã®ç»åã®åº§æšã§ãããŸããäžè¬çã«ãããªãã¯ã¢ã€ãã¢ãåŸã:)ã
...
406 317 60
406 318 54
406 319 30
406 320 41
406 321 84
406 322 101
406 323 112
406 324 119
407 0 128
407 1 53
407 2 89
407 3 95
407 4 87
...
ãµã³ãã«ãã¡ã€ã«ã
ãã®çŸãããæ§ç¯ããããã®ã¹ã¯ãªããã¯æ¬¡ã®ããã«ãªããŸãã
#! /usr/bin/gnuplot -persist
#set terminal png size 1024, 768
#set output "result.png"
#set grid xtics ytics
#set terminal postscript eps enhanced color solid
#set output "result.ps"
set title "Albert Einstein"
set palette gray
set hidden3d
set pm3d at bs
set dgrid3d 100,100 qnorm 2
set xlabel "X" font "Helvetica Bold ,18"
set ylabel "Y" rotate by 90 font "Helvetica Bold ,18"
set zlabel "Z" font "Helvetica Bold ,18"
set xrange [0:408]
set yrange [0:325]
set zrange [-256:256]
unset key
splot "./res.txt" with l
ã¹ã¯ãªãããè§£æããåã«ããããç¹°ãè¿ãå Žåã¯ãã³ãã³ãã¢ãŒãã§ã¹ã¯ãªããè¡ãå®è¡ããŠãããŠã¹ã§ãã£ãŒããå転ã§ããããã«ããããšã匷ããå§ãããŸãïŒãã¡ãããèšå®ããã端æ«ãæå®ããã«ïŒããšãŠããã£ãããã§ãïŒ
ãŸããåºåããŒã¿ã¿ã€ããšããŒã¿å¢çãèšå®ããŸããå¢çç·ã¯ç»åã®ãµã€ãºã«å¿ããŠèšå®ãããããã«äžããZè»žã«æ²¿ã£ãŠ256æåã®ééã空ããŠãç»åã®æåœ±ãèŠããããã«ããŸããæ¬¡ã«ãã°ã©ãã®å é ã«ç§»åãã軞ã«ã©ãã«ãä»ããŸãã unset keyã³ãã³ãã䜿çšãã-å¡äŸãç¡å¹ã«ããŸãïŒãã£ãŒãã§ã¯å¿ èŠãããŸããïŒããããŠãããã«æ¬åœã®éæ³ããã£ãŠããïŒ
ãã¬ãããç°è²ã«èšå®-ãã¬ãããèšå®ããŸããããã©ã«ãã®ãŸãŸã«ãããšãã°ã©ãã¯ãµãŒãã«ã€ã¡ãŒãžã£ãŒã®ããã«è²ä»ããããŸããã¹ããããé«ãã»ã©é»è²ã匷ããªããèµ€ãæããªããŸãã
hidden3dãèšå®ãã-æ²é¢ãåŒã£åŒµãïŒç·ãåãé€ãïŒããã«ãçŸããåžé¢ã圢æããŸãã
set pm3d atbs-ã°ãªãã座æšãšè²ã§ããŒã¿ãæç»ãã3DããŒã¿æç»ã¹ã¿ã€ã«ããªã³ã«ããŸããããã¥ã¡ã³ãã§è©³çްãèªãã§ãã ããããã詳现ãªèª¬æã¯èšäºã®ç¯å²ãè¶ ããŠããŸãã
set dgrid3d 100,100 qnorm 2-ã°ãªããã»ã«ã®ãµã€ãºã100x100ã«èšå®ããã»ã«éã®ã¢ã³ããšã€ãªã¢ã·ã³ã°ãèšå®ããŸããå€100x100ã¯ãã§ã«éåžžã«å€§ãããããã°ã©ã ã¯éåžžã«äœéã§ãã qnorm 2ã¯ã¢ã³ããšã€ãªã¢ã·ã³ã°ïŒã»ã«éã®ããŒã¿è£éïŒã§ãã
"./res.txt"ãlã§ãããã-çµæã®ã°ã©ããæç»ããŸãã ãwithlãã¯ãç·ã§ã°ã©ããæãããšãæå³ããŸãããã€ã³ããã°ã©ãã«è¡šç€ºããããããããã¯å°ããªããã¯ã§ãïŒå°ããªãã€ã³ããèšå®ã§ããŸãïŒã
æã¡äžãåŸããã°ããåŸ ã€ãšãå€è§åœ¢ã®ãæµ æµ®ã圫ãããåŸãããŸããèšå®ã詊ããŠãä»ã®ã¬ã³ããªã³ã°ãªãã·ã§ã³ãååŸããŠã¿ãŠãã ããã

å転åŸãç»åã¯ã³ãã³ãã¢ãŒãã«ãªããŸãã
éžè©±ãããã«æãæµ®ãã³ãŸãã
ã¬ãŒãã³åºå ŽãèŠã€ããæ¹æ³ã¯ïŒ
æè²ãåããŠããªã人ã ãããã®è³ªåã«çããŸããã¬ãŒãã³ã®é«ãã«ã¬ãŒãã³ã®å¹ ãæããå¿ èŠããããšããããšã§ãã
æè²ãåãã人ã¯ã衚é¢äžã§ç©åãåãããšãç¥ã£ãŠããŸãã
ããã°ã©ã ã§gnuplotã䜿çšãã
ãã®äŸã¯ãç§ã®ãã€ããŒãªå€æŽãå ããã¹ã¿ãã¯ãªãŒããŒãããŒããåãããŠããŸãã
ãã®ã³ãŒãã¯ããã¹ããã¡ã€ã«ãçæããåžžã«ã°ã©ããåæ§ç¯ããŸããèšäºãç Žããªãããã«ã¹ãã€ã©ãŒã®äžã«ã³ãŒããæ·»ä»ããŸãã
gnuplotã䜿çšãããµã³ãã«Cã³ãŒã
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
float s=10.;
float r=28.;
float b=8.0/3.0;
/* Definimos las funciones */
float f(float x,float y,float z){
return s*(y-x);
}
float g(float x,float y,float z){
return x*(r-z)-y;
}
float h(float x,float y,float z){
return x*y-b*z;
}
FILE *output;
FILE *gp;
int main(){
gp = popen("gnuplot -","w");
output = fopen("lorenzgplot.dat","w");
float t=0.;
float dt=0.01;
float tf=30;
float x=3.;
float y=2.;
float z=0.;
float k1x,k1y,k1z, k2x,k2y,k2z,k3x,k3y,k3z,k4x,k4y,k4z;
fprintf(output,"%f %f %f \n",x,y,z);
fprintf(gp, "splot './lorenzgplot.dat' with lines \n");
/* Ahora Runge Kutta de orden 4 */
while(t<tf){
/* RK4 paso 1 */
k1x = f(x,y,z)*dt;
k1y = g(x,y,z)*dt;
k1z = h(x,y,z)*dt;
/* RK4 paso 2 */
k2x = f(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
k2y = g(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
k2z = h(x+0.5*k1x,y+0.5*k1y,z+0.5*k1z)*dt;
/* RK4 paso 3 */
k3x = f(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
k3y = g(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
k3z = h(x+0.5*k2x,y+0.5*k2y,z+0.5*k2z)*dt;
/* RK4 paso 4 */
k4x = f(x+k3x,y+k3y,z+k3z)*dt;
k4y = g(x+k3x,y+k3y,z+k3z)*dt;
k4z = h(x+k3x,y+k3y,z+k3z)*dt;
/* Actualizamos las variables y el tiempo */
x += (k1x/6.0 + k2x/3.0 + k3x/3.0 + k4x/6.0);
y += (k1y/6.0 + k2y/3.0 + k3y/3.0 + k4y/6.0);
z += (k1z/6.0 + k2z/3.0 + k3z/3.0 + k4z/6.0);
/* finalmente escribimos sobre el archivo */
fprintf(output,"%f %f %f \n",x,y,z);
fflush(output);
usleep(10000);
fprintf(gp, "replot \n");
fflush(gp);
t += dt;
}
fclose(gp);
fclose(output);
return 0;
}
ã³ãŒãã¯éåžžã«ç°¡åã«æ©èœãããã€ããéããŸãã
gp = popen("gnuplot -","w");
ããã¯ãããã°ã©ã å ã§ã®ã¿ã1ã€ã®ã³ãã³ãã®åŸã«å¥ã®ã³ãã³ããæžã蟌ããšãã®bashã®åçŽããŒã«äŒŒãŠããŸããããŒã¿ãlorenzgplot.datãã¡ã€ã«ã«æžã蟌ã¿ãŸããgnuplotã§splotã³ãã³ãã1ååŒã³åºããŸãã
fprintf(gp, "splot './lorenzgplot.dat' with lines \n");
ãããŠãæ°ãããã€ã³ãã远å ãããšãã«ãã°ã©ããåæ§ç¯ããŸãã
fprintf(gp, "replot \n");
ãã®çµæãLorenzAttractorã®éåžžã«åªããäœéæ§é ãåŸãããŸãã以äžã¯ãã»ãŒ10幎åã«å€ãã«ã¡ã©ã§æ®åœ±ãããããªã§ãã®ã§ãããŸãèªããªãã§ãã ããããããªã§éèŠãªããšã¯ãNokiaN800ãªã©ã®å€ãããŒããŠã§ã¢ã§ãã¹ãŠãããŸãæ©èœããããšã§ããé³ãç«ãŠãã«èŠãããšãæãŸããã
replot ã³ãã³ãã¯ã¡ã¢ãªãšããã»ããµæéãéåžžã«ããæ¶è²»ããããšãçè§£ããããšãéèŠã§ããã€ãŸãããã®ãããªããããã¯ã·ã¹ãã ã®é床ãããã»ã©äœäžãããŸããããããã£ãŠãgnuplotã倧奜ããªãããããã¯æè¯ã®äœ¿ç𿹿³ã§ã¯ãããŸããããã1ã€ã®åé¡ã¯ããã®ãŠã£ã³ããŠãéãããç§»åãããã§ããªãããšã§ãã
çµè«
æåŸã«ãæŸå°æ§ç²åã®ç»é²ã®ã©ã³ãã ãªå¯Ÿæ°ååžã®äœçŸãã®ã°ã©ãã1ã€ã®ç ç©¶ããã®å®éã®ããŒã¿ãåéãããããªã瀺ããããšæããŸãããããªã¯é³å£°ã§èŠèŽã§ããèŠèŽããå¿ èŠããããŸãã
ãã®èšäºã§ã¯ãèªè ã«ãã®ããã°ã©ã ãå°ãçè§£ããããšãé€ããŠããã®ãããã¿ã®æ©èœã®1000åã®1ã®éšåããããããŸããã§ãããæ¬¡ã«ãèªåã§äŸãæ¢ããå ¬åŒWebãµã€ãgnuplot.sourceforge.netãŸãã¯www.gnuplot.infoã®ããã¥ã¡ã³ããèªãå¿ èŠããããŸããå¿ ãäŸãèŠãŠãã ãããé¢çœããŠäŸ¿å©ãªãã®ããããããããŸãã
ãŸããgnuplotïŒrusïŒã®ç°¡åãªç޹ä»ããå§ãããŸãããã®ãããªçŽ æŽãããããã°ã©ã ãããã¹ãŠã®å·¥ç§å€§åŠã§ã©ããã¯ã¹ãšåçã«ç ç©¶ãããŠããããã§ã¯ãªãããšã«å¿ããé©ããŠããŸããã©ãããããããMSExcelãšWordãåŠã³ãŸããã
gnuplotãåŠã¶ããšã¯é£ãããããŸãããç§ã¯ãããæåããçè§£ããããšæåéãæ°æ¥ãè²»ãããŸããããããããã®èšäºã§ã¯ããã¹ãŠãããªãã«ãšã£ãŠããéããªããšç§ã¯ä¿¡ããŠããŸããä»ãç§ã¯Exel / Calcãããã¿ãŒãå¿ããŠããŸããgnuplotã®ã¿ã䜿çšããŠããŸããããã«ãç§ã¯ã°ã©ããããããããå¯èœæ§ã®10åã®1ããç¥ããŸããã
ç¹ã«ããªãå€ãã®ã§ãgnuplotããæªããªãä»ã®å€ãã®ãããã¿ãŒãããããšã«æ³šæããããšæããŸããããããç§ã«ãšã£ãŠgnuplotã¯ãæãåçŽã§æãå æ¬çãªãã®ã§ããããšãããããŸãããããã«ãããã¯æãäžè¬çãªãããã¿ã§ãããWebäžã§ã®äœ¿çšäŸã¯æ°å€ããããŸããèªãã§ãããŠããããšãïŒ
