熱門文章

2013年7月11日 星期四

Scilab

最近開始學習使用Scilab,這是一個與Matlab很類似的科學計算軟體,最大的不同之處在於Scilab是免費的自由軟體,而Matlab則是相當貴的商業軟體。以下幾個網站有較為詳細的介紹:
不過這個軟體的知名度沒有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 來製作。


3 則留言:

  1. 你好,可以請問一下兩端皆為節點的駐波 是怎麼做的嗎?

    回覆刪除
    回覆
    1. 不好意思,我最近很少看留言。以下是我的程式碼:

      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;

      刪除