Gauss Strassen LU LU LU LU 22 5 Gauss LU
|
|
- たつや ゆのもと
- 5 years ago
- Views:
Transcription
1 I,
2 Gauss Strassen LU LU LU LU 22 5 Gauss LU Gauss LU LU LDU Gauss LU Gauss Gauss LU LU 34
3 55 LU lu-ver4c () (2) Gauss FORTRAN C () C (2) , LU Gauss LU 60 6 Gauss LU LU Cholesky Cholesky
4 20 (20//6) ( ) LINPACK, LAPACK, MATLAB ( ) ( ) ( ) I ( ) ( ) S I ( ) 3
5 2 (6) (Gauss) (Cramer) (Jordan ) 2x + 3x 2 x 3 = 5 (2) 4x + 4x 2 3x 3 = 3 2x + 3x 2 x 3 = , x 2 x 3 x 3 = x + 3x 2 x 3 = 5, 2x 2 x 3 = 7, 5x 3 = 5 4
6 x 3 = 5 5 = 3, x 2 = 7 + x 3 2 = 2, x = 5 3x 2 + x 3 2 = = 0 (forward elimination) (backward substitution) 3 n + ( ) n ( n ) 5
7 3 3 ( ) A system B ( )
8 a, b R n c = a + b n c i = a i + b i (i =, 2,, n) C : for (i = ; i <= n; i++) c[i] = a[i] + b[i]; a R n λ R c = λa n c i = λa i (i =, 2,, n) for (i = ; i <= n; i++) c[i] = lambda * a[i]; a, b R n c = a b n n n c = a i b i c = a[] * b[]; for (i = 2; i <= n; i++) c += a[i] * b[i]; i= 322 A n b R n c = Ab n 2 n(n ) n c i = a ij b j (i =, 2,, n) for (i = ; i <= n; i++) c[i] = a[i][] * b[]; for (j = 2; j <= n; j++) c[i] += a[i][j] * b[j]; : n i= j= n = n(n ), j=2 ( n + i= ) n = n 2 j=2 7
9 A, B n C = AB n 3 n 2 (n ) n c ij = a ik b kj (i, j =, 2,, n) k= for (i = ; i <= n; i++) for (j = ; j <= n; j++) c[i][j] = a[i][] * b[][j]; for (k = 2; k <= n; k++) c[i][j] += a[i][k] * b[k][j]; : n i= n j= k=2 n = n 2 (n ), n i= ( n + j= ) n = n 3 ( ) A, B M(n; R), c R n ABc (AB)c A(Bc) k=2 323 Gauss Gauss ( ) n n 3 /3 + O(n 2 ) n 3 /6 + O(n 2 ) ( ) C Gauss void gauss(int n, matrix a, vector x) int i, j, k; double q, s; /* */ for (k = ; k <= n-; k++) for (i = k + ; i <= n; i++) q = a[i][k] / a[k][k]; for (j = k + ; j <= n; j++) a[i][j] -= q * a[k][j]; x[i] -= q * x[k]; /* */ x[n] /= a[n][n]; for (k = n - ; k >= ; k--) s = x[k]; for (j = k + ; j <= n; j++) s -= a[k][j] * x[j]; x[k] = s / a[k][k]; 8
10 ( n n n ) + = k= i=k+ j=k+ n = = n n k= j=k+ k= i=k+ n(n )(n + ) n(n ) + = 3 2 n n k= i=k+ n(n )(2n + 5) 6 n n n (n k + ) = (n k)(n k + ) = l(l + ) n(n )(2n ) + 6 n(n )(n + ) 3 k= n(n ) 2 n n = (n k) = l = k= n(n ) 6 l= = n(n ) 6 n(n ) 2 (2(n + ) + 3) = n n = (n k) = l = k= l= n + = + (n ) = n + k= n(n ) 2 n(n + ) 2 + n = n(n + ) 2 n(n ) 2 l= (2n + 3) n(n )(2n + 5) 6 = n ((n )(2n + 5) + 3(n + )) 6 = n ( 2n 2 + 3n 5 + 3n + 3 ) 6 = n(n2 + 3n ) Strassen ( ) n 3 VStrassen n O(n log 2 7 ) (log 2 7 = 28 ) n 98 n 25 ( [3] 3 ) ( : n O(n 3 ) ) 9
11 325 LU Gauss O(n 3 ) 326 n (Ly = b, Ux = y) n 2 3 ( ) 6n trid-luc trilu() 2(n ) trisol() 4n 3 trilu() n 2 = n i=0 trisol() n 2 n 2 + = 2(n ) i=0 i=0 2n 327 LU [3] 5 Ax = b x = A b A A b ( ) 0
12 ( b, b 2,, b m ) x j Ax = b j (Ab b 2 b m ) (Ix x 2 x m ) 2 A LU (A = LU) Ax = b Ly = b Ux = y ( ) 33 (CPU CPU ) ( ) ( ) CORDIC (=coordinate rotation digital computation), STL (=sequential table lookup) ( [0] ) (Taylor ) (FLOPS = floating operations per second) GFLOPS (NEC SX6) 3586 TFLOPS ( ) Fourier (fast Fourier transform, FFT)
13 4 LU (LU ) ( ) (i, j) 0 E ij 42 ( ) E ij E kl = δ jk E il 2
14 42 43 ( ) n (elementary matrix) 3 ) ( (interchange matrix)) i j 0 P n (i, j) def = 0 ( i j ) 2) c 0 Q n (i; c) def = i diag( c ) = c ( (i, i) c ) 3) i j R n (i, j; c) def = I + ce ij ( E ij ) ( (i, j) c ) 44 ( ) ( ) P n (i, j) = E ij + E ji + k i,j E kk = I E ii E jj + E ij + E ji (i j), Q n (i; c) = I + (c )E ii, R n (i, j; c) = I + ce ij (i j) 3
15 45 ( ) A (m, n) () A P m (i, j) A i j (2) A P n (i, j) A i j (3) A Q m (i; c) A i c (4) A Q n (i; c) A i c (5) A R m (i, j; c) A i j c (6) A R n (i, j; c) A i j c 46 ( ) 45 (elementary transformation) (, elementary row operation) (, elementary column operation) 47 ( ) P n (i, j) = P n (i, j) (i j) Q n (i; c) = Q n (i; c ) (c 0) R n (i, j; c) = R n (i, j; c) (i j) 48 A B B A 43 [2] 4
16 49 ( ) ( n ) () i 0 j 0 P (i 0, j 0 )Q(k; c) = Q(l; c)p (i 0, j 0 ), k l = j 0 i 0 (k i 0 k j 0 ) (k = i 0 ) (k = j 0 ) (2) i 0 j 0, k l P (i 0, j 0 )R(k, l; c) = R(k, l ; c)p (i 0, j 0 ), (i) k, l i 0, j 0 = k = k, l = l (ii) k = i 0 l j 0 k = j 0, l = l (iii) k = j 0 l i 0 k = i 0, l = l (iv) k i 0 l = j 0 k = k, l = i 0 (v) k j 0 l = i 0 k = k, l = j 0 (vi) k = i 0 l = j 0 k = l, l = k (vii) k = j 0 l = i 0 k = l, l = k (3) i 0 j 0 R(i 0, j 0 ; c)q(k; d) = Q(k; d)r(i 0, j 0 ; c ), c c = cd c/d (k i 0 k j 0 ) (k = j 0 ) (k = i 0 ) 40 ( ) i 0 j 0 P (i 0, j 0 ) = Q(j 0 ; )R(i 0, j 0 ; )R(j 0, i 0 ; )R(i 0, j 0 ; ) ( [7] ) 5
17 4 ( ) i j 4 ) i j 2) j i 3) i j 4) j ( swap ) 42 ( ) P 0 P (permutation matrix) P P = P T P T (n ) m P = (p ij ) i σ(i) (i =, 2,, m) p ij = (j = σ(i)) 0 (j σ(i)) σ m σ P σ m P σ σ P P = P = P T = P ( ) P P = P P 2 P k P = (P k ) (P k ) (P 2 ) (P ) = (P k ) T (P k ) T (P 2 ) T (P ) T = (P P 2 P k ) T = P T (m, n) A = a a 2 a m 6
18 m P σ A = P σ A A σ : a a σ() a 2 P σ = a σ(2) a m a σ(m) n P τ A = AP τ A τ : ( a a 2 a n )P τ = ( a τ() a τ(2) a τ(n) ) : Octave LU MATLAB Octave lu() A LU P A = LU ( A = P T LU ) yurichan% octave GNU Octave, version 206 (i386-unknown-freebsd34) Copyright (C) 996, 997, 998, 999, 2000 John W Eaton This is free software with ABSOLUTELY NO WARRANTY For details, type warranty octave:> n=0;a=rand(n,n);[l u p]=lu(a);norm(p *l*u-a) ans = 34269e-6 octave:2> p p = octave:3> p*p ans = octave:4> b=rand(n);x=u\(l\(p*b));norm(a*x-b) ans = 756e-5 octave:5> A = U L (P T ) = U L P Ax = b U\(L\(P*b)) 7
19 42 42 A (symmetric partitioning) ( ) A A 2 A = O A 22 A A A 22 A = ( A O A A 2 A 22 A 22 [7] 422 () A = (a ij ), B = (b ij ) n A + B (2) A = (a ij ), B = (b ij ) n AB A, B : a a 2 a n b b 2 b n a b 0 a 22 a 2n 0 b 22 b 2n = 0 a 22 b 22 ) 0 0 a nn 0 0 b nn 0 0 a nn b nn (3) n A = (a ij ) A a ii 0 (i =, 2,, n) A A (4) A, B AB 0 AB = (c ij ) c i,i+ = 0 ( i n ) (5) A n A n = O [7] (3) n A = (a ij ) a ii 0 ( i n) B = (b ij ) AB = I A, B (4) i > j = a ij = b ij =
20 AB = I n a ik b kj = δ ij ( i n, j n) (4) k= i k j a ik b kj = δ ij ( i n, j n) i > j i, j 2 i j i, j i = j a jj b jj = (42) b jj = a jj i < j 0 = j a ik b kj = a ii b ij + k=i (43) b ij = a ii j k=i+ j k=i+ a ik b kj a ik b kj (42), (43) a ij, b ij (* b ij *) for j := to n do begin b jj := / a jj ; for i := j - downto do begin s := 0; for k := i + to j do s := s + a ik * b kj ; b ij := - s / a ii ; end; end; (* b ij *) for i := to n do begin b ii := / a ii ; for j := i - downto do begin s := 0; for k := j + to i do s := s + b ik * a kj ; b ij := - s / a jj ; end; end; 2 i k j k 0 δ ij 0 9
21 (C++ ) MATRIX inv_u(const MATRIX &a) int n = RowDimension(a); MATRIX b = zeros(n,n); for (int j = ; j <= n; j++) b(j,j) = / a(j,j); for (int i = j - ; i >= ; i--) REAL s = 0; for (int k = i + ; k <= j; k++) s = s + a(i,k) * b(k,j); b(i,j) = - s / a(i,i); return b; MATRIX inv_l(const MATRIX &a) int n = RowDimension(a); MATRIX b = zeros(n,n); for (int i = ; i <= n; i++) b(i,i) = / a(i,i); for (int j = i - ; j >= ; j--) REAL s = 0; for (int k = j + ; k <= i; k++) s = s + b(i,k) * a(k,j); b(i,j) = - s / a(j,j); return b; 423 ( ) n 43 0 LU 0 ( ) LU ( ) 43 (Dolittle LU ) n A = (a ij ) A, A 2,, A n = A A L U LU [7] ( ) n n = ( ) A n b A = c T d 20
22 ( A n c T b d ) = ( A n 0 c T d c T A n b ) ( E n A n b 0 T ) A n = L n U n (L n, U n ) ( ) ( ) L n 0 U n U n A n b L = c T (U n ) d c T A, U = n b 0 T L, U A = LU ( ) A = LU = L U L L = U U I L = L, U = U L, U A = LU ( ) ( ) ( L n 0 U n p A n b q T r 0 T = c T a nn ) (44) (45) (46) (47) L n U n = A n, L n p = b, q T U n = c T, q T p + r = a nn (44) L n, U n (45), (46), (47) p = (L n ) b, q T = c T (U n ), r = a nn q T p = a nn c T (U n ) (L n ) b = a nn A n b 432 (Crout LU ) n A = (a ij ) A, A 2,, A n = A A L U LU A T (LDU ) n A = (a ij ) A, A 2,, A n = A A A = LDU L D U 43 A = LU u ij u ij /u ii U D = diag(u, u 22,, u nn ) 2
23 434 (Cholesky ) n A = (a ij ) A, A 2,, A n = A A A = LDL T L D A = LDU LDU A A = A T = (LDU) T = U T DL T A = LDU (LDU ) L T = U, U T = L A = LDL T 44 LU A LU ( ) A ( ) LU [2] m n (m, n) A A = LU (m > n ) L = (l ij ) m l ii = (i =, 2,, m), l ij = 0 (i < j) U = (u ij ) (m, n) u ij = 0 (i > j) Gauss 0 ( 0 ) A LU A rank A = m A A = AP (P ) LU : AP = LU A ( ) P A = LU 22
24 5 Gauss LU ( LU ) 5 Ax = b A x = A b Gauss ( ) Gauss Gauss Gauss LU ( Gauss ) Gauss LU 3 ( ) Gauss LU 52 Gauss Cramer ( ) Gauss Gauss (Gauss- Jordan ) Gauss 23
25 2x + 3x 2 x 3 = 5 4x + 4x 2 3x 3 = 3 2x + 3x 2 x 3 = , x x 2 x 3 = Gauss x + 3x 2 x 3 = 5, 2x 2 x 3 = 7, 5x 3 = 5 x 3 = 5 5 = 3, x 2 = 7 + x 3 2 = 2, x = 5 3x 2 + x 3 2 = (forward elimination) (backward substitution) = 53 LU 53 A =
26 L = , L 2 = , L 3 = L A = , L 2 L A = L := L 3 L 2 L = L := L = U := LU = A, L 3 L 2 L A = , 532 n L = (l ij ) (lower triangular matrix) 0 : l ij = 0 ( i < j n) L = l 0 l 2 l 22 l n l n,n l nn L = 0 l 2 l n l n,n n U = (U n i ) (upper triangular matrix) 0 : u ij = 0 (i > j) 25
27 U = u u 2 u n u 22 u n,n 0 u nn u 2 u n U = u n,n 0 ( ) ( ) 533 LU A L U A = LU, l 0 l 2 l 22 L =, U = u u 2 u n u 22 u n,n l n l n,n l nn (LU ) 0 u nn A LU (LU decomposition) L Crout LU : A = LU, l 2 L = l n l n,n 0, U = (Crout LU ) u u 2 u n u 22 u n,n 0 u nn U Dolittle LU : A = LU, l 0 l 2 l 22 L =, U = l n l n,n l nn (Dolittle LU ) u 2 u n 0 u n,n 26
28 534 LDU A A = LDU, l 2 L = l n l n,n 0, D = d 0 0 d n, U = u 2 u n 0 u n,n L, D, U LDU 53 LDU A = LDU A = L(DU) Crout LU A = (LD)U Dolittle LU Crout LU Dolittle LU LDU Crout LU A = LU, l 2 L = l N l N,N 0, U = u u 2 u N u 22 u N,N 0 u NN D def = ũ kj def = u kj u kk u 0 u 22 0 u NN (k =, 2,, N; j = k +, k + 2,, N),, Ũ = A = LDŨ ũ 2 ũ N 0 ũ N,N 535 A A = LU LU Ax = b ( A = (LU) = U L L, U ) LUx = b Ly = b, Ux = y 27
29 Ly = b l y = b l 2 y +l 22 y 2 = b 2 l 3 y +l 32 y 2 +l 33 y 3 = b 3 l n y +l n2 y 2 +l n3 y 3 +l nn y n = b n y = b /l, y 2 = (b 2 l 2 y ) /l 22, y 3 = (b 3 l 3 y l 32 y 2 ) /l 33, y i = y n = ( ) i b i l ij y j /l ii, j= ( ) n b n l nj y j /l nn n = n(n + )/2 Ux = y j= u x +u,n 2 x n 2 +u,n x n +u n x n = y, u n 2,n 2 x n 2 +u n 2,n x n +u n 2,n x n = y n 2, u n,n x n +u n,n x n = y n, u n,n x n = y n x n = y n /u nn, x n = (y n u n,n x n ) /u n,n, x n 2 = (y n 2 u n 2,n x n u n 2,n x n ) /u n 2,n 2, x i = x = ( ( y i y n j=i+ u ij x j ) /u ii, ) n u j x j /u j= n = n(n + )/2 n(n + )/2 + n(n + )/2 = n(n + ) Gauss n n 3 /3 LU 28
30 A A b n 2 LU (LU ) A LU LU LU A LU ( ) A ( P P A ) LU ( ) Gauss LU ( ) n 3 /3 + O(n 2 ) A n 3 ( ) 532 ( ) A ( ) L, U LU 533 ( ) LU L U n(n + )/2 + n(n )/2 = n 2 A A A LU 54 Gauss LU Gauss LU ( Gauss LU LU Gauss ) Gauss Ax = b (b R n, A M(n; R)) A, b (A b) 2 29
31 54 k =, 2,, n k i (i = k +,, n) (A b) = (A () b () ), (A () b () ) (A (2) b (2) ) (A (k) b (k) ) (A (k+) b (k+) ) (A (n) b (n) ), u u 2 u n A (n) u 22 u 2n def = = U, b (n) = y 0 u nn A (k) = (a (k) ij ), b(k) = (b (k) i ) () a () ij def = a ij, b () def i = b i (i, j =, 2,, n) (2) A (k) = (a (k) ij ), b(k) = (b (k) i ) k =, 2,, n a (k) ij ( i k; j n) (5) (52) a (k+) ij b (k+) i def = def = (3) U = (u ij ), y = (y i ) a (k) ij a(k) ik a (k) kk a (k) kj b (k) i ( i k) b (k) i a(k) ik a (k) kk b (k) k u ij = a (n) ij, (k + i n; j n), (k + i n), y i = b (n) i A (k) = (a (k) ij ) (k =, 2,, n) C for (k = ; k < n; k++) for (i = k + ; i <= n; i++) q = a[i][k] / a[k][k]; for (j = ; j <= n; j++) a[i][j] = a[i][j] - q * a[k][j]; b[i] = b[i] - q * b[k]; 30
32 542 (53) (54) x n = b n, a nn x k = a kk ( b k n j=k+ a kjx j ) C x[n] = b[n] / a[n][n]; for (k = n - ; k >= ; k--) s = b[k]; for (j = k + ; j <= n; j++) s = s - a[k][j] * x[j]; x[k] = s / a[k][k]; (k = n, n 2,, 2, ) 543 Gauss Gauss /* * gauss-verc */ #include <matrixh> void gauss(int n, matrix a, vector x) int i, j, k; double q; /* */ for (k = ; k < n; k++) for (i = k + ; i <= n; i++) q = a[i][k] / a[k][k]; #ifdef ORIGINAL for (j = ; j <= n; j++) #else for (j = k + ; j <= n; j++) #endif a[i][j] -= q * a[k][j]; x[i] -= q * x[k]; /* */ x[n] /= a[n][n]; for (k = n - ; k >= ; k--) for (j = k + ; j <= n; j++) x[k] -= a[k][j] * x[j]; x[k] /= a[k][k]; 3
33 0 j k+ 544 Gauss LU (A (k) b (k) ) (A (k+) b (k+) ) k i (k + i n) L (k) i A (k+) = L (k) n L (k) n L (k) k+ A(k), b (k+) = L (k) n L (k) n L (k) k+ b(k), k i L (k) i = = I q (k) i E ik, q (k) i q (k) i E ik = (i, k) 0 = a(k) ik a (k) kk, L (k) i L (k) def = L (k) n L (k) n L (k) L (k) k : (55) L = k+ A (k+) = L (k) A (k), b (k+) = L (k) b (k) L def = L (n ) L (n 2) L (2) L () A (n) = LA (), b (n) = Lb () U = LA, q () 2 q () 3 q (2) 3 L def = L A = LU y = Lb q n () q n (2) q n (n ) 32
34 L A LU (55) L = L (n ) L (n 2) L (2) L () L (k) = L (k) n L (k) n L (k) k+ L = L = (L () ) (L (2) ) (L (n 2) ) (L (n ) ) (L (k) ) = (L (k) k+ ) (L (k) (L (k) i ) = n ) (L (k) n ) q (k) i (L (k) ) = (L (k) k+ ) (L (k) n ) (L (k) n ) = U L = q () 2 q () 3 q (2) 3 q n () q n (2) q n (n ) q (k), k+ q n (k) q (k) i def = a(k) ik a (k) kk (k =, 2,, n ; i = k +,, n) b Ax = b Gauss A b LU 33
35 545 LU lu-verc /* * lu-verc */ #include <matrixh> #include "lu-verh" void lu(int n, matrix a, matrix L, matrix u) int i, j, k; double q; for (i = ; i <= n; i++) for (j = ; j <= n; j++) u[i][j] = a[i][j]; L[i][j] = 00; L[i][i] = 0; for (k = ; k < n; k++) for (i = k + ; i <= n; i++) q = u[i][k] / u[k][k]; /* j j k OK (k+ ) */ #ifdef ORIGINAL for (j = ; j <= n; j++) #else for (j = k; j <= n; j++) #endif u[i][j] = u[i][j] - q * u[k][j]; L[i][k] = q; /* A LU A x = b */ void solve(int n, matrix L, matrix U, vector b, vector x) /* 434 */ int i, j; double sum; vector y = new_vector(n + ); /* */ for (i = ; i <= n; i++) sum = b[i]; for (j = ; j < i; j++) sum -= L[i][j] * y[j]; y[i] = sum / L[i][i]; /* */ for (i = n; i >= ; i--) sum = y[i]; for (j = i + ; j <= n; j++) sum -= U[i][j] * x[j]; x[i] = sum / U[i][i]; /* */ free_vector(y); A = LU LU 2 L, U 34
36 L (, 0) U ( 0 ) n 2 ( L U ) u u 2 u 3 u n q () 2 u 22 u 23 u 2n q () 3 q (2) 3 u 33 u 3n q n () q n (2) q n (n ) matrix a L, U a (j k+ ) lu-ver2c /* * lu-ver2c */ #include <matrixh> #include "lu-ver2h" void lu(int n, matrix a) int i, j, k; double q; u nn for (k = ; k < n; k++) for (i = k + ; i <= n; i++) q = a[i][k] / a[k][k]; for (j = k + ; j <= n; j++) a[i][j] = a[i][j] - q * a[k][j]; a[i][k] = q; /* A LU A x = b */ void solve(int n, matrix a, vector b) /* 434 */ int i, j; /* */ for (i = ; i <= n; i++) for (j = ; j < i; j++) b[i] -= a[i][j] * b[j]; /* : L_i,i= */ /* */ for (i = n; i >= ; i--) for (j = i + ; j <= n; j++) b[i] -= a[i][j] * b[j]; b[i] /= a[i][i]; 35
37 lu-ver2c (lu-verc) utilc /* * utilc */ #include <stdioh> #include <matrixh> #include "utilh" /* n A */ void print_matrix(int n, matrix A) int i, j; for (i = ; i <= n; i++) for (j = ; j <= n; j++) printf("%0g ", A[i][j]); printf("\n"); /* n x */ void print_vector(int n, vector x) int i; for (i = ; i <= n; i++) printf("%0g ", x[i]); printf("\n"); /* n A, B AB */ void mul_matrix(int n, matrix AB, matrix A, matrix B) /* */ int i, j, k; double sum; for (i = ; i <= n; i++) for (j = ; j <= n; j++) sum = 00; for (k = ; k <= n; k++) sum += A[i][k] * B[k][j]; AB[i][j] = sum; 36
38 test-lu-verc /* * test-lu-verc --- LU * gcc -I/usr/local/include -c utilc * gcc -I/usr/local/include -c lu-verc * ccmg test-lu-verc utilo lu-vero */ #include <stdioh> #include <matrixh> #include "utilh" #include "lu-verh" int main() int n; matrix a, L, u, Lu; vector b, x; n = 3; /* n a, L, u, Lu */ a = new_matrix(n +, n + ); L = new_matrix(n +, n + ); u = new_matrix(n +, n + ); Lu = new_matrix(n +, n + ); /* n b, x */ b = new_vector(n + ); x = new_vector(n + ); /* a ( p27 ) */ a[][] = 2; a[][2] = 3; a[][3] = -; a[2][] = 4; a[2][2] = 4; a[2][3] = -3; a[3][] = -2; a[3][2] = 3; a[3][3] = -; /* LU */ lu(n, a, L, u); /* a, L, u */ printf("a=\n"); print_matrix(n, a); printf("l=\n"); print_matrix(n, L); printf("u=\n"); print_matrix(n, u); /* L u */ mul_matrix(n, Lu, L, u); printf("l U=\n"); print_matrix(n, Lu); /* (p27) */ b[] = 5; b[2] = 3; b[3] = ; solve(n, L, u, b, x); printf("x=\n"); print_vector(n, x); return 0; 37
39 oyabun% gcc -I/usr/local/include -c utilc oyabun% gcc -I/usr/local/include -c lu-verc oyabun% ccmg test-lu-verc utilo lu-vero oyabun% /test-lu-ver A= L= U= L U= x= 2 3 oyabun% LU = A 38
40 (lu-ver2c) test-lu-ver2c /* * test-lu-ver2c --- LU * gcc -I/usr/local/include -c utilc * gcc -I/usr/local/include -c lu-ver2c * ccmg test-lu-ver2c utilo lu-ver2o */ #include <stdioh> #include <matrixh> #include "utilh" #include "lu-ver2h" int main() int n; matrix a; vector b; n = 3; /* n a */ a = new_matrix(n +, n + ); /* n b, x */ b = new_vector(n + ); /* a ( p27 ) */ a[][] = 2; a[][2] = 3; a[][3] = -; a[2][] = 4; a[2][2] = 4; a[2][3] = -3; a[3][] = -2; a[3][2] = 3; a[3][3] = -; /* a */ printf("a=\n"); print_matrix(n, a); /* b */ b[] = 5; b[2] = 3; b[3] = ; printf("b=\n"); print_vector(n, b); /* LU */ lu(n, a); /* a */ printf("lu A=\n"); print_matrix(n, a); /* (p27) */ solve(n, a, b); printf("x=\n"); print_vector(n, b); return 0; 39
41 oyabun% gcc -I/usr/local/include -c utilc oyabun% gcc -I/usr/local/include -c lu-ver2c oyabun% ccmg test-lu-ver2c utilo lu-ver2o oyabun% /test-lui--ver2 A= b= 5 3 LU A= x= 2 3 oyabun% 55 LU 55 lu-ver4c /* * lu-ver4c --- Gauss LU * * A Gauss * * P A = L U, (P, L, U ) * * P, L, U * */ #include <mathh> #include <matrixh> #include "lu-ver4h" void ipvt2perm(int n, ivector perm, ivector ipvt) int i, m, perm_i; for (i = ; i <= n; i++) perm[i] = i; for (i = ; i < n; i++) m = ipvt[i]; if (i!= m) perm_i = perm[i]; perm[i] = perm[m]; perm[m] = perm_i; /* Gauss LU */ void lu(int n, matrix a, ivector ipvt) int i, j, k, m; double q, t, maxpvt; /* */ ipvt[n] = ; /* */ 40
42 for (k = ; k < n; k++) /* a[i][k] (i=k,k+,,n) */ maxpvt = fabs(a[k][k]); m = k; for (i = k + ; i <= n; i++) if (fabs(a[i][k]) > maxpvt) maxpvt = fabs(a[i][k]); m = i; ipvt[k] = m; /* m */ if (k!= m) /* k m */ for (j = ; j <= n; j++) t = a[k][j]; a[k][j] = a[m][j]; a[m][j] = t; /* */ ipvt[n] = - ipvt[n]; /* */ for (i = k + ; i <= n; i++) q = a[i][k] / a[k][k]; for (j = k + ; j <= n; j++) a[i][j] = a[i][j] - q * a[k][j]; a[i][k] = q; /* A LU (lu() ) A x = b */ void solve(int n, matrix a, vector b, ivector ipvt) int i, j; for (i = ; i < n; i++) int m; double t; m = ipvt[i]; if (i!= m) t = b[m]; b[m] = b[i]; b[i] = t; /* */ for (i = ; i <= n; i++) for (j = ; j < i; j++) b[i] -= a[i][j] * b[j]; /* : L_i,i= */ /* */ for (i = n; i >= ; i--) for (j = i + ; j <= n; j++) b[i] -= a[i][j] * b[j]; b[i] /= a[i][i]; /* ipvt[] P A */ void permute_matrix(int n, matrix pa, matrix a, ivector ipvt) ivector perm = new_ivector(n + ); ipvt2perm(n, perm, ipvt); permute_matrix0(n, pa, a, perm); free_ivector(perm); /* perm[] P A */ 4
43 void permute_matrix0(int n, matrix pa, matrix a, ivector perm) int i, j, m; for (i = ; i <= n; i++) m = perm[i]; for (j = ; j <= n; j++) pa[i][j] = a[m][j]; 552 () test-lu-ver4c /* * test-lu-ver4c --- LU * gcc -I/usr/local/include -c utilc * gcc -I/usr/local/include -c lu-ver4c * ccmg test-lu-ver4c utilo lu-ver4o */ #include <stdioh> #include <matrixh> #include "utilh" #include "lu-ver4h" int main() int n; matrix a; vector b; ivector ipvt; n = 3; /* n a */ a = new_matrix(n +, n + ); /* n b, x */ b = new_vector(n + ); /* */ ipvt = new_ivector(n + ); /* a ( p27 ) */ a[][] = 2; a[][2] = 3; a[][3] = -; a[2][] = 4; a[2][2] = 4; a[2][3] = -3; a[3][] = -2; a[3][2] = 3; a[3][3] = -; /* a */ printf("a=\n"); print_matrix(n, a); /* b */ b[] = 5; b[2] = 3; b[3] = ; printf("b=\n"); print_vector(n, b); /* LU */ lu(n, a, ipvt); /* a */ printf("lu A=\n"); print_matrix(n, a); /* (p27) */ solve(n, a, b, ipvt); printf("x=\n"); print_vector(n, b); return 0; 42
44 test-lu-ver4 oyabun% /test-lu-ver4 A= b= 5 3 LU A= x= 2 3 oyabun% 553 (2) test-lu4c /* * test-lu4c --- LU * * * : gcc -o test-lu4 test-lu4o lu-ver4o matrix-baseo * -L/usr/local/lib -lmatrix -lm */ #include <stdioh> /* standard input & output */ #include <mathh> /* */ #include <matrixh> /* matrix */ #include "lu-ver4h" #include "matrix-baseh" int main() /* */ int n; matrix a, LandU, Lu, diff, pa; ivector perm, ipvt; double matrix_norm_2(); printf("n Hilbert LU \n"); printf("n="); scanf("%d", &n); /* ( ) */ a = new_matrix(n +, n + ); LandU = new_matrix(n +, n + ); Lu = new_matrix(n +, n + ); diff = new_matrix(n +, n + ); pa = new_matrix(n +, n + ); perm = new_ivector(n + ); ipvt = new_ivector(n + ); /* */ #ifdef OLD int i, j; for (i = ; i <= n; i++) 43
45 for (j = ; j <= n; j++) printf("a[%d][%d]=", i, j); scanf("%lf", &a[i][j]); #else hilbert(n, a); #endif printf("a =\n"); display_matrix(n, a, "%f "); /* LU */ copy_matrix(n, LandU, a); lu(n, LandU, ipvt); printf("l, U \n"); display_matrix(n, LandU, "%f "); /* L U */ multiply_lumatrix(n, Lu, LandU); printf("l U=\n"); display_matrix(n, Lu, "%f "); /* P A */ permute_matrix(n, pa, a, ipvt); printf("p A=\n"); display_matrix(n, pa, "%f "); /* P A L U */ subtract_matrix(n, diff, pa, Lu); printf("p A - L U=\n"); display_matrix(n, diff, "%g "); printf(" P A - L U =%g\n", matrix_norm_2(n, diff)); return 0; 44
46 test-lu4 oyabun% /test-lu4 n Hilbert LU n=3 A = L, U L U= P A= P A - L U= P A - L U =0 oyabun% 56 Gauss Cramer 2 (Jordan ) 3 Gauss 3 Cramer n + ( ) Cramer n ( n ) Cramer Cramer 2 Cramer ( ) Gauss Gauss 2 ± 45
47 θ 57 3 Gauss LU ( Thomas 3 ) LU LU mathpc00% make test-lu-trid gcc -O -pipe -c test-lu-tridc gcc -O -pipe -c lu-ver2c gcc -O -pipe -c utilc gcc -o test-lu-trid test-lu-trido lu-ver2o utilo -L/usr/local/lib -lmatrix -lm mathpc00% /test-lu-trid n=7 A= LU A= mathpc00% ( [] Fortran ) ( pivoting) ( 0 Smith [8] (Wilkinson ) ( ) ) 3 Smith [8] 46
48 573 FORTRAN 77 [] c c subroutine trid(a,b,c,f,n,id) integer n,id real a(*),b(*),c(*),f(*) integer i (forward elimination) if (id eq 0) then do i=,n- b(i+)=b(i+)-c(i)*a(i+)/b(i) end do endif do i=,n- f(i+)=f(i+)-f(i)*a(i+)/b(i) end do (backward substitution) f(n)=f(n)/b(n) do i=n-,,- f(i)=(f(i)-c(i)*f(i+))/b(i) end do end 574 C () 0 /* trid-luc -- 3 Gauss */ #include "trid-luh" /* 3 ( ) Ax=b * * * n: * al,ad,au: * (al: ie (lower part) * ad: ie (diagonal part) * au: ie (upper part) * * * ad[0] au[0] 0 0 * al[] ad[] au[] 0 0 * 0 al[2] ad[2] au[2] 0 0 * * al[n-2] ad[n-2] au[n-2] * 0 al[n-] ad[n-] * al[i] = A_i,i-, ad[i] = A_i,i, au[i] = A_i,i+, * al[0], au[n-] ) * * b: * ( 0 ie b[0],b[],,b[n-] ) * * al,ad,au: LU * b: * * call LU * * trisol() * 47
49 * Gauss * * */ void trid(int n, double *al, double *ad, double *au, double *b) trilu(n,al,ad,au); trisol(n,al,ad,au,b); /* LU (pivoting ) */ void trilu(int n, double *al, double *ad, double *au) int i, nm = n - ; /* (forward elimination) */ for (i = 0; i < nm; i++) al[i + ] /= ad[i]; ad[i + ] -= au[i] * al[i + ]; /* LU 3 */ void trisol(int n, double *al, double *ad, double *au, double *b) int i, nm = n - ; /* (forward elimination) */ for (i = 0; i < nm; i++) b[i + ] -= b[i] * al[i + ]; /* (backward substitution) */ b[nm] /= ad[nm]; for (i = n - 2; i >= 0; i--) b[i] = (b[i] - au[i] * b[i + ]) / ad[i]; C trisol() trilu() Fortran C ( LU C ) 575 C (2) /* trid-luc -- 3 Gauss */ #include "trid-luh" /* 3 ( ) Ax=b * * * n: * al,ad,au: * (al: ie (lower part) * ad: ie (diagonal part) * au: ie (upper part) * * * ad[] au[] 0 0 * al[2] ad[2] au[2] 0 0 * 0 al[3] ad[3] au[3] 0 0 * 48
50 * al[n-] ad[n-] au[n-] * 0 al[n] ad[n] * al[i] = A_i,i-, ad[i] = A_i,i, au[i] = A_i,i+, * al[], au[n] ) * * b: * ( ie b[],b[2],,b[n] ) * * al,ad,au: LU * b: * * call LU * * trisol() * * Gauss * * */ void trid(int n, double *al, double *ad, double *au, double *b) trilu(n,al,ad,au); trisol(n,al,ad,au,b); /* LU (pivoting ) */ void trilu(int n, double *al, double *ad, double *au) int i; /* (forward elimination) */ for (i = ; i < n; i++) al[i + ] /= ad[i]; ad[i + ] -= au[i] * al[i + ]; /* LU 3 */ void trisol(int n, double *al, double *ad, double *au, double *b) int i; /* (forward elimination) */ for (i = ; i < n; i++) b[i + ] -= b[i] * al[i + ]; /* (backward substitution) */ b[n] /= ad[n]; for (i = n - ; i >= ; i--) b[i] = (b[i] - au[i] * b[i + ]) / ad[i]; trisol(), trilu(), trid() trisol(), trilu(), trid() ( ) 49
51 void trisol(int n, double *al, double *ad, double *au, double *b) trisol(n, al+, ad+, au+, b+); void trilu(int n, double *al, double *ad, double *au) trilu(n, al+, ad+, au+); void trid(int n, double *al, double *ad, double *au, double *b) trilu(n, al+, ad+, au+, b+); 58 58, N A = (a i,j ) m i j > m = a i,j = 0 a i,j 0 = i j m ( m ) 58 A 3 A 4 ( ) = max i j a ij 0 ( ) ( ) ( ) 0, m N A C 0 A = (a ij ) 0 i,j N m N N 2m + Ã = (ã ik ) 0 i N 0 k 2m 4 50
52 a ij ã ik ã ik a ij 0 i, j N i, j ã i,j i+m ( i j m) a ij = 0 ( i j > m) 0 i N, 0 k 2m i, k a i,i+k m (0 i + k m N ) ã ik = ( ) 583 C 0 A = (a ij ) 0 i,j N m N N m + Ã = (ã ik) 0 i N 0 k m a ij ã ik ã ik a ik 0 i, j N i, j 0 ( i j > m) a ij = ã i,j i (i j i + m) ã j,i j (i m j < i) 0 i N, 0 k m i, k a i,i+k (i + k N ) ã ik = ( ) 584 LU A LU A = LU U U ( (56) ) A det A( : k, : k) 0 (k =, 2,, n) ( A ) A A = LU, L = 0, U = 0 U L U U U = DU, D = 0 0 5, U = 0
53 A = LDU LDU LDU A A = A T = (LDU ) T = (U ) T DL T A LDU U = L T U = DU = DL T l 2 l 3 l n u u 2 u n d u 22 u 2n 0 = d 2 l 32 l n2 l 0 u nn 0 n,n d n 0 U L u ii = d i (i =,, n), u ij = d i lji ( i < j n) (56) l ji = u ij /d i = u ij /u ii ( i < j n) LU /* LU */ void lu(matrix a, int n) int i, j, k; double q; for (i = ; i < n; i++) for (j = i + ; j <= n; j++) q = a[j][i] / a[i][i]; for (k = i + ; k <= n; k++) a[j][k] -= q * a[i][k]; a[j][i] = q; void solve(matrix a, vector b, int n) int i, j; for (i = ; i < n; i++) for (j = i + ; j <= n; j++) b[j] -= a[j][i] * b[i]; b[n] /= a[n][n]; for (i = n - ; i >= ; i--) for (j = i + ; j <= n; j++) b[i] -= a[i][j] * b[j]; b[i] /= a[i][i]; 52
54 L ( ) /* LU ( ) */ void lu2(matrix a, int n) int i, j, k; double q; for (i = ; i < n; i++) for (j = i + ; j <= n; j++) q = a[j][i] / a[i][i]; for (k = i + ; k <= n; k++) a[j][k] -= q * a[i][k]; /* lu() L[j][i] a[j][i] */ /* a[i][j] (i<j) * for (i=; i<=n; i++) for (j=; j<i; j++) a[i][j] = a[j][i] / a[j][j]; */ void solve2(matrix a, vector b, int n) int i, j; for (i = ; i < n; i++) for (j = i + ; j <= n; j++) /* L[j][i] a[i][j] / a[i][i] */ b[j] -= (a[i][j] / a[i][i]) * b[i]; b[n] /= a[n][n]; for (i = n - ; i >= ; i--) for (j = i + ; j <= n; j++) b[i] -= a[i][j] * b[j]; b[i] /= a[i][i]; lu2() a[][] (a[i][j] (i > j) ) void lu3(matrix a, int n) int i, j, k; double q; for (i = ; i < n; i++) for (j = i + ; j <= n; j++) /* a[j][i] a[i][j] */ q = a[i][j] / a[i][i]; /* k i + k j */ for (k = j; k <= n; k++) a[j][k] -= q * a[i][k]; /* solve2() */ 53
55 a[i][j] (i > j) 585 lubandc ( ) /* Gauss * * A m * Ax=b + * * (a_i,j) am, * * am[i][j] = a_i,i+j-m (m i+j < m+n) * = 0 (i+j < m, m+n i+j) * * a_i,j = am[i][j-i+m] (0 j-i+m < 2m+) */ #include <matrixh> /* LU */ void bandlu(int m, int n, matrix am) int i, j, k, m, mm; double aa; m = m - ; for (i = 0; i < m; i++) mm = i + n + ; if (mm > m) mm = m; for (j = i + ; j < mm; j++) /* aa = a[j][i]/a[i][i]; */ aa = am[j][i - j + n] / am[i][n]; for (k = i; k < mm; k++) /* a[j][k] -= aa * a[i][k]; */ am[j][k - j + n] -= aa * am[i][k - i + n]; am[j][i - j + n] = aa; /* LU */ void bandsol(int m, int n, matrix am, vector f) int i, j, jj, m, mm; m = m - ; for (i = ; i < m; i++) jj = i - n; if (jj < 0) jj = 0; for (j = jj; j < i; j++) f[i] -= f[j] * am[i][j - i + n]; f[m] /= am[m][n]; for (i = m - ; i >= 0; i--) mm = i + n + ; 54
56 if (mm > m) mm = m; for (j = i + ; j < mm; j++) f[i] -= f[j] * am[i][j - i + n]; f[i] /= am[i][n]; symbandluc [4] LU ( Fortran ) C /* * symbandluc --- */ #include <matrixh> /* the Gauss elimination method for symmetric band matrices */ /* N m + */ void symbandlu(matrix at, int N, int m) int N, i, j, k, mm; double aa; /* forward elimination; */ N = N - ; for (i = 0; i < N; i++) /* mm = min(i+m,n) */ mm = i + m; if (mm > N) mm = N; for (j = i + ; j < mm; j++) aa = at[i][j-i] / at[i][0]; /* aa = a_i,j / a_i,i */ for (k = j; k < mm; k++) at[j][k-j] -= aa * at[i][k-i]; /* a_j,k -= aa * a_i,k */ void symbandsolve(matrix at, vector f, int N, int m) int N, i, j, k, mm; double aa; /* forward elimination; */ N = N - ; for (i = 0; i < N; i++) mm = i + m; if (mm > N) mm = N; for (j = i + ; j < mm; j++) aa = at[i][j-i] / at[i][0]; /* aa = a_i,j / a_i,i */ f[j] -= aa * f[i]; /* backward substitution */ f[n-] /= at[n-][0]; /* f_n- /= a_n-,n- */ for (i = N - 2; i >= 0; i--) mm = i + m; if (mm > N) mm = N; for (j = i + ; j < mm; j++) f[i] -= at[i][j-i] * f[j]; /* f_i -= at_i,j * f_j */ f[i] /= at[i][0]; /* f_i /= a_i,i */ include symbandluh 55
57 symbandluh /* * symbandluh */ #include <matrixh> void band(matrix at, vector f, int N, int m); void symbandlu(matrix at, int N, int m); void symbandsolve(matrix at, vector f, int N, int m); LAPACK ( ) ( C LAPACK bandluc, symbandluc LAPACK++ ) symbandluc /* * bandtest5c */ #include <stdioh> #include <stdlibh> #include <mathh> #include "matrixh" void lu4(matrix, int, int); void solve4(matrix, vector, int, int); void testmatrix(int, int, matrix, vector, vector); void disp(int, int, matrix, vector, char *, char *); #define FORMAT " %64f " void testmatrix(int n, int m, matrix a, vector x, vector b) int i, j, mm; /* A */ /* A */ for (i = 0; i <= n; i++) for (j = 0; j <= n; j++) a[i][j] = 0; for (i = ; i <= n; i++) mm = i + m; if (mm > n) mm = n; for (j = i + ; j <= mm; j++) a[i][j-i] = rand() / (double) RAND_MAX; a[i][0] = i + ; /* x=(,2,,n)^t b:=a x */ for (i = ; i <= n; i++) x[i] = i; for (i = ; i <= n; i++) b[i] = 0; mm = i - m; if (mm < ) mm = ; for (j = mm; j < i; j++) b[i] += a[j][i-j] * x[j]; 56
58 mm = i + m; if (mm > n) mm = n; for (j = i; j <= mm; j++) b[i] += a[i][j-i] * x[j]; void disp(int n, int m, matrix a, vector x, char *s, char *s2) int i, j; printf(s); for (i = ; i <= n; i++) for (j = 0; j <= m; j++) printf(format, a[i][j]); printf("\n"); printf(s2); for (i = ; i <= n; i++) printf(format, x[i]); printf("\n"); int main() int i, j, k, n, mm, m; matrix a, a0; vector x, b, b0; n = 8; m = 3; a = new_matrix(n +, m + ); b = new_vector(n + ); x = new_vector(n + ); testmatrix(n, m, a, x, b); disp(n, m, a, b, "A=\n", "b=\n"); /* LU */ lu4(a, n, m); solve4(a, b, n, m); disp(n, m, a, b, "LU=\n", "x=\n"); void lu4(matrix a, int n, int m) int i, j, k, mm; double q; for (i = ; i < n; i++) mm = i + m; if (mm > n) mm = n; for (j = i + ; j <= mm; j++) /* q = a_ji / a_ii a_ji a_ij */ q = a[i][j-i] / a[i][0]; /* for (k = i + ; k <= mm; k++) */ for (k = j; k <= mm; k++) a[j][k-j] -= q * a[i][k-i]; void solve4(matrix a, vector b, int n, int m) int i, j, mm; for (i = ; i < n; i++) 57
59 mm = i + m; if (mm > n) mm = n; for (j = i + ; j <= mm; j++) /* b[j] -= L[j][i] * b[i]; */ b[j] -= (a[i][j-i] / a[i][0]) * b[i]; b[n] /= a[n][0]; for (i = n - ; i >= ; i--) mm = i + m; if (mm > n) mm = n; for (j = i + ; j <= mm; j++) b[i] -= a[i][j-i] * b[j]; b[i] /= a[i][0]; oyabun% ccmg bandtest5c oyabun% /bandtest5 A= b= LU= x= oyabun% 586 Poisson Dirichlet N n := N 2 n m N ( ) Gauss n 3 = N 6 5 N = 00 = 0 2 n = N 2 = 0 4, n 2 = N 4 = (0 2 ) 4 = 0 8 = 00M C double 8B 800MB N 6 = (0 2 ) 6 = 0 2 = T = 000G GFLOPS 000 0MFLOPS 5 n 3 /3 n 3 /3 58
60 N = = 64 nm 2 nm = N 3 nm 2 = N 4 8 nmb = 8N 3 B = 8(0 2 ) 3 B = B = 8MB nm 2 = N 4 = (0 2 ) 4 = 0 8 = 00M 0MFLOPS 0 N = = 6 59 Gauss ( ) Gauss LAPACK 59
61 6 Gauss LU ( ) 6 Gauss 6 ( a (k) kk ) 0 A = (a ij ) M(n; R), b R n (6) Ax = b 62 (6) a () x + a () 2 x a () n x n = b () a () 2 x + a () 22 x a () 2n x n = b () 2 a () 3 x + a () 32 x a () 3n x n = b () 3 a () n x + a () n2 x a () nnx n = b () n () 2,, n a () x + a () 2 x a () n x n = b () a (2) 22 x a (2) 2n x n = b (2) 2 a (2) 32 x a (2) 3n x n = b (2) 3 a (2) n2 x a (2) nnx n = b (2) n 60
62 q 2 = a () 2 /a (), q 3 = a () 3 /a (),, q n = a () n /a (), a (2) 22 = a () 22 q 2 a () 2, a (2) 23 = a () 23 q 2 a () 3,, a (2) 2n = a () 2n q 2 a () n, b (2) 2 = b () 2, a (2) 32 = a () 32 q 3 a () 2, a (2) 33 = a () 33 q 3 a () 3,, a (2) 3n = a () 3n q 3 a () n, b (2) 3 = b () 3, a (2) i2 = a() i2 q ia () 2, a (2) i3 = a() i3 q ia () 3,, a (2) in = a() in q ia () n, b (2) i = b () i, a (2) n2 = a () n2 q n a () 2, a (2) n3 = a () n3 q n a () 3,, a (2) nn = a () nn q n a () n, b (2) n = b () n k a () x + a () 2 x a () k + + a () n x n = b () a (2) 22 x a (2) 2k + + a (2) 2n x n = b (2) 2 a (k) kk a k + + a (k) 3n x n = b (k) 3 k k +,, n a (k) nk x k + + a (k) nnx n = b (k) n a () x + a () 2 x a () k x k + a (),k+ x k+ + + a () n x n = b () a (2) 22 x a (2) 2k x k + a (2) 2,k+ x k+ + + a (2) 2n x n = b (2) 2 a (k) kk x k + a (k) k,k+ x k+ + + a (k) 3n x n = b (k) k a (k+) k+,k+ x k+ + + a (k+) 3n x n = b (k+) k+ a (k+) k+,k+ x k+ + + a (k+) 3n x n = b (k+) k+ q ik = a (k) ik /a(k) kk (i = k +, k + 2,, n), a (k+) ij = a (k) ij q ik a (k) kj (i = k +, k + 2,, n; j = k +, k + 2,, n), b (k+) i = b (k) i q ik b (k) k (i = k +, k + 2,, n) n a () x + a () 2 x 2 + a (),n x n + a (),nx n = b (), a (2) 22 x 2 + a (2) 2,n x n + a (2) 2,nx n = b (2) 2, (62) a (n ) n,n x n + a n,nx (n ) n = b (n ) n, a n,nx (n) n = b n (n) 6
63 (62) : x n = b n (n) ( x n = /a nn (n), b (n ) n a (n ) n,nx n ) /a (n ) n,n, x k = x = ( ( b (k) k b () n i=k+ i=2 a (k) ki x i n a () i x i ) ) /a (k) kk, /a () 63 Ax = b A b A () = (A b) = a () a () 2 a () n b () a () 2 a () 22 a () 2n b () 2 a () n a () n2 a () nn b () n a () ij = a ij (i, j =, 2,, n), b () = b i (i =, 2,, n) k k +,, n k A (k) = a () a () 2 a () k a (),k+ a (),n b () a (2) 22 a (2) 2k a (2) 2,k+ a (2) 2,n b (2) 2 a (k) kk a (k) k+,k 0 a (k) n,k a (k) k,k+ a (k) k,n a (k) k+,k+ a (k) k+,n a (k) n,k+ a (k) n,n b (k) k b (k) k+ b (k) n A (k+) = a () a () 2 a () k a (),k+ a (),n b () a (2) 22 a (2) 2k a (2) 2,k+ a (2) 2,n b (2) 2 a (k) kk a (k) k,k+ a (k) k,n a (k+) k+,k+ a (k+) k+,n 0 a (k+) n,k+ a (k+) n,n b (k) k b (k+) k+ b (k+) n 62
64 M k = q k+,k q k+2,k 0 q n,k 0 0 : A (k+) = M k A (k) L def = M n M n 2 M 2 M A () (63) LA () = A (n) = a () a () 2 a () 3 a () n b () a (2) 22 a (2) 23 a (2) 2n b (2) 2 a (3) 33 a (3) 3n b (3) 3 a (n) nn b (n) n LA = a () a () 2 a () 3 a () n a (2) 22 a (2) 23 a (2) 2n a (3) 33 a (3) 3n a (n) nn def = U, L b b 2 b n = b () b (2) 2 b (n) n (M k ) = q k+,k q k+2,k 0 q n,k 0 0 ( ) L def = L = (M ) (M 2 ) (M n ) 63
65 L = q 2 q 3 q 32 0 q 43 q n q n2 q n3 q n,n LA = U A = LU A LU L det A = det L det U = LU ( ) 6 ( ) A GL(n; R) Gauss r a (k) kk (k =, 2,, r) A k δ k ( δ 0 = ) a (k) kk = δ k δ k n k= a (k) kk k k U k : δ k = a () a (2) 22 a (k) kk 62 LU 62 (LU ) n A = (a ij ) LU A 0 : a a k = det δ k def 0 (k =, 2,, n) a k a kk Crout LU Dolittle LU LDU 6 [] [9] ( Rice [6] ) 64
66 63 LU ( [5] ) 63 Cholesky 63 ( Cholesky ) N A = (a ij ) δ k (k =, 2,, N) 0 A = LDL T (L, D ) L = l 2 l 3 l 32 0 l N l N2 l N,N, D = d 0 d 2 0 d N LDL T (i, j) (l i, l i,2 l i,i 0 0) d l j d 2 l j2 d j l j,j d j 0 0 = mini,j k= d k l ik l jk A i j l ii = i i d i + d k l 2 ik (j = i) k= a ij = d k l ik l jk = i k= d k l ik l jk + d i l ji (j = i +, i + 2,, N) k= i =, 2,, N i d i = a ii d k l 2 ik, k= ) l ji = i (a ij d k l ik l jk d i k= (j = i +,, N) d i, l ji i j d i Gauss i d (i) ii 0 65
67 d = a = δ 0, l j = a j /d (j = 2,, N), d 2 = a 22 d l 2 2 = δ 2 /δ 0, l j2 = (a 2j d l 2 l j )/d 2 (j = 3,, N), d 3 = a 33 d l 2 3 d 2 l 2 32 = δ 3 /δ 2 0, l j3 = (a 3j d l 3 l j d 2 l 32 l j2 )/d 3 (j = 4,, N), A Cholesky LU 632 Cholesky A 62 A LDU : A = LDU L = U T A = U T DU D = G = G 2 = D, G T = G a () a (2) 22 a (k) kk > 0 a () a (2) 22 a (N) NN a (N) NN A = U T DU = U T G 2 U = U T G T GU = (GU) T (GU) = S T S S def = LG A = S T S Cholesky Cholesky ( D G ) S S T S = A s i s j + s 2i s 2j + + s ii s ij = a ij ( ) i s ii = aii s 2 kj, s i ij = a ij s ki s kj /s ii k= k= 66
68 64 A LU A A ( ) Gauss ( ) Crout LU A LU P P A LU Gauss ( ) P P A Crout LU LU Crout Dolittle LU 65 ( ) LINPACK, LAPACK ( ) ( ) rnd() ( ) 67
69 [],, 99 [2], 2003, I, II,, (993, 994) [3],, 985 [4], [5] 7, 984 [6] J R Rice Numerical Methods, Software, and Analysis McGraw-Hill, 983 [7], 985 [8] G D Smith Numerical solution of partial differential equations third edition Clarendon Press Oxford, 986 G D,,, (996) [9], 988 [0], [],, 99 68
1 5 13 4 1 41 1 411 1 412 2 413 3 414 3 415 4 42 6 43 LU 7 431 LU 10 432 11 433 LU 11 44 12 441 13 442 13 443 SOR ( ) 14 444 14 445 15 446 16 447 SOR 16 448 16 45 17 4 41 n x 1,, x n a 11 x 1 + a 1n x
More informationGauss
15 1 LU LDL T 6 : 1g00p013-5 1 6 1.1....................................... 7 1.2.................................. 8 1.3.................................. 8 2 Gauss 9 2.1.....................................
More information1 4 1 ( ) ( ) ( ) ( ) () 1 4 2
7 1995, 2017 7 21 1 2 2 3 3 4 4 6 (1).................................... 6 (2)..................................... 6 (3) t................. 9 5 11 (1)......................................... 11 (2)
More informationA11 (1993,1994) 29 A12 (1994) 29 A13 Trefethen and Bau Numerical Linear Algebra (1997) 29 A14 (1999) 30 A15 (2003) 30 A16 (2004) 30 A17 (2007) 30 A18
2013 8 29y, 2016 10 29 1 2 2 Jordan 3 21 3 3 Jordan (1) 3 31 Jordan 4 32 Jordan 4 33 Jordan 6 34 Jordan 8 35 9 4 Jordan (2) 10 41 x 11 42 x 12 43 16 44 19 441 19 442 20 443 25 45 25 5 Jordan 26 A 26 A1
More informationLINEAR 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
More information2 [1] 7 5 C 2.1 (kikuchi-fem-mac ) input.dat (cat input.dat type input.dat ))
2.3 2007 8, 2011 6 21, 2012 5 29 1 (1) (2) (3) 2 Ω Poisson u = f (in Ω), u = 0 (on Γ 1 ), u n = 0 (on Γ 2) f Γ 1, Γ 2 Γ := Ω n Γ Ω (1980) Fortran : kikuchi-fem-mac.tar.gz 1 ( fem, 6701) tar xzf kikuchi-fem-mac.tar.gz
More informationQR
1 7 16 13 1 13.1 QR...................................... 2 13.1.1............................................ 2 13.1.2..................................... 3 13.1.3 QR........................................
More informationsim98-8.dvi
8 12 12.1 12.2 @u @t = @2 u (1) @x 2 u(x; 0) = (x) u(0;t)=u(1;t)=0fort 0 1x, 1t N1x =1 x j = j1x, t n = n1t u(x j ;t n ) Uj n U n+1 j 1t 0 U n j =1t=(1x) 2 = U n j+1 0 2U n j + U n j01 (1x) 2 (2) U n+1
More information2000 7 17 iii,,.,,,,.,.,,. =,,.,,.,.,,,,,,, fortran,.,,,,.,,, iv (i),., 10,, 10 1. (ii),, fortran, fortran, C,.. (i),., 10 23.. (ii),.,, fortran Pasal,, for, if then else. C., fortran C.,.,,.,.,,.,,.,.,,,,.
More informationI
I 998 208 0 9 Dirichlet ( ) 5 5 2 6 2 6 22 6 23 6 3 Dirichlet 7 3 7 32 7 4 Neumann 9 4 9 42 0 43 44 4 45 Neumann 4 5 6 5 Robin 6 52 7 53 Robin 22 6 23 6 23 62 24 2 2 25 2 Fourier 25 22 27 3 2 32 3 Target
More information第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
More informationC言語による数値計算プログラミング演習
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
More informationII 2 3.,, A(B + C) = AB + AC, (A + B)C = AC + BC. 4. m m A, m m B,, m m B, AB = BA, A,, I. 5. m m A, m n B, AB = B, A I E, 4 4 I, J, K
II. () 7 F 7 = { 0,, 2, 3, 4, 5, 6 }., F 7 a, b F 7, a b, F 7,. (a) a, b,,. (b) 7., 4 5 = 20 = 2 7 + 6, 4 5 = 6 F 7., F 7,., 0 a F 7, ab = F 7 b F 7. (2) 7, 6 F 6 = { 0,, 2, 3, 4, 5 },,., F 6., 0 0 a F
More informationD D 1/2 L (LD 1/2 L ) A = LL T A P AP T = LDL T (P, L, D ) ( [2], [3] ) A 0 A = LDL T (L, D ) ( Cholesky ) A A = LL T (L ) ( Cholesky ) Trefethen and
Cholesky 2008 6 9, 2013 8 25 Cholesky Sylvester L U U 1, Cholesky LU ( Hermite Hermite ) LU LU Cholesky Cholesky A A = LDU (L, D, U ) LDU LDU A = A T = U T D T L T = U T DL T L = U T, U = L T A = LDL T.
More information1 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)
More information(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
More informationlinearal1.dvi
19 4 30 I 1 1 11 1 12 2 13 3 131 3 132 4 133 5 134 6 14 7 2 9 21 9 211 9 212 10 213 13 214 14 22 15 221 15 222 16 223 17 224 20 3 21 31 21 32 21 33 22 34 23 341 23 342 24 343 27 344 29 35 31 351 31 352
More informationx, 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
More information[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,
More informationver Web
ver201723 Web 1 4 11 4 12 5 13 7 2 9 21 9 22 10 23 10 24 11 3 13 31 n 13 32 15 33 21 34 25 35 (1) 27 4 30 41 30 42 32 43 36 44 (2) 38 45 45 46 45 5 46 51 46 52 48 53 49 54 51 55 54 56 58 57 (3) 61 2 3
More information(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
More information2 (2016 3Q N) c = o (11) Ax = b A x = c A n I n n n 2n (A I n ) (I n X) A A X A n A A A (1) (2) c 0 c (3) c A A i j n 1 ( 1) i+j A (i, j) A (i, j) ã i
[ ] (2016 3Q N) a 11 a 1n m n A A = a m1 a mn A a 1 A A = a n (1) A (a i a j, i j ) (2) A (a i ca i, c 0, i ) (3) A (a i a i + ca j, j i, i ) A 1 A 11 0 A 12 0 0 A 1k 0 1 A 22 0 0 A 2k 0 1 0 A 3k 1 A rk
More information(Basic Theory of Information Processing) 1
(Basic Theory of Information Processing) 1 10 (p.178) Java a[0] = 1; 1 a[4] = 7; i = 2; j = 8; a[i] = j; b[0][0] = 1; 2 b[2][3] = 10; b[i][j] = a[2] * 3; x = a[2]; a[2] = b[i][3] * x; 2 public class Array0
More informationPart () () Γ 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
More informationmain.dvi
y () 5 C Fortran () Fortran 32bit 64bit 2 0 1 2 1 1bit bit 3 0 0 2 1 3 0 1 2 1 bit bit byte 8bit 1byte 3 0 10010011 2 1 3 0 01001011 2 1 byte Fortran A A 8byte double presicion y ( REAL*8) A 64bit 4byte
More information20 9 19 1 3 11 1 3 111 3 112 1 4 12 6 121 6 122 7 13 7 131 8 132 10 133 10 134 12 14 13 141 13 142 13 143 15 144 16 145 17 15 19 151 1 19 152 20 2 21 21 21 211 21 212 1 23 213 1 23 214 25 215 31 22 33
More informationC による数値計算法入門 ( 第 2 版 ) 新装版 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 新装版 1 刷発行時のものです.
C による数値計算法入門 ( 第 2 版 ) 新装版 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. http://www.morikita.co.jp/books/mid/009383 このサンプルページの内容は, 新装版 1 刷発行時のものです. i 2 22 2 13 ( ) 2 (1) ANSI (2) 2 (3) Web http://www.morikita.co.jp/books/mid/009383
More information(1) (2) (1) (2) 2 3 {a n } a 2 + a 4 + a a n S n S n = n = S n
. 99 () 0 0 0 () 0 00 0 350 300 () 5 0 () 3 {a n } a + a 4 + a 6 + + a 40 30 53 47 77 95 30 83 4 n S n S n = n = S n 303 9 k d 9 45 k =, d = 99 a d n a n d n a n = a + (n )d a n a n S n S n = n(a + a n
More information1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main
C 2007 5 29 C 1 11 2 2.1 main() 1 FORTRAN C main() main main() main() 1 return 1 1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return
More informationad bc A A A = ad bc ( d ) b c a n A n A n A A det A A ( ) a b A = c d det A = ad bc σ {,,,, n} {,,, } {,,, } {,,, } ( ) σ = σ() = σ() = n sign σ sign(
I n n A AX = I, YA = I () n XY A () X = IX = (YA)X = Y(AX) = YI = Y X Y () XY A A AB AB BA (AB)(B A ) = A(BB )A = AA = I (BA)(A B ) = B(AA )B = BB = I (AB) = B A (BA) = A B A B A = B = 5 5 A B AB BA A
More information5 Laplace Poisson Green ( ) Eigen Jordan 24 1 Laplace u = 0 ( ) (2 ϕ Laplace Neumann ϕ = 0 in, ϕ n = v n
( ) 2017 6 20, 2017 7 24 http://nalabmindmeijiacjp/~mk/complex2/ 1 2 2 Poisson 2 21 2 22 1 3 221 3 222 C 4 23 2 ( ) 7 231 7 232 ( 1 ) 8 233 MATLAB 9 24 11 25 11 3 Poisson 11 31 Ritz-Galerkin 12 32 1 13
More information並列計算の数理とアルゴリズム サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 初版 1 刷発行時のものです.
並列計算の数理とアルゴリズム サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. http://www.morikita.co.jp/books/mid/080711 このサンプルページの内容は, 初版 1 刷発行時のものです. Calcul scientifique parallèle by Frédéric Magoulès and François-Xavier
More information2012年度HPCサマーセミナー_多田野.pptx
! CCS HPC! I " tadano@cs.tsukuba.ac.jp" " 1 " " " " " " " 2 3 " " Ax = b" " " 4 Ax = b" A = a 11 a 12... a 1n a 21 a 22... a 2n...... a n1 a n2... a nn, x = x 1 x 2. x n, b = b 1 b 2. b n " " 5 Gauss LU
More information8.1 Fubini 8.2 Fubini 9 (0%) 10 (50%) Carathéodory 10.3 Fubini 1 Introduction 1 (1) (2) {f n (x)} n=1 [a, b] K > 0 n, x f n (x) K < ( ) x [a
% 100% 1 Introduction 2 (100%) 2.1 2.2 2.3 3 (100%) 3.1 3.2 σ- 4 (100%) 4.1 4.2 5 (100%) 5.1 5.2 5.3 6 (100%) 7 (40%) 8 Fubini (90%) 2007.11.5 1 8.1 Fubini 8.2 Fubini 9 (0%) 10 (50%) 10.1 10.2 Carathéodory
More information数学Ⅱ演習(足助・09夏)
II I 9/4/4 9/4/2 z C z z z z, z 2 z, w C zw z w 3 z, w C z + w z + w 4 t R t C t t t t t z z z 2 z C re z z + z z z, im z 2 2 3 z C e z + z + 2 z2 + 3! z3 + z!, I 4 x R e x cos x + sin x 2 z, w C e z+w
More information1 8, : 8.1 1, 2 z = ax + by + c ax by + z c = a b +1 x y z c = 0, (0, 0, c), n = ( a, b, 1). f = n i=1 a ii x 2 i + i<j 2a ij x i x j = ( x, A x), f =
1 8, : 8.1 1, z = ax + by + c ax by + z c = a b +1 x y z c = 0, (0, 0, c), n = ( a, b, 1). f = a ii x i + i
More information+ 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
More informationXMPによる並列化実装2
2 3 C Fortran Exercise 1 Exercise 2 Serial init.c init.f90 XMP xmp_init.c xmp_init.f90 Serial laplace.c laplace.f90 XMP xmp_laplace.c xmp_laplace.f90 #include int a[10]; program init integer
More information弾性定数の対称性について
() by T. oyama () ij C ij = () () C, C, C () ij ji ij ijlk ij ij () C C C C C C * C C C C C * * C C C C = * * * C C C * * * * C C * * * * * C () * P (,, ) P (,, ) lij = () P (,, ) P(,, ) (,, ) P (, 00,
More information1 Introduction 1 (1) (2) (3) () {f n (x)} n=1 [a, b] K > 0 n, x f n (x) K < ( ) x [a, b] lim f n (x) f(x) (1) f(x)? (2) () f(x)? b lim a f n (x)dx = b
1 Introduction 2 2.1 2.2 2.3 3 3.1 3.2 σ- 4 4.1 4.2 5 5.1 5.2 5.3 6 7 8. Fubini,,. 1 1 Introduction 1 (1) (2) (3) () {f n (x)} n=1 [a, b] K > 0 n, x f n (x) K < ( ) x [a, b] lim f n (x) f(x) (1) f(x)?
More information行列代数2010A
(,) A (,) B C = AB a 11 a 1 a 1 b 11 b 1 b 1 c 11 c 1 c a A = 1 a a, B = b 1 b b, C = AB = c 1 c c a 1 a a b 1 b b c 1 c c i j ij a i1 a i a i b 1j b j b j c ij = a ik b kj b 1j b j AB = a i1 a i a ik
More information離散最適化基礎論 第 11回 組合せ最適化と半正定値計画法
11 okamotoy@uec.ac.jp 2019 1 25 2019 1 25 10:59 ( ) (11) 2019 1 25 1 / 38 1 (10/5) 2 (1) (10/12) 3 (2) (10/19) 4 (3) (10/26) (11/2) 5 (1) (11/9) 6 (11/16) 7 (11/23) (11/30) (12/7) ( ) (11) 2019 1 25 2
More information2012 A, N, Z, Q, R, C
2012 A, N, Z, Q, R, C 1 2009 9 2 2011 2 3 2012 9 1 2 2 5 3 11 4 16 5 22 6 25 7 29 8 32 1 1 1.1 3 1 1 1 1 1 1? 3 3 3 3 3 3 3 1 1, 1 1 + 1 1 1+1 2 2 1 2+1 3 2 N 1.2 N (i) 2 a b a 1 b a < b a b b a a b (ii)
More informationall.dvi
29 4 Green-Lagrange,,.,,,,,,.,,,,,,,,,, E, σ, ε σ = Eε,,.. 4.1? l, l 1 (l 1 l) ε ε = l 1 l l (4.1) F l l 1 F 30 4 Green-Lagrange Δz Δδ γ = Δδ (4.2) Δz π/2 φ γ = π 2 φ (4.3) γ tan γ γ,sin γ γ ( π ) γ tan
More information1. 1 BASIC PC BASIC BASIC BASIC Fortran WS PC (1.3) 1 + x 1 x = x = (1.1) 1 + x = (1.2) 1 + x 1 = (1.
Section Title Pages Id 1 3 7239 2 4 7239 3 10 7239 4 8 7244 5 13 7276 6 14 7338 7 8 7338 8 7 7445 9 11 7580 10 10 7590 11 8 7580 12 6 7395 13 z 11 7746 14 13 7753 15 7 7859 16 8 7942 17 8 Id URL http://km.int.oyo.co.jp/showdocumentdetailspage.jsp?documentid=
More informationc-all.dvi
III(994) (994) from PSL (9947) & (9922) c (99,992,994,996) () () 2 3 4 (2) 2 Euler 22 23 Euler 24 (3) 3 32 33 34 35 Poisson (4) 4 (5) 5 52 ( ) 2 Turbo 2 d 2 y=dx 2 = y y = a sin x + b cos x x = y = Fortran
More informationall.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
More information2008 ( 13 ) C LAPACK 2008 ( 13 )C LAPACK p. 1
2008 ( 13 ) C LAPACK LAPACK p. 1 Q & A Euler http://phase.hpcc.jp/phase/mppack/long.pdf KNOPPIX MT (Mersenne Twister) SFMT., ( ) ( ) ( ) ( ). LAPACK p. 2 C C, main Asir ( Asir ) ( ) (,,...), LAPACK p.
More informationnumb.dvi
11 Poisson kanenko@mbkniftycom alexeikanenko@docomonejp http://wwwkanenkocom/ , u = f, ( u = u+f u t, u = f t ) 1 D R 2 L 2 (D) := {f(x,y) f(x,y) 2 dxdy < )} D D f,g L 2 (D) (f,g) := f(x,y)g(x,y)dxdy (L
More information1 Ricci V, V i, W f : V W f f(v ) = Imf W ( ) f : V 1 V k W 1
1 Ricci V, V i, W f : V W f f(v = Imf W ( f : V 1 V k W 1 {f(v 1,, v k v i V i } W < Imf > < > f W V, V i, W f : U V L(U; V f : V 1 V r W L(V 1,, V r ; W L(V 1,, V r ; W (f + g(v 1,, v r = f(v 1,, v r
More informationSO(2)
TOP URL http://amonphys.web.fc2.com/ 1 12 3 12.1.................................. 3 12.2.......................... 4 12.3............................. 5 12.4 SO(2).................................. 6
More information<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>
Visual Basic でわかるやさしい有限要素法の基礎 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. http://www.morikita.co.jp/books/mid/092001 このサンプルページの内容は, 初版 1 刷発行当時のものです. URL http://www.morikita.co.jp/soft/92001/ horibe@mx.ibaraki.ac.jp
More information6 6.1 sound_wav_files flu00.wav.wav 44.1 khz 1/44100 spwave Text with Time spwave t T = N t N 44.1 khz t = 1 sec j t f j {f 0, f 1, f 2,, f N 1
6 6.1 sound_wav_files flu00.wav.wav 44.1 khz 1/44100 spwave Text with Time spwave t T = t 44.1 khz t = 1 sec 44100 j t f j {f 0, f 1, f 2,, f 1 6.2 T {f 0, f 1, f 2,, f 1 T ft) f j = fj t) j = 0, 1, 2,,
More information:30 12:00 I. I VI II. III. IV. a d V. VI
2017 2017 08 03 10:30 12:00 I. I VI II. III. IV. a d V. VI. 80 100 60 1 I. Backus-Naur BNF X [ S ] a S S ; X X X, S [, a, ], ; BNF X (parse tree) (1) [a;a] (2) [[a]] (3) [a;[a]] (4) [[a];a] : [a] X 2 222222
More informationスライド 1
数値解析 平成 24 年度前期第 13 週 [7 月 11 日 ] 静岡大学創造科学技術大学院情報科学専攻工学部機械工学科計測情報講座 三浦憲二郎 講義アウトライン [7 月 11 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ラグランジュ補間 形状処理工学の基礎 点列からの曲線の生成 T.Kanai, U.Tokyo 関数近似 p.116 複雑な関数を簡単な関数で近似する関数近似 閉区間
More informationX G P G (X) G BG [X, BG] S 2 2 2 S 2 2 S 2 = { (x 1, x 2, x 3 ) R 3 x 2 1 + x 2 2 + x 2 3 = 1 } R 3 S 2 S 2 v x S 2 x x v(x) T x S 2 T x S 2 S 2 x T x S 2 = { ξ R 3 x ξ } R 3 T x S 2 S 2 x x T x S 2
More informationスライド 1
数値解析 平成 29 年度前期第 14 週 [7 月 10 日 ] 静岡大学工学研究科機械工学専攻ロボット 計測情報分野創造科学技術大学院情報科学専攻 三浦憲二郎 期末試験 7 月 31 日 ( 月 ) 9 10 時限 A : 佐鳴会議室 B : 佐鳴ホール 講義アウトライン [7 月 10 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ( 復習 ) ラグランジュ補間 形状処理工学の基礎
More information1. A0 A B A0 A : A1,...,A5 B : B1,...,B
1. A0 A B A0 A : A1,...,A5 B : B1,...,B12 2. 3. 4. 5. A0 A B f : A B 4 (i) f (ii) f (iii) C 2 g, h: C A f g = f h g = h (iv) C 2 g, h: B C g f = h f g = h 4 (1) (i) (iii) (2) (iii) (i) (3) (ii) (iv) (4)
More information( )
7..-8..8.......................................................................... 4.................................... 3...................................... 3..3.................................. 4.3....................................
More information: : : : ) ) 1. d ij f i e i x i v j m a ij m f ij n x i =
1 1980 1) 1 2 3 19721960 1965 2) 1999 1 69 1980 1972: 55 1999: 179 2041999: 210 211 1999: 211 3 2003 1987 92 97 3) 1960 1965 1970 1985 1990 1995 4) 1. d ij f i e i x i v j m a ij m f ij n x i = n d ij
More informationjoho12.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
More information3. :, c, ν. 4. Burgers : t + c x = ν 2 u x 2, (3), ν. 5. : t + u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,., ν. t +
B: 2016 12 2, 9, 16, 2017 1 6 1,.,,,,.,.,,,., 1,. 1. :, ν. 2. : t = ν 2 u x 2, (1), c. t + c x = 0, (2). e-mail: iwayama@kobe-u.ac.jp,. 1 3. :, c, ν. 4. Burgers : t + c x = ν 2 u x 2, (3), ν. 5. : t +
More informationii
ii iii 1 1 1.1..................................... 1 1.2................................... 3 1.3........................... 4 2 9 2.1.................................. 9 2.2...............................
More information1 (bit ) ( ) PC WS CPU IEEE754 standard ( 24bit) ( 53bit)
GNU MP BNCpack tkouya@cs.sist.ac.jp 2002 9 20 ( ) Linux Conference 2002 1 1 (bit ) ( ) PC WS CPU IEEE754 standard ( 24bit) ( 53bit) 10 2 2 3 4 5768:9:; = %? @BADCEGFH-I:JLKNMNOQP R )TSVU!" # %$ & " #
More informationコンピュータ概論
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
More information16 B
16 B (1) 3 (2) (3) 5 ( ) 3 : 2 3 : 3 : () 3 19 ( ) 2 ax 2 + bx + c = 0 (a 0) x = b ± b 2 4ac 2a 3, 4 5 1824 5 Contents 1. 1 2. 7 3. 13 4. 18 5. 22 6. 25 7. 27 8. 31 9. 37 10. 46 11. 50 12. 56 i 1 1. 1.1..
More informationD 24 D D D
5 Paper I.R. 2001 5 Paper HP Paper 5 3 5.1................................................... 3 5.2.................................................... 4 5.3.......................................... 6
More informationBessel ( 06/11/21) Bessel 1 ( ) 1.1 0, 1,..., n n J 0 (x), J 1 (x),..., J n (x) I 0 (x), I 1 (x),..., I n (x) Miller (Miller algorithm) Bess
Bessel 5 3 11 ( 6/11/1) Bessel 1 ( ) 1.1, 1,..., n n J (x), J 1 (x),..., J n (x) I (x), I 1 (x),..., I n (x) Miller (Miller algorithm) Bessel (6 ) ( ) [1] n n d j J n (x), d j I n (x) Deuflhard j= j=.1
More informationp = 1, 2, cos 2n + p)πj = cos 2nπj 2n + p)πj, sin = sin 2nπj 7.1) f j = a ) 0 + a p + a n+p cos 2nπj p=1 p=0 1 + ) b n+p p=0 sin 2nπj 1 2 a 0 +
7 7.1 sound_wav_files flu00.wav.wav 44.1 khz 1/44100 spwave Text with Time spwave T > 0 t 44.1 khz t = 1 44100 j t f j {f 0, f 1, f 2,, f 1 = T t 7.2 T {f 0, f 1, f 2,, f 1 T ft) f j = fj t) j = 0, 1,
More informationC 2 / 21 1 y = x 1.1 lagrange.c 1 / Laglange / 2 #include <stdio.h> 3 #include <math.h> 4 int main() 5 { 6 float x[10], y[10]; 7 float xx, pn, p; 8 in
C 1 / 21 C 2005 A * 1 2 1.1......................................... 2 1.2 *.......................................... 3 2 4 2.1.............................................. 4 2.2..............................................
More informationIA 2013 : :10722 : 2 : :2 :761 :1 (23-27) : : ( / ) (1 /, ) / e.g. (Taylar ) e x = 1 + x + x xn n! +... sin x = x x3 6 + x5 x2n+1 + (
IA 2013 : :10722 : 2 : :2 :761 :1 23-27) : : 1 1.1 / ) 1 /, ) / e.g. Taylar ) e x = 1 + x + x2 2 +... + xn n! +... sin x = x x3 6 + x5 x2n+1 + 1)n 5! 2n + 1)! 2 2.1 = 1 e.g. 0 = 0.00..., π = 3.14..., 1
More informationn ξ 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.........................
More informationv v = v 1 v 2 v 3 (1) R = (R ij ) (2) R (R 1 ) ij = R ji (3) 3 R ij R ik = δ jk (4) i=1 δ ij Kronecker δ ij = { 1 (i = j) 0 (i
1. 1 1.1 1.1.1 1.1.1.1 v v = v 1 v 2 v 3 (1) R = (R ij ) (2) R (R 1 ) ij = R ji (3) R ij R ik = δ jk (4) δ ij Kronecker δ ij = { 1 (i = j) 0 (i j) (5) 1 1.1. v1.1 2011/04/10 1. 1 2 v i = R ij v j (6) [
More informationex01.dvi
,. 0. 0.0. C () /******************************* * $Id: ex_0_0.c,v.2 2006-04-0 3:37:00+09 naito Exp $ * * 0. 0.0 *******************************/ #include int main(int argc, char **argv) { double
More information8.1 Fubini 8.2 Fubini 9 (0%) 10 (50%) 10.1 10.2 Carathéodory 10.3 Fubini 1 Introduction [1],, [2],, [3],, [4],, [5],, [6],, [7],, [8],, [1, 2, 3] 1980
% 100% 1 Introduction 2 (100%) 2.1 2.2 2.3 3 (100%) 3.1 3.2 σ- 4 (100%) 4.1 4.2 5 (100%) 5.1 5.2 5.3 6 (100%) 7 (40%) 8 Fubini (90%) 2006.11.20 1 8.1 Fubini 8.2 Fubini 9 (0%) 10 (50%) 10.1 10.2 Carathéodory
More informationkiso2-09.key
座席指定はありません 計算機基礎実習II 2018 のウェブページか 第9回 ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第7回の復習課題(rev07) 第9回の基本課題(base09) 第8回試験の結果 中間試験に関するコメント コンパイルできない不完全なプログラムなど プログラミングに慣れていない あるいは複雑な問題は 要件 をバラして段階的にプログラムを作成する exam08-2.c
More informationall.dvi
fortran 1996 4 18 2007 6 11 2012 11 12 1 3 1.1..................................... 3 1.2.............................. 3 2 fortran I 5 2.1 write................................ 5 2.2.................................
More informationCPU Levels in the memory hierarchy Level 1 Level 2... Increasing distance from the CPU in access time Level n Size of the memory at each level 1: 2.2
FFT 1 Fourier fast Fourier transform FFT FFT FFT 1 FFT FFT 2 Fourier 2.1 Fourier FFT Fourier discrete Fourier transform DFT DFT n 1 y k = j=0 x j ω jk n, 0 k n 1 (1) x j y k ω n = e 2πi/n i = 1 (1) n DFT
More information1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() malloc 2 #include <stdio.h> #include
1 1.1 C 2 1 double a[ ][ ]; 1 3x3 0 1 3x3 ( ) 0.240 0.143 0.339 0.191 0.341 0.477 0.412 0.003 0.921 1.2 malloc() malloc 2 #include #include #include enum LENGTH = 10 ; int
More information(2004 ) 2 (A) (B) (C) 3 (1987) (1988) Shimono and Tachibanaki(1985) (2008) , % 2 (1999) (2005) 3 (2005) (2006) (2008)
,, 23 4 30 (i) (ii) (i) (ii) Negishi (1960) 2010 (2010) ( ) ( ) (2010) E-mail:fujii@econ.kobe-u.ac.jp E-mail:082e527e@stu.kobe-u.ac.jp E-mail:iritani@econ.kobe-u.ac.jp 1 1 16 (2004 ) 2 (A) (B) (C) 3 (1987)
More information3. :, c, ν. 4. Burgers : u t + c u x = ν 2 u x 2, (3), ν. 5. : u t + u u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,.,
B:,, 2017 12 1, 8, 15, 22 1,.,,,,.,.,,,., 1,. 1. :, ν. 2. : u t = ν 2 u x 2, (1), c. u t + c u x = 0, (2), ( ). 1 3. :, c, ν. 4. Burgers : u t + c u x = ν 2 u x 2, (3), ν. 5. : u t + u u x = ν 2 u x 2,
More informationAppendix A BASIC BASIC Beginner s All-purpose Symbolic Instruction Code FORTRAN COBOL C JAVA PASCAL (NEC N88-BASIC Windows BASIC (1) (2) ( ) BASIC BAS
Appendix A BASIC BASIC Beginner s All-purpose Symbolic Instruction Code FORTRAN COBOL C JAVA PASCAL (NEC N88-BASIC Windows BASIC (1 (2 ( BASIC BASIC download TUTORIAL.PDF http://hp.vector.co.jp/authors/va008683/
More informationuntitled
0. =. =. (999). 3(983). (980). (985). (966). 3. := :=. A A. A A. := := 4 5 A B A B A B. A = B A B A B B A. A B A B, A B, B. AP { A, P } = { : A, P } = { A P }. A = {0, }, A, {0, }, {0}, {}, A {0}, {}.
More information20 6 4 1 4 1.1 1.................................... 4 1.1.1.................................... 4 1.1.2 1................................ 5 1.2................................... 7 1.2.1....................................
More information1 n A a 11 a 1n A =.. a m1 a mn Ax = λx (1) x n λ (eigenvalue problem) x = 0 ( x 0 ) λ A ( ) λ Ax = λx x Ax = λx y T A = λy T x Ax = λx cx ( 1) 1.1 Th
1 n A a 11 a 1n A = a m1 a mn Ax = λx (1) x n λ (eigenvalue problem) x = ( x ) λ A ( ) λ Ax = λx x Ax = λx y T A = λy T x Ax = λx cx ( 1) 11 Th9-1 Ax = λx λe n A = λ a 11 a 12 a 1n a 21 λ a 22 a n1 a n2
More information1 filename=mathformula tex 1 ax 2 + bx + c = 0, x = b ± b 2 4ac, (1.1) 2a x 1 + x 2 = b a, x 1x 2 = c a, (1.2) ax 2 + 2b x + c = 0, x = b ± b 2
filename=mathformula58.tex ax + bx + c =, x = b ± b 4ac, (.) a x + x = b a, x x = c a, (.) ax + b x + c =, x = b ± b ac. a (.3). sin(a ± B) = sin A cos B ± cos A sin B, (.) cos(a ± B) = cos A cos B sin
More information1. 2 P 2 (x, y) 2 x y (0, 0) R 2 = {(x, y) x, y R} x, y R P = (x, y) O = (0, 0) OP ( ) OP x x, y y ( ) x v = y ( ) x 2 1 v = P = (x, y) y ( x y ) 2 (x
. P (, (0, 0 R {(,, R}, R P (, O (0, 0 OP OP, v v P (, ( (, (, { R, R} v (, (, (,, z 3 w z R 3,, z R z n R n.,..., n R n n w, t w ( z z Ke Words:. A P 3 0 B P 0 a. A P b B P 3. A π/90 B a + b c π/ 3. +
More information/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v
1 http://www7.bpe.es.osaka-u.ac.jp/~kota/classes/jse.html kota@fbs.osaka-u.ac.jp /* do-while */ #include #include int main(void) double val1, val2, arith_mean, geo_mean; printf( \n );
More information数値計算法
12.1 電気回路網に関するキルヒホッフの法則による解法 1 工学的諸問題を多元連立 1 次方程式で表現することができる. 例えば, 荷物を最短の時間と最低のコストで輸送するためにはどのようなルートで物流を行うか という問題, 工場の部品の在庫の状況からいかに最小のコストで製品をつくるか という問題, 機械要素の運動の問題, 電気回路の解析の問題など, いくつか挙げられる. つまり, 計算機で多元連立方程式を解くことができれば,
More information目次
00D80020G 2004 3 ID POS 30 40 0 RFM i ... 2...2 2. ID POS...2 2.2...3 3...5 3....5 3.2...6 4...9 4....9 4.2...9 4.3...0 4.4...4 4.3....4 4.3.2...6 4.3.3...7 4.3.4...9 4.3.5...2 5...23 5....23 5.....23
More information高校生の就職への数学II
II O Tped b L A TEX ε . II. 3. 4. 5. http://www.ocn.ne.jp/ oboetene/plan/ 7 9 i .......................................................................................... 3..3...............................
More information困ったときのQ&A
ii iii iv NEC Corporation 1997 v P A R T 1 vi vii P A R T 2 viii P A R T 3 ix x xi 1P A R T 2 1 3 4 1 5 6 1 7 8 1 9 1 2 3 4 10 1 11 12 1 13 14 1 1 2 15 16 1 2 1 1 2 3 4 5 17 18 1 2 3 1 19 20 1 21 22 1
More informationd ϕ i) t d )t0 d ϕi) ϕ i) t x j t d ) ϕ t0 t α dx j d ) ϕ i) t dx t0 j x j d ϕ i) ) t x j dx t0 j f i x j ξ j dx i + ξ i x j dx j f i ξ i x j dx j d )
23 M R M ϕ : R M M ϕt, x) ϕ t x) ϕ s ϕ t ϕ s+t, ϕ 0 id M M ϕ t M ξ ξ ϕ t d ϕ tx) ξϕ t x)) U, x 1,...,x n )) ϕ t x) ϕ 1) t x),...,ϕ n) t x)), ξx) ξ i x) d ϕi) t x) ξ i ϕ t x)) M f ϕ t f)x) f ϕ t )x) fϕ
More informationUSB 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
More information£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡
(2018) 2018 5 17 0 0 if switch if if ( ) if ( 0) if ( ) if ( 0) if ( ) (0) if ( 0) if ( ) (0) ( ) ; if else if ( ) 1 else 2 if else ( 0) 1 if ( ) 1 else 2 if else ( 0) 1 if ( ) 1 else 2 (0) 2 if else
More information行列代数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
More informationスライド 1
数値解析 2019 年度前期第 13 週 [7 月 11 日 ] 静岡大学創造科学技術大学院情報科学専攻工学部機械工学科計測情報講座 三浦憲二郎 講義アウトライン [7 月 11 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ラグランジュ補間 T.Kanai, U.Tokyo 関数近似 p.116 複雑な関数を簡単な関数で近似する 関数近似 閉区間 [a,b] で定義された関数 f(x)
More informationx y x-y σ x + τ xy + X σ y B = + τ xy + Y B = S x = σ x l + τ xy m S y = σ y m + τ xy l σ x σ y τ xy X B Y B S x S y l m δu δv [ ( σx δu + τ )
1 8 6 No-tension 1. 1 1.1................................ 1 1............................................ 5.1 - [B].................................. 5................................. 6.3..........................................
More information活用ガイド (ハードウェア編)
(Windows 98) 808-877675-122-A ii iii iv NEC Corporation 1999 v vi PART 1 vii viii PART 2 PART 3 ix x xi xii P A R T 1 2 1 3 4 1 5 6 1 7 8 1 9 10 11 1 12 1 1 2 3 13 1 2 3 14 4 5 1 15 1 1 16 1 17 18 1 19
More information1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() 2 double *a[ ]; double 1 malloc() dou
1 1.1 C 2 1 double a[ ][ ]; 1 3x3 0 1 3x3 ( ) 0.240 0.143 0.339 0.191 0.341 0.477 0.412 0.003 0.921 1.2 malloc() 2 double *a[ ]; double 1 malloc() double 1 malloc() free() 3 #include #include
More information