「nr2(API)」の版間の差分
提供: Eospedia
(ページの作成:「DataManip/MATH/src/'''nr2'''はAPI です。 == 定数 == static float maxarg1; static float maxarg2; == 構造体 == == API == #define FMAX(a,b) (maxarg1=(a),maxar...」) |
|||
(同じ利用者による、間の9版が非表示) | |||
行1: | 行1: | ||
− | DataManip/MATH/src/'''nr2''' | + | <!-- |
+ | DataManip/MATH/src/'''nr2'''は数式を使用するための[[API]]です。 | ||
== 定数 == | == 定数 == | ||
行8: | 行9: | ||
== API == | == API == | ||
+ | a, bの最大値を出力します。 | ||
#define FMAX(a,b) (maxarg1=(a),maxarg2=(b),(maxarg1)>(maxarg2)?(maxarg1):(maxarg2)) | #define FMAX(a,b) (maxarg1=(a),maxarg2=(b),(maxarg1)>(maxarg2)?(maxarg1):(maxarg2)) | ||
+ | bと同じ符号でaを出力します。 | ||
#define SIGN(a,b) ((b)>0.0?fabs(a):-fabs(a)) | #define SIGN(a,b) ((b)>0.0?fabs(a):-fabs(a)) | ||
===Utilities=== | ===Utilities=== | ||
+ | エラーメッセージを表示します。 | ||
extern void nrerror(char error_txt[]); | extern void nrerror(char error_txt[]); | ||
+ | |||
+ | ====ベクトル==== | ||
+ | ベクトル生成(nl 〜 nh: 成分) | ||
extern float* vector(long nl, long nh); | extern float* vector(long nl, long nh); | ||
− | |||
extern int* ivector(long nl, long nh); | extern int* ivector(long nl, long nh); | ||
+ | ベクトル解放 | ||
+ | extern void free_vector(float* v, long nl, long nh); | ||
extern void free_ivector(int* v, long nl, long nh); | extern void free_ivector(int* v, long nl, long nh); | ||
− | + | ||
+ | ====行列==== | ||
+ | 行列生成(nrl 〜 nrh: 行, ncl 〜 nch: 列) | ||
extern float** matrix(long nrl, long nrh, long ncl, long nch); | extern float** matrix(long nrl, long nrh, long ncl, long nch); | ||
+ | 行列解放 | ||
extern void free_matrix(float** m, long nrl, long nrh, long ncl, long nch); | extern void free_matrix(float** m, long nrl, long nrh, long ncl, long nch); | ||
− | === | + | ===ガウス・ジョルダン法=== |
extern void gaussj(float **a, int n, float **b, int m); | extern void gaussj(float **a, int n, float **b, int m); | ||
− | === | + | ===LU Decomposition and Its Applications=== |
+ | LU分解 | ||
extern void ludcmp(float** a, int n, int* indx, float* d); | extern void ludcmp(float** a, int n, int* indx, float* d); | ||
extern void lubksb(float** a, int n, int* indx, float b[]); | extern void lubksb(float** a, int n, int* indx, float b[]); | ||
− | === | + | ===ログガンマ関数=== |
+ | ログガンマ関数(Lanczos近似) | ||
extern float gammln(float xx); | extern float gammln(float xx); | ||
− | === | + | ===ガンマ関数=== |
+ | 正規化された不完全補ガンマ関数 | ||
extern float gammp(float a, float x); | extern float gammp(float a, float x); | ||
+ | 正規化された不完全ガンマ関数 | ||
extern float gammq(float a, float x); | extern float gammq(float a, float x); | ||
+ | 第2種不完全ガンマ関数 | ||
extern void gser(float* gamser, float a, float x, float* gln); | extern void gser(float* gamser, float a, float x, float* gln); | ||
+ | 第1種不完全ガンマ関数 | ||
extern void gcf (float* gammcf, float a, float x, float* gln); | extern void gcf (float* gammcf, float a, float x, float* gln); | ||
+ | 誤差関数 | ||
extern float erff(float x); | extern float erff(float x); | ||
+ | 補誤差関数 | ||
extern float erffc(float x); | extern float erffc(float x); | ||
− | === | + | ===ベータ関数=== |
+ | 正規化ベータ関数 | ||
extern float betai(float a, float b, float x); | extern float betai(float a, float b, float x); | ||
+ | 不完全ベータ関数 | ||
extern float betacf(float a, float b, float x); | extern float betacf(float a, float b, float x); | ||
− | === | + | ===Sorting=== |
+ | サイズnの配列arrをソート | ||
extern void sort(unsigned long n, float arr[]); | extern void sort(unsigned long n, float arr[]); | ||
− | === | + | ===Sorting=== |
+ | サイズnの配列arrをソートし、k番目を得る | ||
extern float nrselect(unsigned long k, unsigned long n, float arr[]); | extern float nrselect(unsigned long k, unsigned long n, float arr[]); | ||
− | === | + | ===行列の対角化 === |
+ | ヤコビ行列 | ||
extern void jacobi(float** a, int n, float d[], float** v, int* nrot); | extern void jacobi(float** a, int n, float d[], float** v, int* nrot); | ||
+ | 固有ベクトルのソート | ||
extern void eigsrt(float d[], float** v, int n); | extern void eigsrt(float d[], float** v, int n); | ||
− | === | + | === Wavelet Transforms=== |
+ | ウェーブレット変換(isginが0以上でウェーブレット変換、負で逆変換) | ||
extern void wt1(float a[], unsigned long n, int isign, void (*wtstep)(float[], unsigned long, int)); | extern void wt1(float a[], unsigned long n, int isign, void (*wtstep)(float[], unsigned long, int)); | ||
+ | |||
+ | Daubechies 4-coefficient Wavelet Filter(isginが0以上でウェーブレット変換、負で逆変換) | ||
extern void daub4(float a[], unsigned long n, int isign); | extern void daub4(float a[], unsigned long n, int isign); | ||
extern void pwtset(int n); | extern void pwtset(int n); | ||
行60: | 行88: | ||
extern void wtn(float a[], unsigned long nn[], int ndim, int isign, void (*wtstep)(float[], unsigned long, int)); | extern void wtn(float a[], unsigned long nn[], int ndim, int isign, void (*wtstep)(float[], unsigned long, int)); | ||
− | === | + | ===黄金分割法=== |
extern void mnbrak(float* ax, float *bx, float* cx, float* fa, float* fb, float* fc, float (*func)(float)); | extern void mnbrak(float* ax, float *bx, float* cx, float* fa, float* fb, float* fc, float (*func)(float)); | ||
− | === | + | ===ブレント法 === |
extern float brent(float ax, float bx, float cx, float (*f)(float), float tol, float* xmin); | extern float brent(float ax, float bx, float cx, float (*f)(float), float tol, float* xmin); | ||
− | === | + | ===線形最小二乗法 === |
extern void linmin(float p[], float xi[], int n, float *fret, float (*func)(float[])); | extern void linmin(float p[], float xi[], int n, float *fret, float (*func)(float[])); | ||
− | === | + | ===ConjugateGradientMethods=== |
extern void frprmn(float p[], int n, float ftol, int *iter, float* fret, | extern void frprmn(float p[], int n, float ftol, int *iter, float* fret, | ||
float (*func)(float[]), void (*dfunc)(float[], float [])); | float (*func)(float[]), void (*dfunc)(float[], float [])); | ||
行75: | 行103: | ||
float (*func)(float[]), void (*dfunc)(float[], float [])); | float (*func)(float[]), void (*dfunc)(float[], float [])); | ||
− | === | + | ===フィッティング=== |
+ | 入力:(x, y)座標のデータndataをガンマ関数gammqにデータをフィッティングし、データをqに格納します。 | ||
extern void fit(float x[], float y[], int ndata, float sig[], int mwt, float* a, float* b, float* siga, float* sigb, float* chi2, float* q); | extern void fit(float x[], float y[], int ndata, float sig[], int mwt, float* a, float* b, float* siga, float* sigb, float* chi2, float* q); | ||
− | === | + | ===Levenberg-Marquardt法=== |
extern void mrqmin(float x[], float y[], float sig[], int n, float a[], int ia[], int ma, float** covar, float** alpha, float* chisq, void (*func)(float x, float p[], float* y, float dyda[], int na), float *alamda); | extern void mrqmin(float x[], float y[], float sig[], int n, float a[], int ia[], int ma, float** covar, float** alpha, float* chisq, void (*func)(float x, float p[], float* y, float dyda[], int na), float *alamda); | ||
− | === | + | ===Median Fit=== |
extern void medfit(float x[], float y[], int ndata, float* a, float* b, float* abdev); | extern void medfit(float x[], float y[], int ndata, float* a, float* b, float* abdev); | ||
+ | ロバスト推定 | ||
extern float rofunc(float b); | extern float rofunc(float b); | ||
+ | |||
+ | --> |