[deepconv/arare/sample]
微分の計算(1)
概要
1 階微分演算ルーチン diff.f90 の動作をテストする.
テストの際の注意点を以下にあげる.
- 微分演算を行った結果得られる関数は, 解析的に微分して得られる関数と一致しているか.
- 繰り返し微分演算を行った時, 関数の形が本来予想される形から平行移動していないか
(例えば, 極大極小となるべき独立変数の値がずれていないか).
テスト結果として元の関数, 微分演算を行った後の関数, 解析的に微分して得られる関数, 誤差(微分演算を行った関数の解析的に微分して得られる関数に対する差)の図を描く.
図は計算領域内のみのものと計算領域外を含むものの2種類を描く.
テスト内容とその結果
fs_dx_fs のテスト (1)
行った操作 |
fs_dx_fs( VelX ) |
元の関数の分布 |
VelX = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 20, z: 20 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
fs_dx_fs のテスト (2)
行った操作 |
fs_dx_fs( VelX ) |
元の関数の分布 |
VelX = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 50, z: 50 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
fs_dx_fs のテスト (3)
行った操作 |
fs_dx_fs( VelX ) |
元の関数の分布 |
VelX = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 100, z: 100 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
sf_dx_sf のテスト (1)
行った操作 |
sf_dx_sf( VelZ ) |
元の関数の分布 |
VelZ = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 20, z: 20 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
sf_dx_sf のテスト (2)
行った操作 |
sf_dx_sf( VelZ ) |
元の関数の分布 |
VelZ = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 50, z: 50 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
sf_dx_sf のテスト (3)
行った操作 |
sf_dx_sf( VelZ ) |
元の関数の分布 |
VelZ = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 100, z: 100 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
ss_dx_ss のテスト (1)
行った操作 |
ss_dx_ss( Exner ) |
元の関数の分布 |
Exner = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 20, z: 20 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
ss_dx_ss のテスト (2)
行った操作 |
ss_dx_ss( Exner ) |
元の関数の分布 |
Exner = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 50, z: 50 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
ss_dx_ss のテスト (3)
行った操作 |
ss_dx_ss( Exner ) |
元の関数の分布 |
Exner = sin(2πx/Lx) |
境界条件 |
x: 周期境界, z:周期境界 |
格子点数 |
x: 100, z: 100 |
結果(計算領域外含む)
|
|
元の関数 |
解析的に微分した関数 |
|
|
微分演算を施した関数 |
誤差 |
Last Update: 2004/10/08 (北守 太一)