ページ 11

C言語にするには

Posted: 2015年6月24日(水) 22:09
by コータ
この計算式をどうC言語にしたらいいかわかりません。
float x[];
float U[][];
float σ;
float y;

y(x)=Σ(上n-1 下a=1)Ca exp(-||x-Ua||^2/2*σ^2) /Σ(上n-1 下b=1) exp(-||x-Ub||^2/2*σ^2)

Re: C言語にするには

Posted: 2015年6月24日(水) 22:46
by みけCAT
こんな感じでしょうか? ※テストしていません

コード:

typedef struct {
	int size;
	float *a;
} vector;

float Ca;
int n;
vector **U;

float calcNormOfDiffVector(const vector* a, const vector* b) {
	/* 省略 */
}

float y(const vector *x) {
	float bunsi = 0, bunbo = 0;
	int a, b;
	for (a = 1; a <= n-1; a++) {
		float norm = calcNormOfDiffVector(x, U[a - 1]);
		bunsi += Ca * exp(-norm*norm/2.0*sigma*sigma);
	}
	for (b = 1; b <= n-1; b++) {
		float norm = calcNormOfDiffVector(x, U[b - 1]);
		bunbo += exp(-norm*norm/2.0*sigma*sigma);
	}
	return binsi / bunbo;
}