- 219 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:49:39 ]
- >>214 20次元の場合の計算方法はこれでいいのか?
#include<stdio.h> #include<math.h> #define EPS (1.0e-20) typedef struct tag_vector20d_t{ double num[20]; }vector20d_t; double vector20d_size(const vector20d_t *vector20d){ int i; double x2=0.0; for(i=0;i<20;i++) x2+=vector20d->num[i]*vector20d->num[i]; return sqrt(x2); } double vector20d_inner_product(const vector20d_t *a, const vector20d_t *b){ int i; double ret=0.0; for(i=0;i<20;i++) ret+=a->num[i]*b->num[i]; return ret; } double vector20d_cos(const vector20d_t *a, const vector20d_t *b){ double size_a, size_b; size_a=vector20d_size(a); size_b=vector20d_size(b); if(size_a<EPS || size_b<EPS) return -10.0; return vector20d_inner_product(a, b)/(size_a*size_b); } int main(void){ int i; vector20d_t a, b; for(i=0;i<20;i++) scanf("%lf", &(a.num[i])); for(i=0;i<20;i++) scanf("%lf", &(b.num[i])); printf(" %f\n", vector20d_cos(&a, &b)); return 0; }
|

|