第二週上課綱要

 

本次電腦模擬實驗課我們要有系統且快速地向大家介紹 Fortran (77) 的一些最基本的指令,有了這些指令大家就可以薦各式各樣的電腦計算程式。我們也會留時間給大家做程式撰寫(用 vi)與編譯的演練,除了Fortran 之外另一個大重點是 pgplot 繪圖副程式庫的詳細介紹與使用示範。

 

FORTRAN 77 入門

 

用 vi 寫 Fortran 程式在 Linux 下編譯的練習:

電腦計算部分

a. 整數從 1 加到 10 並且把答案在螢幕印出

偷看一下參考範例程式

b. 把上題改為向使用者詢問從 1 加到 N 的 N 值,並且把答案在螢幕印出

偷看一下參考範例程式

c. 同上,但把整數從 1 加到 N 的結果寫到檔案

偷看一下參考範例程式

d. 把上述程式的連加部分寫成一個副程式

偷看一下參考範例程式

電腦繪圖(pgplot)部分

e. 呼叫 pgplot 副程式來畫幾個點

偷看一下參考範例程式

f. 呼叫 pgplot 副程式來畫連筆曲/折線

偷看一下參考範例程式

g.呼叫 pgplot 副程式來畫一個圓

偷看一下參考範例程式

h.呼叫 pgplot 副程式來作動畫

偷看一下參考範例程式

 

 

(上課當天的實際進度是到這��)

 

第一個演算法:咖啡冷卻問題

問題:冷卻現象

 

物理量:溫度隨時間而變化的關係,T(t)

 

數學模型:牛頓冷卻定律,溫度變化率與

 

數學問題:一階常微分方程式:知道斜率的話,能推得原函數嗎?

零斜率的原函數是

常數斜率的原函數是

x 一次方斜率的原函數是

 

Eular 演算法:把積分離散化

原函數 y(x) 在 x0 處的斜率值 g(x0) 是

[ y(x0+dx) - y(x0-dx) ] / 2x0,也可寫作

[ y(x0+dx) - y(x) ] / dx (反正 dx 很小)

,因此

y(x0+dx) = y(x0) + g(x0) dx

如果我們定一格 xn 到下一格 xn+1 之間的間格是 dx ,則上式變成

y(xn+1) = y(xn) + g(xn) dx

而這正是 Eular 演算法,告訴我們如何從斜率函數一步步推出原函數。

Eular 副 程式:把現在的 x、y、g、dx 值傳入來獲得 下一個 y 的副程式

subroutine eular (y,x,dx)
real x, y, dx
real slope
slope = 2*x
y = y + slope*dx
end

冷卻係數 r 的設定:如可從實驗所量測到的值來定出?

 

解決問題:求出溫度隨時間的變化 T(t),並回答相關的問題

 

 

演算法的進一步運用:力學中的落體問題

無空氣阻力之自由落體:等加速度運動

 

 

 

示範(下次之實作):多顆粒子的分子動力學模擬