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 2 f n k c i c i q n( ) = 2q n q n c i c i q 2 f n k c i c i q = f n,,c n k c i φ 2 1 ( ) φ 1 ( )φ 2 ( ) φ 1 ( )φ n x k φ 2 ( )φ 1 ( ) φ 2 2 ( ) φ 2 ( )φ n x k φ n ( )φ 1 ( ) φ n ( )φ 2 ( ) φ 2 n ( ) = φ i c 1 c 2 = c n f k φ 1 f k φ 2 f k φ n
x n q n = c i φ i (x) x n 1 x k x k 2 n x k x k x k n = x i 1 (i =1,2,, ) i=1 c 1 c 2 = n 1 n 2(n 1) x k x k c n n 1 f k x k Gauss-Jordan c 1,,c n f k f k
n 1 n x k c n n 1 f k x k (-2, -3), (-1, 2), (0, 1) n 1 x k x k c 1 2 n x k x k x k c 2 = 2(n 1) n 1 3 x k x k n 1 2(n 1) x k x k Gauss-Jordan c 1 =1, c 2 =-4, c 3 =-3 c 1 c 2 c 3 f k f k 3+ 2 +1 = 3 2 + 2 1+1 0 3 ( 2) 2 + 2 1 2 +1 ( 0) 2 0 = 4 10
12-2.c floating XY 4 fitting /* average error, standard deviation */ /* */ #include <stdio.h> #include <ath.h> #define N 5 /* 5x5 atrix*/ #define MAX 10000 /* data ax size */ stdio.h Sqrt ath.h include Fitting N 5 x 4 10 9 MAX MAX a[][] N d[2][] XY int ain(void){ double a[n][n+1]; double d[2][max]; double p, dd, f=0.0, err=0.0, ave_err, std_err1, std_err2; int i=0, j, k, ; i, j, k, /* ctrl + d EOF */ while ( (scanf("%lf %lf", &d[0][i], &d[1][i]))!= EOF ){i++; scanf EOF (End Of File) d[0][i], d[1][i] EOF while loop
12-2.c /* ake aterix */ = i ; /* nuber of data set, nubering fro 1 */ /* siga x */ for (i=0; i<n; i++){ for (j=0; j<n; j++){ for (k=0; k<; k++){ /* calculate atrix eleent */ a[i][j] += pow(d[0][k], ((i+j)*1.0)); a[0][0] = *1.0; /* cast to double */ for (i=0; i<n; i++){ for (k=0; k<; k++){ /* calculate RHS eleent */ a[i][n] += d[1][k] * pow(d[0][k], i*1.0); loop i Loop 0 =i pow(a, b) a b (i+j)*1.0 double a[i][j] Σ i+j k *1.0 int double a[][] Cast (double) AX=B A B Gauss-Jordan
12-2.c /* ---- Gauss-Jordan ethod ---- */ for (k=0; k<n; k++){ p = a[k][k]; for (j=k; j<n+1; j++){ a[k][j]=a[k][j]/p; for (i=0; i<n; i++){ if (i!=k){ dd = a[i][k]; for (j=k; j<n+1; j++){ a[i][j]=a[i][j]-dd*a[k][j]; /* substract pivot gyou by p */ /* pivot sweep out */ Gauss-Jordan 11-1
12-2.c /* calculate average error and std error */ for (k=0; k<; k++){ f = 0.0; /* evaluate fitting function */ Fitting for (i=0; i<n; i++){ a[][] f += a[i][n]* pow(d[0][k], i*1.0); Fitting su su err += d[1][k] - f; /* su error */ std_err2 += (f - d[1][k])*(f - d[1][k]); /* su error square */ ave_err = err/; /* evaluate average error */ std_err1 = sqrt( std_err2/ ); /* evaluate std error */ /* ---- out put solution ---- */ for (k=0; k<n; k++){ printf("c%d= %lf n", k, a[k][n]); printf("ave_error= %g t nstd_error= %g n", ave_err, std_err1); return (0);
xy01.txt fitting 1. Excel xy01.txt 2. fitting./12-2 < xy01.txt 3. fitting Excel y = c0 + c1*x +c2*x*x + c3*x*x*x + c4*x*x*x*x f(x) 25 20 15 10 5 0-5 -10 Least square ethod: data fitting xy01.txt xy01.txt data fitting line -15-3 -2-1 0 1 2 3 x fitting paraeter: c0=2.620474, c1=0.305564, c2=-8.860936, c3=-0.010951, c4=1.789889 ave_err= 4.82403e-15 std_err= 2.93794 http://extree.phys.sci.kobe-u.ac.jp/staffs/okubo/lectures/prograing/joho12/xy01.txt
soothing Y 40 30 20 10 0 Data (+noise) intrinsic data -10 1 1.5 2 2.5 3 X
12-3.c N /* Idou Heikin */ #include <stdio.h> #include <ath.h> #define N 5 /* heikin ryou */ #define MAX 10000 /* data ax size */ int ain(void){ double d[2][max]; double ave; int i, j, ; /* ctrl + d EOF */ while ( (scanf("%lf %lf", &d[0][i], &d[1][i]))!= EOF ){i++; =i; /* nuber of data set, nubering fro 1 */ for (i=(n-1); i<; i++){ ave = 0.0; for (j=0; j<n; j++){ ave += d[1][j+i-n+1]; ave = ave/n; printf("%lf %lf n", d[0][i], ave); return (0);
xy02.txt soothing./12-3 < xy02.txt > xy02s.txt xy02s.txt 200 150 100 original sooth 5 Sooth 10 xy02.txt Y 50 0-50 -100-3 -2-1 0 1 2 3 4 5 x http://extree.phys.sci.kobe-u.ac.jp/staffs/okubo/lectures/prograing/joho12/xy02.txt
C Unix script
12-2 fitting 12-3 soothing fitting A. 12-3 (tp.dat) 12-2./12-3 < xy02.txt > tp.dat./12-2 < tp.dat B. tp.dat./12-3 < xy02.txt./12-2 -./12-3 < xy02.txt -./12-3./12-2 UNIX
UNIX shell MS-DOS DOS-shell UNIX shell shell Bourne shell, C shell, Korn shell shell OSX tiger Bourne shell bash bash shell shell script
Mac CR UNIX LF UNIX script LF ac2unix.sh LF(UNIX) #!/bin/sh # CR => LF (Mac => Unix) # Usage:./ac2unix.sh src.txt > dest.txt tr ' r' ' n' < $1 chod u+x ac2unix.sh unix2ac.sh LF #!/bin/sh # LF => CR (Unix => Mac) # Usage:./unix2ac src.txt > dest.txt tr ' n' ' r' < $1 \
ac2unix.sh unix2ac.sh ac2unix.sh [ ] > [ ] Mac (CR) -> UNIX (LF) unix2ac.sh path $HOME/joho-shori/ac2unix.sh
.zip nuber 0.jpeg 9.jpeg http://extree.phys.sci.kobe-u.ac.jp/staffs/okubo/lectures/prograing/nuber.zip A. nuber ls 0.jpeg 3.jpeg 6.jpeg 9.jpeg 1.jpeg 4.jpeg 7.jpeg 2.jpeg 5.jpeg 8.jpeg.jpeg for fnae in *.jpeg > do jpeg > v $fnae ${fnae%.jpeg.jpg > done ls 0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg
jpg jpeg B. shell script i ren.sh UNIX LF #!/bin/bash for fnae in `ls *.jpeg` do v $fnae ${fnae%.jpeg.jpg done chod u+x ren.sh ls -l ren.sh -rwxr--r-- 1 okubo okubo 69 19 6 12:26 ren.sh nuber./ren.sh ls 0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg