今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講?

Similar documents
本日の目標 パターンを作る セル オートマトン ライフゲーム

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

cp-7. 配列

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

スライド 1

PowerPoint Presentation

Microsoft PowerPoint - 第3回目.ppt [互換モード]

kiso2-09.key

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

memo

PowerPoint プレゼンテーション

講習No.9

解析力学B - 第11回: 正準変換

プログラミング基礎

プログラミング基礎

計算機シミュレーション

Microsoft Word - no02.doc

Microsoft Word - NumericalComputation.docx

PowerPoint Presentation

PowerPoint Presentation

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要

スライド 1

板バネの元は固定にします x[0] は常に0です : > x[0]:=t->0; (1.2) 初期値の設定をします 以降 for 文処理のため 空集合を生成しておきます : > init:={}: 30 番目 ( 端 ) 以外については 初期高さおよび初速は全て 0 にします 初期高さを x[j]

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 計算機言語 第7回.ppt

スライド 1

Taro-ファイル処理(公開版).jtd

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

大気環境シミュレーション

第9回 配列(array)型の変数

情報処理演習 B8クラス

enshu5_6.key

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

memo

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

PowerPoint プレゼンテーション

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - prog04.ppt

Taro-ポインタ変数Ⅰ(公開版).j

スライド 1

C言語講座 ~ファイル入出力編~

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

プログラミング基礎

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - prog06.ppt

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

02: 変数と標準入出力

格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して

PowerPoint Presentation

PowerPoint プレゼンテーション - 物理学情報処理演習

02: 変数と標準入出力

Microsoft Word - Cプログラミング演習(12)

ゲームエンジンの構成要素

Microsoft PowerPoint - adi05.ppt [互換モード]

プログラミング基礎

Microsoft Word - Cプログラミング演習(10)

