98-2 數值方法期中考

 

一、使用有步幅調適控制的 R-K 方法,於範圍 x = [-6.0, 6.0] 求解常微分方程式 y''(x) + y(x) = 0,並將數值解畫出,初始條件 y(-6.0) = 3.0、y'(-6.0) = 1.0。

 

二、利用射擊法求雙點邊界值問題的微分方式程 y''(x) + y(x) = 0,其 x 的範圍是 [0.0,5.0],而兩個邊界條件則是 y(0.0) = 0.0 與 y(5.0) = 1.0。以 PGPLOT 作圖繪出 y(x) 的圖形。

 

提示一:全域收斂牛頓法需用 newt、lnsrch、fmin、fdjac、ludcmp、lubksb;步幅調控隆巨庫塔法需用 odeint、rkqs、rkck;射擊法需用 shoot。各副程式放置在 /usr/local/N_Recipe 。

提示二:射擊法 shoot.f 中 kmax = 0 要改為 kmax = KMAXX ,或刪除該行直接由主程式定 kmax = KMAXX,才能畫出中間過程。

提示三:用 gfortran 編譯,並以 -L /usr/X11R6/lib -lX11 -L /usr/local/pgplot -lpgplot 來連結繪圖程式庫。其中會有 Warning 警告詢息,它們是無害的,可以用 -w 來關閉所有警告訊息的輸出。

 

 

參考資料:odeint shoot 的副程式課文內容說明,以及 PGPLOT 基本語法

 


 

 

integer pgopen

if (pgopen('/xwin').le.0) stop
call pgpap(6.0,0.75)
call pgenv (x1,x2,y_min,y_max,0,0)
call pgline(kount,xp,yy)
call pgsci(2)
call pgpt(kount,xp,yy,9)
call pgclos