ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
957201 Топик полностью
0men (06.11.2019 15:50, просмотров: 218) ответил йцукен на Итерации никакие не нужны, система линейных уравнений решается в один проход. Теория описана в 100500 учебниках, но если вы хотите готовый код, тут несколько сложнее: полно простых программ, написанных какими-то пионерами, на другом полюсе -
готовый код  unsigned char gaussjordan ( float * bvec, float * amtrx, float * xvec, unsigned char numequ ) { unsigned char j,k,l,m,n,ite,ie=1; float w,q,d; float eps=0.00000001; unsigned char label[ numequ]; for( n=0; n<numequ; n++ ) label[ n ]=0; for( n=0; n<numequ; n++ ) { w=0; for( m=0; m<numequ; m++ ) { q = fabs( amtrx[ (numequ+1)*m ] ); if ((q>w) && (label[ m ]==0)) { w = q; ite = m; d = amtrx[ (numequ+1)*m ]; } } if (w<eps) { ie=0; break; } m = numequ*ite; label[ ite ] = 1; for( l=0; l<numequ; l++) { if (l!=ite) { k = numequ*l; q = amtrx[ k+ite ]; for( j=0; j<numequ; j++ ) amtrx[ k+j ] = (amtrx[ k+j ]*d-amtrx[ m+j ]*q)/d; bvec[l]=(bvec[l]*d-bvec[ite]*q)/d; } } } for( n=0; n<numequ; n++ ) { if ((fabs(amtrx[(numequ+1)*n]))<eps) { ie = 0; break; } xvec[ n ] = bvec[ n ]/amtrx[ (numequ+1)*n ]; } return ie; }