printf("5つの整数を入力して下さい \n"); /* データ入力 */ for( /*** 02 ***/ ){ printf("%dつ目の入力 :",i+1); scanf("%d", /*** 03 ***/ ); sum=dat[0]; /* 合計値の初期設定 */ n_max= 0

PowerPoint プレゼンテーション

プログラミング基礎

Microsoft PowerPoint - lec10.ppt

Taro-再帰関数Ⅲ(公開版).jtd

スライド 1

以下 変数の上のドットは時間に関する微分を表わしている (ex. 2 dx d x x, x 2 dt dt ) 付録 E 非線形微分方程式の平衡点の安定性解析 E-1) 非線形方程式の線形近似特に言及してこなかったが これまでは線形微分方程式 ( x や x, x などがすべて 1 次で なおかつ

Taro-リストⅠ(公開版).jtd

PowerPoint プレゼンテーション

FEM原理講座 (サンプルテキスト)

講習No.8

Microsoft PowerPoint - kougi7.ppt

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

NS NS Scalar turbulence 5 6 FEM NS Mesh (A )

演習課題No12

Taro-最大値探索法の開発(公開版

スライド 1

パソコンシミュレータの現状

Microsoft Word - 3new.doc

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Microsoft PowerPoint - guidance.ppt

8 / 0 1 i++ i 1 i-- i C !!! C 2

Microsoft PowerPoint - prog03.ppt

Taro-スタック(公開版).jtd

02: 変数と標準入出力

講習No.10

Microsoft PowerPoint - 夏の学校(CFD).pptx

デジタル表現論・第6回

CプログラミングI

PowerPoint プレゼンテーション

JavaプログラミングⅠ

プログラミング実習I

Microsoft PowerPoint - kougi6.ppt

Microsoft PowerPoint - H21生物計算化学2.ppt

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

フローチャートの書き方

‚æ2›ñ C„¾„ê‡Ìš|

Transcription:

今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講?

数理生物学演習 第 11 回パターン形成

本日の目標 2 次元配列 分子の拡散 反応拡散モデル チューリングパタン

拡散方程式 拡散方程式 u t = D 2 u 拡散が生じる分子などの挙動を記述する. 集団遺伝学で出てくることも. 復習 空間微分演算子 ( ナブラ ) = x 1, x 2,, x n スカラー量 ( 例えば拡散性分子の濃度 ) の勾配 grad u = u = u x 1 e 1 + u x 2 e 2 + + u x n e n e i ( 単位ベクトル )

反応拡散モデル ギーラー マインハルト系 活性化因子 アクチベータ 抑制因子 インヒビター u t = D u 2 u + u2 v u v t = D v 2 v + u 2 v u 活性化因子 アクチベータ v 抑制因子 インヒビター 仮定 u と v は共に拡散する u は自己活性化する u は v の合成を促進する v は u の合成を抑制する

チューリングパタン ほぼ一様な構造のない状態から, 自発的に空間パタンがうまれる 近藤滋 Web ページより h0p://www.5s.osaka- u.ac.jp/labs/skondo/ M/Y/D/S 動物のイラスト集 より

有限差分法による離散化 時間方向への離散化は これまで通りオイラー法を使う 差分商により微分を近似することで, 微分方程式を離散化する方法 差分を刻み幅で割ったもの ある関数 u(x, y) を2 次元空間上で離散化する. " u% u i, j =u(x i, y j ), (x i, y j ) でのuのx 方向への偏微分を $ ',x 方向への刻み幅をΔxとすれば, # x & i 前進差分による近似 " $ # u x % ' & i = u i+1, j u i, j Δx 後退差分による近似 " $ # u x オイラー法と同じ % ' & i = u i, j u i 1, j Δx 中心差分による近似 " $ # u x % ' & i = u i+1, j u i 1, j 2Δx 2 階の中心差分による 2 階偏微分の近似 " 2 u % $ ' # x 2 & i = u i+1, j 2u i, j + u i 1, j Δx 2 y 方向へも同様に考えれば良し!

拡散方程式の離散化 有限差分法による離散化 時間方向の離散化 前進差分により近似 いつものオイラー法 y u i, j+1 t 空間方向の離散化 2 階の中心差分により近似 u i-1, j u i, j u i+1, j u t = D 2 u u i, j-1 u i, j+1 u i-1, j u i, j u i+1, j x 離散化 u i, j,t+δt = u i, j,t + Δt h 2 h: 空間の刻み幅 u i, j-1 ( ) D u i 1, j,t + u i+1, j,t + u i, j 1,t + u i, j+1,t 4u i, j,t x

情報処理センター講義室へ移動!

配列 同じ型をもつ変数のリスト たくさんの変数を個別に宣言するのは面倒! 型配列名 [ 配列サイズ ]; 型配列 1[ サイズ ], 配列 2[ サイズ ],, 配列 n[ サイズ ]; 11-1. 配列 #include <stdio.h> int main(void){ int i; int a[10]; 配列のなかのそれぞれの変数を 配列要素という a[0], a[1],, a[9] 配列 for(i=0;i<10;i++){ a[i]=i; i 番目の要素にiを代入 配列要素 for(i=0;i<10;i++){ printf("%d\n",a[i]); return 0; 各要素は添字によりアクセスする 特に注意!! 添字は 0 から始まり,( サイズ -1) で終わる int a[10]; で定義したならば, a[0] a[9] までの要素が存在する

2 次元配列 型配列名 [ 配列サイズ ][ 配列サイズ ]; 型配列 1[ サイズ ][ サイズ ], 配列 2[ サイズ ][ サイズ ],, 配列 n[ サイズ ][ サイズ ]; a[0][0], a[0][1],, a[0][n] a[1][0], a[1][1],, a[1][n] a[2][0], a[2][1],, a[2][n] a[m][0], a[m][1],, a[m][n] 添字 2, 1 の 配列要素 2 次元配列 11-2. 2 次元配列 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ int i,j; int a[10][10]; srand(time(null)); for(i=0;i<10;i++){ for(j=0;j<10;j++){ a[i][j]=rand()%10; for(i=0;i<10;i++){ for(j=0;j<10;j++){ printf("%d",a[i][j]); if(j!=9){ printf(", "); printf("\n"); 基本は 1 次元の場合と同じ. より多次元の配列も定義できます! return 0;

拡散方程式の離散化 有限差分法による離散化 時間方向の離散化 前進差分により近似 いつものオイラー法 y u i, j+1 t 空間方向の離散化 2 階の中心差分により近似 u i-1, j u i, j u i+1, j u t = D 2 u u i, j-1 u i, j+1 u i-1, j u i, j u i+1, j x 離散化 u i, j,t+δt = u i, j,t + Δt h 2 h: 空間の刻み幅 u i, j-1 ( ) D u i 1, j,t + u i+1, j,t + u i, j 1,t + u i, j+1,t 4u i, j,t x

周期境界条件 端 同士が張り合わされていると考える. プログラムを組むときも, この部分の処理は注意!

11-3. 2 次元の拡散方程式 #include <stdio.h> int main(void){ int i,j; int t; double dt=0.01; double u[50][50]; double utemp[50][50]; double D=0.2; FILE *fp; fp=fopen( 11-3.txt","w"); // 初期化 for(i=0;i<50;i++){ for(j=0;j<50;j++){ u[i][j]=0; u[24][24]=1; u[24][25]=1; u[25][24]=1; u[25][25]=1; // 初期値出力 for(i=0;i<50;i++){ for(j=0;j<50;j++){ fprintf(fp,"%f",u[i][j]); if(j!=49){ fprintf(fp, "); fprintf(fp,"\n"); for(t=1;t<1000;t++){ // 境界条件 //i=0,j=0 i=0; j=0; utemp[i][j]=u[i][j]+dt*(d*(u[49][j] +u[i+1][j]+u[i][49]+u[i][j+1]- 4*u[i] [j])); //i=0,j=49 i=0; j=49; utemp[i][j]=u[i][j]+dt*(d*(u[49][j] +u[i+1][j]+u[i][j- 1]+u[i][0]- 4*u[i][j])); //i=49,j=0 i=49; j=0; utemp[i][j]=u[i][j]+dt*(d*(u[i- 1][j] +u[0][j]+u[i][49]+u[i][j+1]- 4*u[i][j])); //i=49,j=49 i=49; j=49; utemp[i][j]=u[i][j]+dt*(d*(u[i- 1][j] +u[0][j]+u[i][j- 1]+u[i][0]- 4*u[i][j])); //i=0 i=0; for(j=1;j<49;j++){ utemp[i][j]=u[i][j]+dt*(d*(u[49][j] +u[i+1][j]+u[i][j- 1]+u[i][j+1]- 4*u[i] [j])); //i=49 i=49; for(j=1;j<49;j++){ utemp[i][j]=u[i][j]+dt*(d*(u[i- 1] [j]+u[0][j]+u[i][j- 1]+u[i][j+1]- 4*u[i] [j])); //j=0 j=0; for(i=1;i<49;i++){ utemp[i][j]=u[i][j]+dt*(d*(u[i- 1] [j]+u[i+1][j]+u[i][49]+u[i][j+1]- 4*u[i] [j])); //j=49 j=49; for(i=1;i<49;i++){ utemp[i][j]=u[i][j]+dt*(d*(u[i- 1] [j]+u[i+1][j]+u[i][j- 1]+u[i][0]- 4*u[i] [j])); // その他 for(i=1;i<49;i++){ for(j=1;j<49;j++){ utemp[i][j]=u[i][j]+dt*(d*(u[i- 1] [j]+u[i+1][j]+u[i][j- 1]+u[i][j+1]- 4*u[i] [j])); // 更新 for(i=0;i<50;i++){ for(j=0;j<50;j++){ u[i][j]=utemp[i][j]; // 出力 if(t%100==0){ for(i=0;i<50;i++){ for(j=0;j<50;j++){ fprintf(fp,"%f",u[i][j]); if(j!=49){ fprintf(fp, "); fprintf(fp,"\n"); fclose(fp); return 0;

エクセル 0. データを開いた後 全選択して 書式 セル 数値 から小数点を下 2 桁まで表示するようにする 表の左上の角を押して全選択をする 書式 セルをクリック

エクセル 数値を選んで 小数点 2 桁まで表示

エクセル 1. データを貼付けた後 列の幅を調整してセルを正方形にする 表の左上の角を押して全選択をする 列 A と B の間をダブルクリック

ズームアウトして全体像を見る 示する この数字を 35 に変更

条件付き書式で値が 1 のセルだけ強調表示する あとは OK を押す

こんな感じの拡散が見れます

反応拡散モデル 12-4. ギーラー マインハルト系についてプログラムを組み, さまざまな模様を描く. やるべきこと ギーラー マインハルト系の離散化 アクチベータ インヒビター u t = D u 2 u + u2 v u v t = D v 2 v + u 2 v 離散化 2 次元拡散方程式のプログラムを参考にプログラムを組む 基本的には拡散方程式を反応拡散方程式系に変更するだけ. ただし,2 種類の拡散性分子があることに注意! 初期値の設定 u=1.0, v=1.0 にわずかなノイズ (0.0 0.001 程度 ) を加える. パラメータを調整して, どんなパタンがあらわれるかを調べる 二つの拡散係数を変化させてみよう.?