# 用gnuplot繪製圓形駐波
> 作者:王一哲
> 日期:2012/4/9
<br />
## 前言
現在出版社都會找各校的老師寫一些專刊,最近看到一篇蠻有趣的文章:
> 徐世昌與徐國誠(2012)。用Excel操縱電子的駐波。**全華TopLine物理專刊**,**5**,1-8。
文章中是利用Excel,用描點的方式把圓形駐波畫出來。於是我就想到之前用過的函數繪圖軟體 **[gnuplot](http://www.gnuplot.info/)**,用它應該也能做到同樣的效果,而且會比描點的方式還方便,今天花了幾個小時終於把它弄出來了。
<br />
## 繪圖方法
首先,我們需要畫出一個圓形,接著在圓周上畫兩個反相的sin波,這兩個函數可寫成
$$
r = R + A \sin(n \theta)
$$
及
$$
r = R - A \sin(n \theta)
$$
以下是我用來繪製圖形的gnuplot檔:
```gnuplot=
# 用來繪製圓形駐波
# Author: 王一哲
# Date: April 9, 2012
reset #恢復預設值
set size square #設定圖形為方形
set key off #不顯示圖例
unset border #不顯示邊框
unset xtics #不顯示x軸
unset ytics #不顯示y軸
set style line 1 linecolor rgb "red" linewidth 2
set style line 2 linecolor rgb "green" linewidth 2
set style line 3 linecolor rgb "blue" linewidth 2
#設定線條顏色及寬度,上一行可用縮寫 lc=linecolor lw=linewidth
#rgb可用的顏色至少有red, green, blue, yellow, gold, purple, sea-green
set style increment user #線條格式採用自訂值
set polar #設定為極坐標繪圖,預設的變數為"t"
n=9 #設定主量子數
R=10 #設定圓半徑
A=R*0.1 #設定圓周上起伏的程度
set title "N=".n #"設定標題為"N=n", n為主量子數
f1(t)=R+A*sin(n*t) #設定在圓周上起伏的函數1
f2(t)=R-A*sin(n*t) #設定在圓周上起伏的函數2,與f1(t)反相
f3(t)=R #圓形
set terminal png #設定輸出格式為png
set output "circle-sw.png" #設定輸出檔名
plot f1(t),f2(t),f3(t)
set terminal svg #設定輸出格式為svg
set output "circle-sw.svg" #設定輸出檔名
plot f1(t),f2(t),f3(t)
```
<br />
若將以上的內容另存為**circle-sw.gp**,接著只要在文字介面中輸入
```shell
gnuplot circle-sw.gp
```
便會自動畫出 **circle-sw.png** 及 **circle-sw.svg** 兩個檔案。以下是我畫出來的圖片
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://1.bp.blogspot.com/-brYG6_URK24/T4Ly1tSGgfI/AAAAAAAAAP0/iqFqMmZ1lZw/s400/circle-sw-1.png">
<div style="text-align:center">n = 1</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://1.bp.blogspot.com/-Czdob7KTKnc/T4Ly2c7q26I/AAAAAAAAAP4/VsoYHqlIZ7Q/s400/circle-sw-2.png">
<div style="text-align:center">n = 2</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://2.bp.blogspot.com/-fYjhE4fRR1M/T4Ly3MYkAqI/AAAAAAAAAQA/oXV5ES8jFXE/s400/circle-sw-3.png">
<div style="text-align:center">n = 3</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://4.bp.blogspot.com/-bDy_UQariRs/T4Ly39_ak3I/AAAAAAAAAQI/aYGd5fSXjRE/s400/circle-sw-4.png">
<div style="text-align:center">n = 4</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://2.bp.blogspot.com/-APWsuH9Q9qQ/T4Ly4mNf1vI/AAAAAAAAAQQ/4opapLy3ntg/s400/circle-sw-5.png">
<div style="text-align:center">n = 5</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://1.bp.blogspot.com/-kPtKabK-OJQ/T4Ly5sqZPiI/AAAAAAAAAQc/U8jr2nWDwT0/s400/circle-sw-6.png">
<div style="text-align:center">n = 6</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://3.bp.blogspot.com/-J6GOPKuK2C8/T4Ly6nWHiJI/AAAAAAAAAQk/GoPCWR99fk0/s400/circle-sw-7.png">
<div style="text-align:center">n = 7</div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://4.bp.blogspot.com/-n6jlBL5Silw/T4Ly8TluSpI/AAAAAAAAAQs/IuGn6MWoPpU/s400/circle-sw-8.png">
<div style="text-align:center">n = 8 </div>
<br />
<img style="display: block; margin-left: auto; margin-right: auto" height="60%" width="60%" src="https://1.bp.blogspot.com/-2Z5bNxMubdk/T4Ly9aLkNGI/AAAAAAAAAQ0/tyUuXV3EiwM/s400/circle-sw-9.png">
<div style="text-align:center">n = 9</div>
<br />
## 延伸閱讀
若對gnuplot有興趣的讀者,可以參考以下幾個網頁
1. gnuplot官方網頁 http://www.gnuplot.info/
2. gnuplot的範例 http://gnuplot.sourceforge.net/demo/
<br />
---
###### tags:`軟體`、`gnuplot`