#include "common.h"
#include <math.h>
Go to the source code of this file.
Typedefs | |
typedef double(* | PTR_DFFUNC )(double) |
ニュートン法で解を求める場合の関数の型 | |
Functions | |
double | comb (int n, int i) |
double | perm (int n, int i) |
double | fact (int n) |
double | power (double x, double y) |
int | newton_method (PTR_DFFUNC fn, PTR_DFFUNC df, double *t, double e) |
ニュートン法で解を求める | |
Variables | |
double | EPS |
Definition in file mt.h.
typedef double(* PTR_DFFUNC)(double) |
double comb | ( | int | n, | |
int | m | |||
) |
double comb(int n, int m)
コンビネーション nCm を計算する.
double fact | ( | int | n | ) |
double fact(int n)
nの階乗 n! を計算する.n>0 でない場合は 1.0 を返す.
int newton_method | ( | PTR_DFFUNC | func, | |
PTR_DFFUNC | dfunc, | |||
double * | t0, | |||
double | eps | |||
) |
int newton_method(PTR_DFFUNC func, PTR_DFFUNC dfunc, double* t0, double eps)
ニュートン法で func()==0 の点を求める.
関数の形は double func(double)
func | double func(double) 型の関数へのポインタ | |
dfunc | func()の導関数へのポインタ. | |
[in,out] | t0 | in: 探索開始点(xの初期値), out: 解. |
eps | 誤差.1に対して 1.0e-8 など. |
Definition at line 109 of file mt.c.
References MAX_ITRTN_NEWTON_METHOD, and Xabs.
00110 { 00111 double tt = *t0; 00112 double ff = (*func)(tt); 00113 00114 int n = 1; 00115 while (n<MAX_ITRTN_NEWTON_METHOD && Xabs(ff)>eps) { 00116 // 00117 double df = (*dfunc)(tt); 00118 if (Xabs(df)<eps) return 0; 00119 00120 tt = tt - ff/df; 00121 ff = (*func)(tt); 00122 n++; 00123 } 00124 00125 if (n==MAX_ITRTN_NEWTON_METHOD) return 0; 00126 *t0 = tt; 00127 return n; 00128 }
double perm | ( | int | n, | |
int | m | |||
) |
double perm(int n, int m)
パームテーション nPm を計算する.
double power | ( | double | x, | |
double | y | |||
) |
double power(double x, double y)
xの y乗 x^yを計算する.
double EPS |
Definition at line 14 of file mt.c.
Referenced by topola(), unit_ivector(), and unit_vector().