不過這個軟體的知名度沒有Matlab那麼高,在網路上搜尋時大部分找到的資料都是英文或簡體中文的。在經過這陣子的摸索之後,我做出了兩個行進正弦波疊加的動畫,看起來效果還不錯。
2013/7/12
今天再將程式修改了一下,把昨天的圖弄好看一點。另外把函數改成sin(x)*exp(x)及sin(x)*exp(-x),這樣可以更容易看出波的前進方向。
2013/7/13
在無聊的颱風夜裡,我又多做了兩個動畫,兩端皆為節點的駐波、兩端皆為腹點的駐波。我覺得這比波的疊加簡單多了,不需要用loop比較資料找出重疊的地方,只要把函數寫出來然後相加就好。
2013/7/19
今天嘗試做三維繪圖,利用 contourf 及 plot3d 兩個指令畫兩個點波源的干涉圖形,主要是參考 wikipedia 上的圖形(http://en.wikipedia.org/wiki/File:Two_sources_interference.gif),然後改用 Scilab 來製作。
哎呀~
回覆刪除你好,可以請問一下兩端皆為節點的駐波 是怎麼做的嗎?
回覆刪除不好意思,我最近很少看留言。以下是我的程式碼:
刪除clear;xdel(winsid());
//宣告變數及起始值
w=%pi/40;
//t=0;
x=linspace(-2*%pi,2*%pi,200);
//設定繪圖範圍及格式
figure(1);
f=gcf();
f.background=8;
id=f.figure_id;
f_a=gca();
f_a.data_bounds=[-8,-3;8,3];
xgrid(5);
//在 x=-2*%pi 及 x=2*%pi 處加上牆壁
plot([-2*%pi -2*%pi]',[-1.5 1.5]','color',[1 0.8 0],'linewidth',6)
plot([2*%pi 2*%pi]',[-1.5 1.5]','color',[1 0.8 0],'linewidth',6)
//繪製圖片,共40張
for t=1:81
y1=sin(x-w*(t-1));
y2=sin(x+w*(t-1));
y3=y1+y2;
drawlater();
plot(x,y1,color="blue",'linewidth',3);
f_e1=gce();
plot(x,y2,color="green",'linewidth',3);
f_e2=gce();
plot(x,y3,color="magenta",'linewidth',3);
f_e3=gce();
// colorname: magenta洋紅色, cyan淺藍色
drawnow();
sleep(100);
//匯出gif成檔
if(t<10) then
xs2gif(id,'img0'+string(t)+'.gif');
else
xs2gif(id,'img'+string(t)+'.gif');
end;
//將圖上的線段刪除
if(t<81) then
delete(f_e1);
delete(f_e2);
delete(f_e3);
end;
end;