int main () { int n = 0; initM (); /** 一直训练直到能够100%正确为止 **/ while (1) { n ++; calcY (); int err = adjustM (); if (0 >= err) { /** 能够 100 %正确地回答问题了,结束训练 **/ break; } printf ("错误数 %d\n", err); } printM (); printf ("阈值: %d, 训练次数: %d\n", ST, n); while (1) { int a = 0; scanf ("%i", &a); if (0 > a || 9 < a) { break; } test (a); } return 0; }
void main() { initM(0); popularRedeSocialAleatoriamente(0.6); imprimirRedeSocial(); int n = numAmigosEmComum(2,4); printf("\nnumero de amigos em comum entre 2 e 4: %d", n); //se voce eh forte, remova o comentario da linha abaixo printf("\ncoef. de aglomeracao da pessoa 2 eh: %f", coeficienteAglomeracao(2)); getch(); }
double CDescriptor::ComputeLineDir(double* pLinePts,int nCount,double dDxAvg, double dDyAvg) { //利用最小二乘技术求方向 initM(MATCOM_VERSION); Mm mMatrix = zeros(nCount,3); for(int g1 = 0; g1 < nCount; g1++) { mMatrix.r(g1+1,1) = pLinePts[2*g1]; mMatrix.r(g1+1,2) = pLinePts[2*g1+1]; mMatrix.r(g1+1,3) = 1; } //奇异值分解获得精确位置 Mm u,s,v; i_o_t i_o = {0,0}; svd(mMatrix,i_o,u,s,v); //计算方向 double a = v.r(1,3); double b = v.r(2,3); double dMainArc = atan2(-b,a); dMainArc = LimitArc(dMainArc); //退出 exitM(); //判定方向 double dMainArc1 = dMainArc - PI/2; dMainArc1 = LimitArc(dMainArc1); double dMainArc2 = dMainArc + PI/2; dMainArc2 = LimitArc(dMainArc2); double dAvgArc = atan2(-dDyAvg,-dDxAvg); dAvgArc = LimitArc(dAvgArc); double error1 = ArcDis(dMainArc1,dAvgArc); double error2 = ArcDis(dMainArc2,dAvgArc); //返回最终方向 double nArcReturn = dMainArc1; if(error1 > error2) nArcReturn = dMainArc2; return nArcReturn; }