この計算式をどう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)
C言語にするには
Re: C言語にするには
こんな感じでしょうか? ※テストしていません
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;
}複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)