C言語による数値計算プログラミング演習
|
|
|
- えの すみい
- 7 years ago
- Views:
Transcription
1 4. 連立一次方程式の解法 4. LU 分解法 同じ係数行列 A( サイズ n n) をもつ m 組の連立 次方程式 AX = B ( ただし A=[ ij ] は n 行 n 列の正則行列,B=[b ij ] と X=[x ij ] は n 行 m 列の行列 ) を同時に解く 行列 A,B を並置して 個の配列 A (n 行 n+m 列 ) を作成し, i,n+j =b ij (i=,,n; j=,,m) として A の配列成分を改めて ij と記す A' = [ A B] = M n n L O L n n 以下のアルゴリズムを実行すると, M nn b b b M n b b b n L O L b m b m = M M bnm n n A' の B 部に解 X の値が入る L O L n n M nn, n+, n+ M n, n+, n+, n+ n, m+ L O L, n+ m, n+ m M n, n+ m アルゴリズム 4.. LU 分解法の素直なアルゴリズム LU 分解と前進消去の同時進行 ( 原型 ): for j= to n+m {k= {L: l i = i j := j / {U: u j = j /l {Y: y j =b j /l for k= to n {k=, 3,, n for i=k to n {L: l ik = ik Σ k- l= l il u lk for l= to k- ik := ik - il lk for j=k+ to n+m {U: u kj = ( kj -Σ k- l= l kl u lj )/l kk for l= to k- {Y: y kj = (b kj -Σ k- l= l kl y lj )/l kk kj := kj - kl lj kj := kj / kk 後退代入 : for k=n-, n-,, {k=n {X: x nj = y nj for j= to m { 右辺ベクトルの数だけ繰り返す for l=k+ to n {k n {X: x kj =y kj Σ n l=k+ u kl x lj k,n+j := k,n+j - kl l,n+j プログラム /* Solve Liner Eqution System AX=B */ /* By LU Decomposition Method */ /* ( Originl Algorithm ) */ /* AX = B */
2 /* A : Coefficient Mtrix size n*n */ /* X : Solution Mtrix (m Vectors) size n*m */ /* B : Right-hnd-side Mtrix (m Vectors) size n*m */ /* */ /* HERE A'=[A,B] */ # include <stdio.h> #define MMAX 0 #define NMAX 30 void min(void) { flot [NMAX][NMAX+MMAX]; int n,m; int i,j,k,l; /* Red Dt */ printf("input Mtrix Size: n, m? "); /* 行列データの画面入力 */ scnf("%d%d", &n, &m); /* サイズ :n, m */ printf(" ninput Coefficient Mtrix A n"); /* 行列 A の画面入力 */ printf("? A(%d, j), j=,%d : ", i+, n); for(j=0; j<n; j++) scnf("%g", &[i][j]); printf(" ninput R.H.S. Vectors B n"); /* 行列 B の画面入力 */ printf("? B(%d, j), j=,%d : ", i+, m); for(j=0; j<m; j++) scnf("%g", &[i][n+j]); /* Write Dt */ printf(" nliner Eqution System: AX=B n"); printf("* Size of Mtrix: n,m=%d,%d n", n,m); printf("* A'=[A B] n"); /* 行列 A'=[A B] の画面への出力 */ for(j=0;j<n+m;j++) printf("%6.g", [i][j]); /* LU Decomposition nd Forwrd reduction */ for(j=;j<n+m;j++) [0][j] /= [0][0]; for(k=;k<n;k++){ for(i=k;i<n;i++) for(l=0;l<k;l++) [i][k] -= [i][l]*[l][k]; for(j=k+;j<n+m;j++){
3 for(l=0;l<k;l++) [k][j] -= [k][l]*[l][j]; [k][j] /= [k][k]; printf(" nmtrix A' fter LU decomposition nd Forwrd reduction n"); /* Debug Write */ for(j=0;j<n+m;j++) printf("%5.6e", [i][j]); /* Bckwrd Substitution */ for(k=n-;k>=0;--k){ for(j=0;j<m;j++){ for(l=k+;l<n;l++){ [k][n+j] -= [k][l]*[l][n+j]; /* Print Result */ printf(" nsolutions n"); for(j=0;j<m;j++) printf("%5.6e", [i][n+j]); アルゴリズム 4.. LU 分解法のコンパクトなアルゴリズム LU 分解と前進消去の同時進行 : for k= to n for j=k+ to n+m kj := kj / kk {U( ただし対角成分 を除く ) for i=k+ to n ij := ij - ik kj {L, U と Y 後退代入 : for k=n, n-,, for j= to m for i= to k- i,n+j := i,n+j - ik k,n+j 3
4 次のプログラムでは, 入力データをファイルから読んでいる プログラム /* Solve Liner Eqution System AX=B */ /* By LU Decomposition Method */ /* ( Compct Algorithm ) */ /* AX = B */ /* A : Coefficient Mtrix size n*n */ /* X : Solution Mtrix (m Vectors) size n*m */ /* B : Right-hnd-side Mtrix (m Vectors) size n*m */ /* */ /* HERE A'=[A,B] */ /* */ /* Input Dt is red from File */ # include <stdio.h> #define MMAX 0 #define NMAX 30 flot [NMAX][NMAX+MMAX]; int n,m; void input(void) /* 関数 :A, B の係数をファイルから入力 */ { int i,j; FILE *fp; /* ファイルポインターの宣言 */ /* Red Dt */ /* ファイルオープンとエラー処理 */ if( (fp=fopen("c4mtrix.dt","r"))==null ){ printf(" ファイルをオープンできません n"); exit(); /* 行列データのファイル入力 */ fscnf(fp,"%d%d",&n, &m); /* サイズ :n, m */ /* 行列 A */ for(j=0; j<n; j++) fscnf(fp,"%g", &[i][j]); /* 行列 B */ for(j=0; j<m; j++) fscnf(fp,"%g", &[i][n+j]); /* ファイルクローズ */ fclose(fp); /* 行列データの出力 */ printf("liner Eqution System: AX=B n"); 4
5 printf("* Size of Mtrix: n,m=%d,%d n", n,m); printf("* A'=[A B] n"); /* 行列 A'=[A B] の画面への出力 */ for(j=0;j<n+m;j++) printf("%6.g", [i][j]); void min(void) /* メイン関数 */ { int i,j,k,l; input(); /* LU Decomposition nd Forwrd reduction */ for(k=0;k<n;k++){ for(j=k+;j<n+m;j++){ [k][j] /= [k][k]; for(i=k+;i<n;i++){ [i][j] -= [i][k]*[k][j]; printf(" nmtrix A' fter LU decomposition nd Forwrd reduction n"); /* Debug Write */ for(j=0;j<n+m;j++) printf("%5.6e", [i][j]); /* Bckwrd Substitution */ for(k=n-;k>=0;--k){ for(j=0;j<m;j++){ for(i=0;i<k;i++){ [i][n+j] -= [i][k]*[k][n+j]; /* Print Result */ printf(" nsolutions n"); for(j=0;j<m;j++) printf("%5.6e", [i][n+j]); 5
6 実行例 問題 ) デバッグ ( プログラムの誤りを修正すること ) 用 問題 ) Ax = b 3 6 A = 7 b = AX = B A = B = 問題 に対する実行例 ) プログラム 4..( 入力データをキーボードから入力 ) 実行開始 Input Mtrix Size: n, m? 3 Input Coefficient Mtrix A? A(, j), j=, 3 : 3? A(, j), j=, 3 : 7? A( 3, j), j=, 3 : 4 0 Input R.H.S. Vectors B? B(, j), j=, : 6? B(, j), j=, :? B( 3, j), j=, : 5 Liner Eqution System: AX=B * Size of Mtrix: n,m=3, * A'=[A B] Mtrix A' fter LU decomposition nd Forwrd reduction e e e e e e e e e e e e+00 Solutions e e e おしまい
7 問題 に対する実行例 ) プログラム 4..( 入力データをファイルから読む ) 入力データ ( ファイル名 :c4mtrix.dt): 入力データ 実行開始 Liner Eqution System: AX=B * Size of Mtrix: n,m=4,5 * A'=[A B] Mtrix A' fter LU decomposition nd Forwrd reduction e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e-0.995e-0 Solutions e e e e e e e e e e e e e e e e e e e-0.995e おしまい
8 4. ガウスの消去法 4. 節と同様, B AX = を解くにあたり, 配列を A '= [ A B] にとる 4.. ガウスの消去法 ( 基本 ) アルゴリズム 4.. 前進消去 : for k= to n- for i=k+ to n w:= ik/ kk for j=k+ to n+m {j=k は ik =0 と自明なので省く ij := ij - w kj { (k+) ij= (k) ij ( (k) ik (k) kk) (k) kj {b (k+) ij= b (k) ij ( (k) ik (k) kk)b (k) kj 後退代入 : for k=n, n-,, for j= to m { 右辺ベクトルの数だけ繰り返す if k<n then {k<n: x kj =(b (k) kj Σ n l=k+ (k) kl x lj )/ (k) kk for l=k+ to n {k=n: x kj = b (k) kj/ (k) kk k,n+j := k,n+j - kl l,n+j k,n+j := k,n+j / kk 後退代入はつぎのようにコンパクトなアルゴリズムに書き換えられる : for k=n, n-,, for j= to m { 右辺ベクトルの数だけ繰り返す k,n+j := k,n+j/ k,k {x kj =(b (k) kj Σ n l=k+ (k) kl x lj )/ (k) kk for i= to k- i,n+j := i,n+j - ik k,n+j プログラム 4.. LU 分解法のプログラム 4.. に記した関数 input を用い, ファイルからデータを入力する 以下にガウスの消去法 ( 後退代入にはコンパクトなアルゴリズムを使用 ) の min 関数を記す 他はプログラム 4.. と同じ void min(void) /* メイン関数 */ { int i,j,k; flot w; 8
9 input(); /* Forwrd reduction */ for(k=0;k<n-;k++){ for(i=k+;i<n;i++){ w=[i][k]/[k][k]; for(j=k+;j<n+m;j++){ [i][j] -= w*[k][j]; /* Bckwrd Substitution */ for(k=n-;k>=0;--k){ for(j=0;j<m;j++){ [k][n+j] /= [k][k]; for(i=0;i<=k-;i++){ [i][n+j] -= [i][k]*[k][n+j]; /* Print Result */ printf(" nsolutions n"); for(j=0;j<m;j++) printf("%5.6e", [i][n+j]); 実行例 教科書の例題 4. を解く 4 4 Ax = b A = 3 4 b = 入力データ 入力データ 実行開始 Liner Eqution System: AX=B * Size of Mtrix: n,m=3, * A'=[A B] 4 4 9
10 Solutions e e e おしまい 掃出し法 ( あるいはガウス ジョルダン消去法 ) アルゴリズム 4.. 掃き出しのプロセス : for k= to n w:=/ kk for j=k to n+m { (k+) kj= (k) kj/ (k) kk kj := kj w {b (k+) kj= b (k) kj/ (k) kk for i= to n if(i k) then w:= ik for j=k to n+m ij := ij - w kj { (k+) ij= (k) ij (k) ik (k+) kj {b (k+) ij= b (k) ij (k) ik b (k+) kj プログラム 4.. LU 分解法のプログラム 4.. に記した関数 input を用い, ファイルからデータを入力する 以下に min 関数を記す ( 他はプログラム 4.. と同じ ) void min(void) /* メイン関数 */ { int i,j,k; flot w; input(); /* Sweep-out */ for(k=0;k<n;k++){ w = /[k][k]; for(j=k;j<(n+m);j++) [k][j] *= w; if(i!=k){ w = [i][k]; for(j=k;j<(n+m);j++) [i][j] -= w*[k][j]; 0
11 /* Print Result */ printf(" nsolutions n"); for(j=0;j<m;j++) printf("%5.6e", [i][n+j]); 実行例 LU 分解法の実行例で記した問題 を解く 実行開始 Liner Eqution System: AX=B * Size of Mtrix: n,m=4,5 * A'=[A B] Solutions e e e e e e e e e e e e e e e e e e e-0.995e おしまい ピボット選択付ガウス消去法 ( あるいはピボット選択付 LU 分解法 ( ただし L の対角成分はすべて )) アルゴリズム 4..3 LU 分解と前進消去 : for i= to n p i =i { 置換情報 p の初期設定 for k= to n- i=k,k+, n に対し, ik > kk となる r を探す if r k then {k 行と r 行の p,l,a,b の値を入れ換える p k と p r の値を入れ換える k 行の kj と r 行の rj の値を入れ換える (j=,,,n+m) for i=k+ to n ik := ik/ kk {L( ただし対角成分 を除く ) for j=k+ to n+m ij := ij - ik kj {L,U と Y 後退代入は, アルゴリズム 4.. におけるものと同じ
12 プログラム 4..3 LU 分解法のプログラム 4.. に記した関数 input を用い, ファイルからデータを入力する 以下に min 関数を記す ( 他はプログラム 4.. と同じ ) void min(void) /* メイン関数 */ { int p[nmax],i,j,k,r; flot mx,w,kk,ptemp,temp; input(); for(i=0;i<n;i++) /* Index for Pivoting */ p[i]=i; /* Forwrd Substitution with Pivoting */ for(k=0;k<n-;k++){ mx=fbs([k][k]); r=k; for(i=k+;i<n;i++){ /* serch r such tht _{r,k=mx _{i,k i=k,..n */ if( fbs([i][k]) > mx ){ mx=fbs([i][k]); r=i; if(r!=k){ /* exchnge column r nd column k */ ptemp=p[r]; p[r] =p[k]; p[k] =ptemp; for(j=0;j<n+m;j++){ temp = [r][j]; [r][j] = [k][j]; [k][j] = temp; for(i=k+;i<n;i++) [i][k] = [i][k]/[k][k]; for(i=k+;i<n;i++){ for(j=k+;j<n+m;j++) [i][j] -= [i][k]*[k][j]; /* Bckwrd Substitution */ for(k=n-;k>=0;--k){ kk=/[k][k]; for(j=0;j<m;j++){ for(i=k+;i<n;i++){ [k][n+j] -= [k][i]*[i][n+j]; [k][n+j] *=kk; /* print result */ printf(" npermuttion n"); printf("%3d", p[i]); if(i%0==9)
13 printf(" nlu decomposition n"); for(j=0;j<n;j++) printf("%5.6e", [i][j]); printf(" nsolution n"); for(j=0;j<m;j++) printf("%5.6e", [i][n+j]); 実行例 ガウスの消去法 ( 基本 ) における実行例で扱った問題 ( 教科書例題 4.) を解く 実行開始 Liner Eqution System: AX=B * Size of Mtrix: n,m=3, * A'=[A B] Permuttion 0 LU decomposition e e e e e e e e e-0 Solution e e e おしまい
14 4.3 三項方程式の解法 三項方程式 c i x i- + i x i + b i x i+ = d i (i=,,,n) は, つぎのように行列表示される Ax = d b x d c b x d O O O M M A =, x =, d = O O O M M c n n b n x n dn cn n xn d これは 4.,4. 節に示した数値解法により解くことができる つぎのアルゴリズムは 4. 節の LU 分解によるものであり, これを実行すると右辺ベクトルの d 部に解 x の値が入る なお,c, b n の値は使用しないが, 通常 c =0, b n =0 を入れておく アルゴリズム 4.3. LU 分解と前進消去の同時進行 : b :=b / d :=d / for i= to n i := i -c i b i- d i :=(d i -c i h i- )/ i b i :=b i / i 後退代入 : for i=n-, n-,, d i :=d i -b i d i+ 問題 常微分方程式 d u/dx = を条件 u(0)=0, u()=0 のもとで解くと, 解 u(x)=0.5x(x-) を得るが, これを差分法で求め, 差分近似解と誤差を出力する x の区間 [0,] を n- 等分して各小区間幅を Δx とし,x i =(i-)δx,i=,,,n,( ただし Δx=/(n-)) とおく 0 x x x 3 x n- x n Δx 階導関数は u"(x i ) ( u(x i +Δx) u(x i ) + u(x i -Δx) )/(Δx) と近似される ( 第 9 章 : 数値微分を参照のこと ) ので,U i =u(x i ) と記せば,i=,3,,n- に対し U i+ U i + U i- = (Δx) が成立し,i= と i=n に対しては以下の条件が課せられる U = 0 U n = 0 n 個の未知数 U i, i=,,,n に対し, 代数方程式が n 個得られたので, 連立一次方程式により U i が求められる 具体的に代数式を列挙すると 4
15 x=x =0 のとき U = 0 x=x のとき U - U + U 3 = (Δx) x=x 3 のとき U U 3 + U 4 = (Δx) x=x 4 のとき U 3 U 4 + U 5 = (Δx) : : : : x=x n- のとき U n- U n- + U n = (Δx) x=x n = のとき U n = 0 となり, 三項方程式の形をしていることがわかる プログラム /* three-term equtions */ #include <stdio.h> #define NMAX 0 void min(void) { flot [NMAX],b[NMAX],c[NMAX],d[NMAX], xmin=0.0,xmx=.0,dx,x,error; int n,i; printf("number of points: n? "); scnf("%d", &n); dx=(xmx-xmin)/(n-); c[0]= 0.0; [0]=.0; b[0]= 0.0; d[0]= 0.0; for(i=;i<n-;i++){ c[i]=.0; [i]=-.0; b[i]=.0; d[i]= dx*dx; c[n-]= 0.0; [n-]=.0; b[n-]= 0.0; d[n-]= 0.0; 5 /* dt */ printf(" nthree-term equtions: n i,c[i],[i],b[i],d[i] n"); /* output */ for(i=0;i<n;i++) printf("%d %g %g %g %g n", i,c[i], [i], b[i], d[i]); /* forwrd */ b[0] /= [0]; d[0] /= [0]; for(i=;i<n;i++){ [i] -= c[i]*b[i-]; d[i] -= c[i]*d[i-]; d[i] /= [i]; b[i] /= [i];
16 for(i=n-;i>=0;i--) d[i] -=b[i]*d[i+]; printf(" n i tx t Solution t Error n"); x=i*dx; error=0.5*x*(x-)-d[i]; printf("%d t%5.6g t%5.6g t%5.6e n", i,x,d[i],error); /* bckwrd */ 実行例 実行開始 近似解のグラフ number of points: n? Three-Term equtions: i,c[i],[i],b[i],d[i] : : Solution i x Solution Error e e e e e e e e e e e e e e e e e e e \ e e おしまい
17 4.4 反復法 4.4. ヤコビ法 アルゴリズム 4.4. for i= to n { 初期値の設定 x i := 与えられた初期値 for k=0,,, { 収束するまで反復する for i= to n x temp :=b i for j= to n if(i j) then x temp :=x temp - ij x i x temp :=x temp / ii x new i:=x temp ===== for i= to n x i :=x new i ===== 収束判定は ノルムを用いて行い, 解の変化量が次式を満たすとき収束したとする n ( k+ ) ( k) ( k+ ) ( k) xi xi x i= ( k + ) n x ( k + ) xi i= x = < ε アルゴリズムの のところに分子 分母のノルムの計算 ( 下記 ) を挿入する norm_dx:=0 norm_x :=0 for i= to n norm_dx:=norm_dx + x new i-xi norm_x :=norm_x + x new i あるいは上記を, 直前の (for i= to n) のループと同時進行させる アルゴリズムの のところに次の収束判定を入れる If norm_dx/norm_x < ε brek(for k=0,,, のループから出る ) プログラム 4.4. 以下に示すプログラムでは, 関数 input においてファイルからデータを入力する /* Solve Liner Eqution System Ax=b */ /* by Jcobi Method */ #include <stdio.h> #include <mth.h> 7
18 #define KMAX 50 #define NMAX 0 flot eps, [NMAX][NMAX], b[nmax]; int n; void input(void) /* 入力データを読み込む関数 */ { int i, j; FILE *fp; /* ファイルポインターの宣言 */ /* ファイルオープンとエラー処理 */ if( (fp=fopen("c4iter.dt","r"))==null ){ printf(" ファイルをオープンできません n"); exit(); fscnf(fp,"%g %d", &eps, &n); /* 収束判定許容誤差と行列サイズの入力 */ /* 行列データのファイル入力 */ for(j=0;j<n;j++) fscnf(fp,"%g",&[i][j]); for(i=0;i<n;i++) /* 右辺ベクトルのファイル入力 */ fscnf(fp,"%g",&b[i]); fclose(fp); /* ファイルクローズ */ printf("solve Liner Eqution System: Ax=b n"); printf("* Mtrix size: n=%d t Tolernce: eps=%g n n",n,eps); /* 画面への出力 */ printf("* A'=[A b] n"); /* 行列 A'=[A b] の画面への出力 */ for(j=0;j<n;j++) printf("%5.6e", [i][j]); printf("%5.6e n", b[i]); void min(void) /* メイン関数 */ { int i, j, k; flot dxnorm, xnorm,xx,x[nmax],xnew[nmax]; input(); printf("itertion by Jcobi Method n"); /* initil vlue */ for(i=0;i<n;i++) x[i]=0; /* itertion */ for(k=0;k<kmax;k++){ printf("k=%d t",k); for(i=0;i<n;i++) printf("%5.6e", x[i]); dxnorm=0; xnorm =0; 8
19 xx=b[i]; for(j=0;j<n;j++) if(i!=j) xx -= [i][j]*x[j]; xx /= [i][i]; dxnorm += fbs(xx-x[i]); xnorm += fbs(xx); xnew[i]= xx; for(i=0;i<n;i++) x[i]=xnew[i]; if(dxnorm/xnorm<eps) brek; if(k>=kmax) printf("not convergent? n"); /* output solution */ printf(" nsolution:"); for(i=0;i<n;i++) printf("%5.6g",x[i]); 4.4. ガウス ザイデル法 アルゴリズム 4.4. for i= to n { 初期値の設定 x i := 与えられた初期値 for k=0,,, { 収束するまで反復する for i= to n x temp :=b i for j= to n if(i j) then x temp :=x temp - ij x i x temp :=x temp / ii x i :=x temp プログラム 4.4. ヤコビ法のプログラム 4.4. に記した関数 input を用い, ファイルからデータを入力する 以下に min 関数を記す ( 他はプログラム 4.4. と同じ ) void min(void) /* メイン関数 */ { int i, j, k; flot dxnorm, xnorm,xx,x[nmax]; input(); printf("itertion by Guss-Seidel Method n"); /* initil vlue */ 9
20 for(i=0;i<n;i++) x[i]=0; /* itertion */ for(k=0;k<kmax;k++){ printf("k=%d t",k); for(i=0;i<n;i++) printf("%5.6e", x[i]); dxnorm=0; xnorm =0; xx=b[i]; for(j=0;j<n;j++) if(i!=j) xx -= [i][j]*x[j]; xx /= [i][i]; dxnorm += fbs(xx-x[i]); xnorm += fbs(xx); x[i]=xx; if(dxnorm/xnorm<eps) brek; if(k>=kmax) printf("not convergent? n"); /* output solution */ printf(" nsolution:"); for(i=0;i<n;i++) printf("%5.6g",x[i]); SOR 法 ( 加速緩和法 ) アルゴリズム for i= to n { 初期値の設定 x i := 与えられた初期値 for k=0,,, { 収束するまで反復する for i= to n x temp :=b i for j= to n if(i j) then x temp :=x temp - ij x i x temp :=x temp / ii x i :=x i + ω(x temp - x i ) プログラム ヤコビ法のプログラム 4.4. に記した関数 input を用い, ファイルからデータを入力する 以下に min 関数を記す ( 他はプログラム 4.4. と同じ ) 0
21 void min(void) /* メイン関数 */ { int i, j, k; flot dxnorm, xnorm,xx,dx,x[nmax]; flot omeg=.; input(); printf("itertion by SOR n"); /* initil vlue */ for(i=0;i<n;i++) x[i]=0; /* itertion */ for(k=0;k<kmax;k++){ printf("k=%d t",k); for(i=0;i<n;i++) printf("%5.6e", x[i]); dxnorm=0; xnorm =0; xx=b[i]; for(j=0;j<n;j++) if(i!=j) xx-= [i][j]*x[j]; xx /= [i][i]; dx = xx-x[i]; xx = x[i] + omeg*dx; dxnorm += fbs(dx); xnorm += fbs(xx); x[i]=xx; if(dxnorm/xnorm<eps) brek; if(k>=kmax) printf("not convergent? n"); /* output solution */ printf(" nsolution:"); for(i=0;i<n;i++) printf("%5.6g",x[i]); 実行例 次の問題を, ヤコビ法, ガウス ザイデル法,SOR 法で解け Ax = b A = b = 入力データ ( ファイル名 :c4iter.dt): 入力データ e-6
22 実行例 ) ヤコビ法 実行開始 Solve Liner Eqution System: Ax=b * Mtrix size: n=4 Tolernce: eps=e-06 * A'=[A b] e e e e e e e e e e e e e e e e e e e e+00 Itertion by Jcobi Method k= e e e e+00 k= e e e e+00 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 : : k= e e e e-0 k= e e e e-0 k= e e e e-0 Solution: おしまい 実行例 ) ガウス ザイデル法 実行開始 Solve Liner Eqution System: Ax=b * Mtrix size: n=4 Tolernce: eps=e-06 * A'=[A b] e e e e e e e e e e e e e e e e e e e e+00 Itertion by Guss-Seidel Method
23 k= e e e e+00 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 : : k= e e e e-0 k= e e e e-0 k= e e e e-0 Solution: おしまい 実行例 3)SOR 法 : 収束加速パラメータ ω=. の場合 実行開始 Solve Liner Eqution System: Ax=b * Mtrix size: n=4 Tolernce: eps=e-06 * A'=[A b] e e e e e e e e e e e e e e e e e e e e+00 Itertion by SOR k= e e e e+00 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 k= e e e e-0 Solution: おしまい 参考文献 葉子 : 数値計算の基礎 解法と誤差, コロナ社 (007) 森口繁一, 伊理正夫, 武市正人編 :C による算法痛論, 東京大学出版会 (000) Heth, Michel T.: Scientific Computing, An Introductory Survey, McGrw-Hill(00) 3
C言語による数値計算プログラミング演習
8. 数値積分 任意の区間 [,b] における f() の定積分 b () I = f ( ) d の値は, つぎのように n 点の関数値の和により近似的に与えられる () In = Ak f ( k) n k = このとき, k を分点,A k を重みという 8. ニュートン コーツ ( 複合型 ) 積分公式 積分区間 [,b] を等分割して n 個の分点をとり, 被積分関数 f() を n- 次ラグランジュ補間多項式で近似して得られる積分公式を
C言語による数値計算プログラミング演習
5. 行列の固有値問題 n n 正方行列 A に対する n 個の固有値 λ i (i=1,,,n) と対応する固有ベクトル u i は次式を満たす Au = λ u i i i a11 a1 L a1 n u1i a1 a a n u i A =, ui = M O M M an 1 an L ann uni これらはまとめて, つぎのように書ける 5.1 ヤコビ法 = Λ, = [ u1 u u
スライド 1
数値解析 平成 30 年度前期第 10 週 [6 月 12 日 ] 静岡大学工学研究科機械工学専攻ロボット 計測情報分野創造科学技術大学院情報科学専攻 三浦憲二郎 講義アウトライン [6 月 12 日 ] 連立 1 次方程式の直接解法 ガウス消去法 ( 復習 ) 部分ピボット選択付きガウス消去法 連立 1 次方程式 連立 1 次方程式の重要性 非線形の問題は基本的には解けない. 非線形問題を線形化して解く.
C言語による数値計算プログラミング演習
6. 関数近似 : 補間と補外 6. ラグランジュ補間法 互いに異なる点 x,x,,x とそれらの点における関数値 f(x ),f(x ),,f(x ) が与えられているとする これらの 点を補間するたかだか - 次の補間多項式 F (x) は, ラグランジュ基底関数 L k (-) (x) を用いて ( ) () F( x) = f( xk) Lk ( x) k= L ( x ) = と書ける これは,
数値計算法
12.1 電気回路網に関するキルヒホッフの法則による解法 1 工学的諸問題を多元連立 1 次方程式で表現することができる. 例えば, 荷物を最短の時間と最低のコストで輸送するためにはどのようなルートで物流を行うか という問題, 工場の部品の在庫の状況からいかに最小のコストで製品をつくるか という問題, 機械要素の運動の問題, 電気回路の解析の問題など, いくつか挙げられる. つまり, 計算機で多元連立方程式を解くことができれば,
09.pptx
講義内容 数値解析 第 9 回 5 年 6 月 7 日 水 理学部物理学科情報理学コース. 非線形方程式の数値解法. はじめに. 分法. 補間法.4 ニュートン法.4. 多変数問題への応用.4. ニュートン法の収束性. 連立 次方程式の解法. 序論と行列計算の基礎. ガウスの消去法. 重対角行列の場合の解法項目を変更しました.4 LU 分解法.5 特異値分解法.6 共役勾配法.7 反復法.7. ヤコビ法.7.
[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±
[1] #include printf("hello, world."); (G1) int -32768 32767 long int -2147483648 2147483647 float ±3.4 10 38 ±3.4 10 38 double ±1.7 10 308 ±1.7 10 308 char [2] #include int a, b, c, d,
PowerPoint Presentation
応用数学 Ⅱ (7) 7 連立微分方程式の立て方と解法. 高階微分方程式による解法. ベクトル微分方程式による解法 3. 演算子による解法 連立微分方程式 未知数が複数個あり, 未知数の数だけ微分方程式が与えられている場合, これらを連立微分方程式という. d d 解法 () 高階微分方程式化による解法 つの方程式から つの未知数を消去して, 未知数が つの方程式に変換 のみの方程式にするために,
LINEAR ALGEBRA I Hiroshi SUZUKI Department of Mathematics International Christian University
LINEAR ALGEBRA I Hiroshi SUZUKI Department of Mathematics International Christian University 2002 2 2 2 2 22 2 3 3 3 3 3 4 4 5 5 6 6 7 7 8 8 9 Cramer 9 0 0 E-mail:hsuzuki@icuacjp 0 3x + y + 2z 4 x + y
(2016 2Q H) [ ] R 2 2 P = (a, b), Q = (c, d) Q P QP = ( ) a c b d (a c, b d) P = (a, b) O P ( ) a p = b P = (a, b) p = ( ) a b R 2 {( ) } R 2 x = x, y
(2016 2Q H) [ ] R 2 2 P = (a, b), Q = (c, d) Q P QP = a c b d (a c, b d) P = (a, b) O P a p = b P = (a, b) p = a b R 2 { } R 2 x = x, y R y 2 a p =, c q = b d p + a + c q = b + d q p P q a p = c R c b
連立方程式の解法
連立方程式の解法連立方程式をエクセルを用いて解く方法は以下の 2 種類が考えられます 1) エクセルの行列関数を用いる 2) VBA でヤコビ法やガウスザイデル法を用いる ここでは両方について説明します 1) エクセルの行列関数を用いる方法エクセルは表計算ですから行と列に並んだ数値を扱うのは得意です 連立方程式は次のように行列を用いて表すことができます 連立方程式が行列形式で表されることを考慮して解法を考えてみます
1 4 2 EP) (EP) (EP)
2003 2004 2 27 1 1 4 2 EP) 5 3 6 3.1.............................. 6 3.2.............................. 6 3.3 (EP)............... 7 4 8 4.1 (EP).................... 8 4.1.1.................... 18 5 (EP)
Part () () Γ Part ,
Contents a 6 6 6 6 6 6 6 7 7. 8.. 8.. 8.3. 8 Part. 9. 9.. 9.. 3. 3.. 3.. 3 4. 5 4.. 5 4.. 9 4.3. 3 Part. 6 5. () 6 5.. () 7 5.. 9 5.3. Γ 3 6. 3 6.. 3 6.. 3 6.3. 33 Part 3. 34 7. 34 7.. 34 7.. 34 8. 35
(2018 2Q C) [ ] R 2 2 P = (a, b), Q = (c, d) Q P QP = ( ) a c b d (a c, b d) P = (a, b) O P ( ) a p = b P = (a, b) p = ( ) a b R 2 {( ) } R 2 x = x, y
(2018 2Q C) [ ] R 2 2 P = (a, b), Q = (c, d) Q P QP = a c b d (a c, b d) P = (a, b) O P a p = b P = (a, b) p = a b R 2 { } R 2 x = x, y R y 2 a p =, c q = b d p + a + c q = b + d q p P q a p = c R c b
12.2 電気回路網に関するキルヒホッフの法則による解法 2 多元連立 1 次方程式の工学的応用についての例を 2 つ示す.1 つはブリッジ T 型回路, もう 1 つはホーイストンブリッジ回路である. 示された回路図と与えられた回路定数からキルヒホッフの法則を使って多元連立 1 次方程式を導出する
12.2 電気回路網に関するキルヒホッフの法則による解法 2 多元連立 1 次方程式の工学的応用についての例を 2 つ示す.1 つはブリッジ T 型回路, もう 1 つはホーイストンブリッジ回路である. 示された回路図と与えられた回路定数からキルヒホッフの法則を使って多元連立 1 次方程式を導出する. その式のパラメータを前述のプログラムに反映させてシミュレーションを行う. 12.2.0 キルヒホッフの法則
Microsoft Word - NumericalComputation.docx
数値計算入門 武尾英哉. 離散数学と数値計算 数学的解法の中には理論計算では求められないものもある. 例えば, 定積分は, まずは積分 ( 被積分関数の原始関数をみつけること できなければ値を得ることはできない. また, ある関数の所定の値における微分値を得るには, まずその関数の微分ができなければならない. さらに代数方程式の解を得るためには, 解析的に代数方程式を解く必要がある. ところが, これらは必ずしも解析的に導けるとは限らない.
all.dvi
5,, Euclid.,..,... Euclid,.,.,, e i (i =,, ). 6 x a x e e e x.:,,. a,,. a a = a e + a e + a e = {e, e, e } a (.) = a i e i = a i e i (.) i= {a,a,a } T ( T ),.,,,,. (.),.,...,,. a 0 0 a = a 0 + a + a 0
行列代数2010A
a ij i j 1) i +j i, j) ij ij 1 j a i1 a ij a i a 1 a j a ij 1) i +j 1,j 1,j +1 a i1,1 a i1,j 1 a i1,j +1 a i1, a i +1,1 a i +1.j 1 a i +1,j +1 a i +1, a 1 a,j 1 a,j +1 a, ij i j 1,j 1,j +1 ij 1) i +j a
Microsoft Word - 03-数値計算の基礎.docx
δx f x 0 + δ x n=0 a n = f ( n) ( x 0 ) n δx n f x x=0 sin x = x x3 3 + x5 5 x7 7 +... x ( ) = a n δ x n ( ) = sin x ak = (-mod(k,2))**(k/2) / fact_k 10 11 I = f x dx a ΔS = f ( x)h I = f a h I = h b (
Microsoft PowerPoint - Eigen.pptx
固有値解析 中島研吾 東京大学情報基盤センター同大学院情報理工学系研究科数理情報学専攻数値解析 ( 科目番号 -58) 行列の固有値問題 べき乗法 対称行列の固有値計算法 : ヤコビ法 A 行列の固有値問題 標準固有値問題 (Stndrd vlue Prolem を満足する と を求める : 固有値 (eigenvlue) : 固有ベクトル (eigenvector) 一般固有値問題 (Generl
行列、ベクトル
行列 (Mtri) と行列式 (Determinnt). 行列 (Mtri) の演算. 和 差 積.. 行列とは.. 行列の和差 ( 加減算 ).. 行列の積 ( 乗算 ). 転置行列 対称行列 正方行列. 単位行列. 行列式 (Determinnt) と逆行列. 行列式. 逆行列. 多元一次連立方程式のコンピュータによる解法. コンピュータによる逆行列の計算.. 定数項の異なる複数の方程式.. 逆行列の計算
Taro-再帰関数Ⅲ(公開版).jtd
0. 目次 1 1. ソート 1 1. 1 挿入ソート 1 1. 2 クイックソート 1 1. 3 マージソート - 1 - 1 1. ソート 1 1. 1 挿入ソート 挿入ソートを再帰関数 isort を用いて書く 整列しているデータ (a[1] から a[n-1] まで ) に a[n] を挿入する操作を繰り返す 再帰的定義 isort(a[1],,a[n]) = insert(isort(a[1],,a[n-1]),a[n])
memo
数理情報工学特論第一 機械学習とデータマイニング 4 章 : 教師なし学習 3 かしまひさし 鹿島久嗣 ( 数理 6 研 ) [email protected].~ DEPARTMENT OF MATHEMATICAL INFORMATICS 1 グラフィカルモデルについて学びます グラフィカルモデル グラフィカルラッソ グラフィカルラッソの推定アルゴリズム 2 グラフィカルモデル 3 教師なし学習の主要タスクは
Taro-ファイル処理(公開版).jtd
ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言
Taro-プログラミングの基礎Ⅱ(公
0. 目次 2. プログラムの作成 2. 1 コラッツ問題 自然数 n から出発して n が偶数ならば 2 で割り n が奇数ならば 3 倍して 1 を足す操作を行う この操作を繰り返すと最後に 1 になると予想されている 問題 1 自然数 aの操作回数を求めよ 問題 2 自然数 aから bまでのなかで 最大操作回数となる自然数を求めよ 2. 2 耐久数 正整数の各桁の数字を掛け 得られた結果についても同様の操作を繰り返す
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
x, y x 3 y xy 3 x 2 y + xy 2 x 3 + y 3 = x 3 y xy 3 x 2 y + xy 2 x 3 + y 3 = 15 xy (x y) (x + y) xy (x y) (x y) ( x 2 + xy + y 2) = 15 (x y)
x, y x 3 y xy 3 x 2 y + xy 2 x 3 + y 3 = 15 1 1977 x 3 y xy 3 x 2 y + xy 2 x 3 + y 3 = 15 xy (x y) (x + y) xy (x y) (x y) ( x 2 + xy + y 2) = 15 (x y) ( x 2 y + xy 2 x 2 2xy y 2) = 15 (x y) (x + y) (xy
kiso2-03.key
座席指定はありません Linux を起動して下さい 第3回 計算機基礎実習II 2018 のウェブページか ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第2回の復習課題(rev02) 第3回の基本課題(base03) 第2回課題の回答例 ex02-2.c include int main { int l int v, s; /* 一辺の長さ */ /* 体積 v
行列の反復解法 1. 点 Jacobi 法 数値解法の重要な概念の一つである反復法を取り上げ 連立一次方程式 Au=b の反復解法を調べる 行列のスペクトル半径と収束行列の定義を与える 行列のスペクトル半径行列 Aの固有値の絶対値の最大値でもって 行列 Aのスペクトル半径 r(a) を与える 収束行
行列の反復解法 1. 点 Jacobi 法 数値解法の重要な概念の一つである反復法を取り上げ 連立一次方程式 Au=b の反復解法を調べる 行列のスペクトル半径と収束行列の定義を与える 行列のスペクトル半径行列 Aの固有値の絶対値の最大値でもって 行列 Aのスペクトル半径 r(a) を与える 収束行列 B が正方行列で のとき B を収束行列と呼ぶ 定理収束行列のスペクトル半径は である 簡単な証明もし
Microsoft Word - 8章(CI).doc
8 章配置間相互作用法 : Configuration Interaction () etho [] 化学的精度化学反応の精密な解析をするためには エネルギー誤差は数 ~ kcal/mol 程度に抑えたいものである この程度の誤差内に治まる精度を 化学的精度 と呼ぶことがある He 原子のエネルギーをシュレーディンガー方程式と分子軌道法で計算した結果を示そう He 原子のエネルギー Hartree-Fock
Microsoft PowerPoint - Eigen.ppt [互換モード]
固有値解析 中島研吾 東京大学情報基盤センター同大学院情報理工学系研究科数理情報学専攻数値解析 ( 科目番号 58) 行列の固有値問題 べき乗法 対称行列の固有値計算法 Eige Eige A 行列の固有値問題 標準固有値問題 (Stdrd Eigevle Problem を満足する と を求める : 固有値 (eigevle) : 固有ベクトル (eigevetor) 一般固有値問題 (Geerl
FEM原理講座 (サンプルテキスト)
サンプルテキスト FEM 原理講座 サイバネットシステム株式会社 8 年 月 9 日作成 サンプルテキストについて 各講師が 講義の内容が伝わりやすいページ を選びました テキストのページは必ずしも連続していません 一部を抜粋しています 幾何光学講座については 実物のテキストではなくガイダンスを掲載いたします 対象とする構造系 物理モデル 連続体 固体 弾性体 / 弾塑性体 / 粘弾性体 / 固体
Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]
if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに =
Taro-数値計算の基礎Ⅱ(公開版)
0. 目次 1. 2 分法 2. はさみうち法 3. 割線法 4. 割線法 ( 2 次曲線近似 ) 5. ニュートン法 ( 接線近似 ) - 1 - 1. 2 分法 区間 [x0,x1] にある関数 f(x) の根を求める 区間 [x0,x1] を xm=(x0+x1)/2 で 2 等分し 区間 [x0,xm],[xm,x1] に分割する f(xm) の絶対値が十分小さい値 eps より小さいとき
Microsoft PowerPoint コンピュータ物理2_第2回.pptx
コンピュータ物理学 2 第 2 回 (2015.10.9) 第 1 回 10/ 2( 金 ) ガイダンス 第 2 回 10/ 9( 金 ) 数値表現と誤差 第 3 回 10/16( 金 ) 第 4 回 10/23( 金 ) 数値微分 積分 第 5 回 10/30( 木 ) 第 6 回 11/13( 金 ) 第 7 回 11/20( 金 ) 常微分方程式 第 8 回 11/27( 金 ) 第 9 回
Microsoft PowerPoint - program.ppt [互換モード]
プログラミング演習 バージョン 1 担当教員 : 綴木馴 プログラムの決まりについて学ぶ おすすめする参考書 ザ C 戸川隼人サイエンス社 本日の予定 1. 授業の説明. 2. コンパイラーのインストール. プログラムの決まりについて学ぶ,P31 /* The most in C */ /* hello.c */ printf("hello,world n"); プログラムの決まり ( コメント )
PowerPoint Presentation
ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1 ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include int main(void) { ファイルポインタ宣言 int student_id = 100; char name[
データ構造
アルゴリズム及び実習 7 馬青 1 表探索 定義表探索とは 表の形で格納されているデータの中から条件に合ったデータを取り出してくる操作である 但し 表は配列 ( 連結 ) リストなどで実現できるので 以降 表 の代わりに直接 配列 や リスト などの表現を用いる場合が多い 表探索をただ 探索 と呼ぶ場合が多い 用語レコード : 表の中にある個々のデータをレコード (record) と呼ぶ フィールド
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
joho12.ppt
n φ 1 (x),φ 2 (x),,φ n (x) (x i, f i ) Q n c 1,,c n (,f k ) q n = c i φ i (x) x Q n i=1 c 1 = 0 c 1 n ( c 1 ) = q n f k 2 Q n ( c 1 ) = q 2 2 n ( ) 2 f k q n ( ) + f k Q n c 1 = c 1 q n 2 q n( ) q n q
フローチャートの書き方
アルゴリズム ( 算法 ) 入門 1 プログラムの作成 機械工学専攻泉聡志 http://masudahp.web.fc2.com/flowchart/index.html 参照 1 何をどのように処理させたいのか どのようなデータを入力し どのような結果を出力させるのか問題を明確にする 2 問題の内容どおりに処理させるための手順を考える ( フローチャートの作成 )~アルゴリズム( 算法 ) の作成
n ξ n,i, i = 1,, n S n ξ n,i n 0 R 1,.. σ 1 σ i .10.14.15 0 1 0 1 1 3.14 3.18 3.19 3.14 3.14,. ii 1 1 1.1..................................... 1 1............................... 3 1.3.........................
第7章 有限要素法のプログラミング
April 3, 2019 1 / 34 7.1 ( ) 2 Poisson 2 / 34 7.2 femfp.c [1] main( ) input( ) assem( ) ecm( ) f( ) solve( ) gs { solve( ) output( ) 3 / 34 7.3 fopen() #include FILE *fopen(char *fname, char
cp-7. 配列
cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標
プログラミング基礎
C プログラミング Ⅱ 演習 2-1(a) BMI による判定 文字列, 身長 height(double 型 ), 体重 weight (double 型 ) をメンバとする構造体 Data を定義し, それぞれのメンバの値をキーボードから入力した後, BMI を計算するプログラムを作成しなさい BMI の計算は関数化すること ( ) [ ] [ ] [ ] BMI = 体重 kg 身長 m 身長
4.6: 3 sin 5 sin θ θ t θ 2t θ 4t : sin ωt ω sin θ θ ωt sin ωt 1 ω ω [rad/sec] 1 [sec] ω[rad] [rad/sec] 5.3 ω [rad/sec] 5.7: 2t 4t sin 2t sin 4t
1 1.1 sin 2π [rad] 3 ft 3 sin 2t π 4 3.1 2 1.1: sin θ 2.2 sin θ ft t t [sec] t sin 2t π 4 [rad] sin 3.1 3 sin θ θ t θ 2t π 4 3.2 3.1 3.4 3.4: 2.2: sin θ θ θ [rad] 2.3 0 [rad] 4 sin θ sin 2t π 4 sin 1 1
数学の世界
東京女子大学文理学部数学の世界 (2002 年度 ) 永島孝 17 6 行列式の基本法則と効率的な計算法 基本法則 三次以上の行列式についても, 二次の場合と同様な法則がなりたつ ここには三次の場合を例示するが, 四次以上でも同様である 1 単位行列の行列式の値は 1 である すなわち 1 0 0 0 1 0 1 0 0 1 2 二つの列を入れ替えると行列式の値は 1 倍になる 例えば a 13 a
+ 1 ( ) I IA i i i 1 n m a 11 a 1j a 1m A = a i1 a ij a im a n1 a nj a nm.....
+ http://krishnathphysaitama-uacjp/joe/matrix/matrixpdf 1 ( ) I IA i i i 1 n m a 11 a 1j a 1m A = a i1 a ij a im a n1 a nj a nm (1) n m () (n, m) ( ) n m B = ( ) 3 2 4 1 (2) 2 2 ( ) (2, 2) ( ) C = ( 46
<4D F736F F D E4F8E9F82C982A882AF82E98D7397F1>
3 三次における行列 要旨高校では ほとんど 2 2 の正方行列しか扱ってなく 三次の正方行列について考えてみたかったため 数 C で学んだ定理を三次の正方行列に応用して 自分たちで仮説を立てて求めていったら 空間における回転移動を表す行列 三次のケーリー ハミルトンの定理 三次における逆行列を求めたり 仮説をたてることができた. 目的 数 C で学んだ定理を三次の正方行列に応用する 2. 概要目的の到達点として
微分方程式 モデリングとシミュレーション
1 微分方程式モデリングとシミュレーション 2018 年度 2 質点の運動のモデル化 粒子と粒子に働く力 粒子の運動 粒子の位置の時間変化 粒子の位置の変化の割合 速度 速度の変化の割合 加速度 力と加速度の結び付け Newtonの運動方程式 : 微分方程式 解は 時間の関数としての位置 3 Newton の運動方程式 質点の運動は Newton の運動方程式で記述される 加速度は力に比例する 2
Microsoft PowerPoint - kougi2.ppt
C プログラミング演習 第 2 回 Microsoft Visual Studio.NET を使ってみよう 説明 例題 1. プログラム実行の体験 コンピュータを役に立つ道具として実感する 次ページのプログラムを使って, Microsoft Visual Studio.NETでの C++ ソースファイル編集, ビルド, テスト実行の一連の過程を体験する 例題 1 のプログラムの機能 計算の繰り返し
,. Black-Scholes u t t, x c u 0 t, x x u t t, x c u t, x x u t t, x + σ x u t, x + rx ut, x rux, t 0 x x,,.,. Step 3, 7,,, Step 6., Step 4,. Step 5,,.
9 α ν β Ξ ξ Γ γ o δ Π π ε ρ ζ Σ σ η τ Θ θ Υ υ ι Φ φ κ χ Λ λ Ψ ψ µ Ω ω Def, Prop, Th, Lem, Note, Remark, Ex,, Proof, R, N, Q, C [a, b {x R : a x b} : a, b {x R : a < x < b} : [a, b {x R : a x < b} : a,
PowerPoint Presentation
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない
コンピュータ概論
4.1 For Check Point 1. For 2. 4.1.1 For (For) For = To Step (Next) 4.1.1 Next 4.1.1 4.1.2 1 i 10 For Next Cells(i,1) Cells(1, 1) Cells(2, 1) Cells(10, 1) 4.1.2 50 1. 2 1 10 3. 0 360 10 sin() 4.1.2 For
20 6 4 1 4 1.1 1.................................... 4 1.1.1.................................... 4 1.1.2 1................................ 5 1.2................................... 7 1.2.1....................................
NumericalProg09
数値解析および プログラミング演習 [08 第 9 回目 ] の解法 - 4. Ruge-Kua( ルンゲ クッタ 法 Ruge-Kua-Gill( ルンゲ クッタ ジル / ギル 法 5. 多段解法 解法の対象 常微分方程式 d( d 初期値条件 (, の変化に応じて変化する の値を求める. ( 0 ( 0 と 0 は,give 0 常微分方程式の初期値問題 と言う. 3 Ruge-Kua 法の導出
USB 0.6 https://duet.doshisha.ac.jp/info/index.jsp 2 ID TA DUET 24:00 DUET XXX -YY.c ( ) XXX -YY.txt() XXX ID 3 YY ID 5 () #define StudentID 231
0 0.1 ANSI-C 0.2 web http://www1.doshisha.ac.jp/ kibuki/programming/resume p.html 0.3 2012 1 9/28 0 [ 01] 2 10/5 1 C 2 3 10/12 10 1 2 [ 02] 4 10/19 3 5 10/26 3 [ 03] 6 11/2 3 [ 04] 7 11/9 8 11/16 4 9 11/30
Laplace2.rtf
=0 ラプラスの方程式は 階の微分方程式で, 一般的に3つの座標変数をもつ. ここでは, 直角座標系, 円筒座標系, 球座標系におけるラプラスの方程式の解き方を説明しよう. 座標変数ごとに方程式を分離し, それを解いていく方法は変数分離法と呼ばれる. 変数分離解と固有関数展開法. 直角座標系における 3 次元の偏微分方程式 = x + y + z =0 (.) を解くために,x, y, z について互いに独立な関数の積で成り立っていると考え,
