解答例(PDF)

コンピュータ工学基礎演習 2014
11 連立常微分方程式を解く・解答例
機能創成専攻 生体工学領域 井村 誠孝
[email protected]
講義資料: http://bit.ly/bpe-ecp14
ニューロンの活動
 ニューロンの活動: 入力刺激に反応して活動電位
を発生させ,他の細胞に情報を伝達する.
 活動電位 = 細胞内外の電位差(通常は内部が負)が一時的
に逆転する現象
 Na+およびK+のイオンチャンネルを介した移動によって
生じる
 活動電位のモデル化
 Hodgkin-Huxley model
 1963 ノーベル医学・生理学賞
 FitzHugh-Nagumo model
2014/7/7
Exercises in Computer Programming
2 / 16
講義資料: http://bit.ly/bpe-ecp14
FitzHugh-Nagumo Model
 v3

v′ = c  − + v − w + I (t ) 
 3

w′ =v − bw + a
 v : 膜電位
 w : 隠れた変数
I
ニューロン
v
 I : 外部入力
 a, b, c : パラメータ
 よく使われる値:
=
a 0.7,
=
b 0.8,
=
c 10
2014/7/7
Exercises in Computer Programming
3 / 16
講義資料: http://bit.ly/bpe-ecp14
課題ex11-1
 FitzHugh-Nagumo Model の数値解をルンゲ・クッ
タ法で求めよ.
=
=
=
a 0.7,
b 0.8,
c 10
 パラメータの値:
 tの範囲は0から100までとする.
 結果はファイルにt,v,wを出力し,gnuplotでt-vおよびt-w
のグラフを描いてその挙動を確認せよ.
 外部入力 I (t ) が時間に依存しない一定値 I 0 である
とする.この場合,I 0の値によって出力パターン
が変化する.0から1の間で I 0 を様々に変えて計算
を行い,挙動が変化する閾値を探索せよ.
2014/7/7
Exercises in Computer Programming
4 / 16
講義資料: http://bit.ly/bpe-ecp14
結果1
I0 = 0
I 0 = 0.3
I 0 = 0.5
I 0 = 1.0
t-v
v-w
2014/7/7
Exercises in Computer Programming
5 / 16
講義資料: http://bit.ly/bpe-ecp14
結果2
I 0 = 0.3
2014/7/7
I 0 = 0.33
I 0 = 0.34
Exercises in Computer Programming
I 0 = 0.35
6 / 16
講義資料: http://bit.ly/bpe-ecp14
結果3
I 0 = 0.3323220
2014/7/7
I 0 = 0.3323221
I 0 = 0.3323222
Exercises in Computer Programming
I 0 = 0.3323223
7 / 16
講義資料: http://bit.ly/bpe-ecp14
課題ex11-2
 外部入力 I (t ) として,周期的な入力を与えた場合
の挙動について調べよ.
 正弦波状の入力
 パルス状の入力
 現在の時刻をt,周期をTとした場合,現在の時刻が1周期内のどの
時点であるかは,以下の式で与えられる.
t − t / T  T
 C言語で書くと以下の通り.
t – (int)(t / T) * T
 パラメータが多いので,ある一つのパラメータを変えて
みる(その他は固定する)のがよい.
2014/7/7
Exercises in Computer Programming
8 / 16
講義資料: http://bit.ly/bpe-ecp14
入力のパラメータ(たとえば)
 正弦波の場合: I 0 , A, T
2π t
I (t=
) I 0 + A sin
T
 パルス波の場合: A, T , T1
T1 (< T )
A
T
2014/7/7
Exercises in Computer Programming
9 / 16
講義資料: http://bit.ly/bpe-ecp14
正弦波入力
A = 1.0
2014/7/7
A = 2.0
Exercises in Computer Programming
I (t=
) I 0 + A sin
2π t
T
=
I 0 0,=
T 10
10 / 16
講義資料: http://bit.ly/bpe-ecp14
パルス入力
A = 2.0
周期解
A = 2.09 カオス
A = 2.2
周期解
=
T 2.0,
=
T1 0.45
2014/7/7
Exercises in Computer Programming
11 / 16
その他補足事項
講義資料: http://bit.ly/bpe-ecp14
変数のスコープ
 変数は宣言した場所によって,有効な範囲が違い
ます.
 変数をブロックの先頭({の直後)で宣言した場合
→そのブロックの中でのみ有効
 変数を全ての関数の外側で宣言した場合
→宣言した場所以降のソースコード内で有効
/ 16
講義資料: http://bit.ly/bpe-ecp14
変数のスコープ: 例
a
/* sample.c */
int a;
t
double Func(double t)
r
{
double r;
:
argc,argv
}
int main(int argc, char **argv)
x
{
double x;
y
while (1) {
double y;
:
}
:
}
2014/7/7
Exercises in Computer Programming
14 / 16
講義資料: http://bit.ly/bpe-ecp14
変数のスコープ: 同じ名前を使うと?
/* sample.c */
a1
int a;
double Func(int t)
a2
{
int a;
:
}
int main(int argc, char **argv)
a3
{
int a;
Func(a);
}
2014/7/7
Exercises in Computer Programming
15 / 16
gnuplotが使えない!!
講義資料: http://bit.ly/bpe-ecp14
 インストールしてください:-)
 データファイルが無いと言われる場合
 gnuplotにもカレントディレクトリという概念があるので,
まずデータファイルがあるディレクトリ(フォルダ)に移
動してください.
 フォーマットが変と言われる場合
 「数字 空白 数字 空白 ... 空白 数字 改行」となっている
か確認してください.
2014/7/7
Exercises in Computer Programming
16 / 16