![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 06.06.2009
Сообщений: 1
|
![]()
Задача связана с алгеброй.
Все эллемнты из поля Z={0,1,2}!!! Даны две матрицы: 0__1__0 b1_b2_b3 = B; b4_b5_b6 0__0__1 c1_c2_c3 = C; c4_c5_c6 Надо найти все матрицы В и С такие, что В*С!=С*B. Такая программа уже есть: #include <iostream.h> struct matrix3x3 { int a[3][3]; void print(); }; void matrix3x3: ![]() int i, j; for (i=0; i<3; ++i) { for (j=0; j<3; ++j) cout << a[i][j] << " "; cout << "\n"; } } matrix3x3 matrix(int a11, int a12, int a13, int a21, int a22, int a23, int a31, int a32, int a33) { matrix3x3 tmp; tmp.a[0][0] = a11; tmp.a[0][1] = a12; tmp.a[0][2] = a13; tmp.a[1][0] = a21; tmp.a[1][1] = a22; tmp.a[1][2] = a23; tmp.a[2][0] = a31; tmp.a[2][1] = a32; tmp.a[2][2] = a33; return tmp; } int determinant(matrix3x3 A) { return A.a[0][0]*A.a[1][1]*A.a[2][2] + A.a[0][1]*A.a[1][2]*A.a[2][0] + A.a[0][2]*A.a[1][0]*A.a[2][1] - A.a[0][2]*A.a[1][1]*A.a[2][0] - A.a[2][2]*A.a[1][0]*A.a[0][1] - A.a[0][0]*A.a[2][1]*A.a[1][2]; } matrix3x3 multMatrix(matrix3x3 A, matrix3x3 B) { int i, j; matrix3x3 C; for (i=0; i<3; ++i) for (j=0; j<3; ++j) C.a[i][j] = A.a[i][0]*B.a[0][j] + A.a[i][1]*B.a[1][j] + A.a[i][2]*B.a[2][j]; return C; } bool equalMatrix(matrix3x3 A, matrix3x3 B) { int i, j; for (i=0; i<3; ++i) for (j=0; j<3; ++j) if (A.a[i][j] != B.a[i][j]) return false; return true; } matrix3x3 toZ3(matrix3x3 A) { int i, j; matrix3x3 tmp; for (i=0; i<3; ++i) for (j=0; j<3; ++j) tmp.a[i][j] = A.a[i][j] % 3; return tmp; } int main() { matrix3x3 B, C; int i, j; for (i=0; i<531441; ++i) { int el[12], t = i; for (j=0; j<12; ++j) { el[j] = t%3; t /= 3; } B = matrix(0, 1, 0, el[0], el[1], el[2], el[3], el[4], el[5]); C = matrix(0, 0, 1, el[6], el[7], el[8], el[9], el[10], el[11]); if ((determinant(B)%3) == 0) continue; if ((determinant(C)%3) == 0) continue; if (equalMatrix(toZ3(multMatrix(B, C)), toZ3(multMatrix(C, B)))) { cout << "-----------------\n"; B.print(); cout << "\n"; C.print(); cout << "-----------------\n"; } } return 0; } Теперь надо найти поле R = {x*E+e*B+z*C}, где Е - единичная матрица, а В и С даны выше, x, y, z, b[i] и c[i] из поля Z={0,1,2}. |x*E+e*B+z*C| !=0 Как проверить,что R - это поле: Для любых x,y,z,u,v,w из Для любых x,y,z,u,v,w из Z={0,1,2}. 1)(xE+yB+zC)(uE+vB+wC) должно пренадлежать R. Пусть первый множитель из свойства 1 = Q(x,y,z) А второй = Q(u,v,w) 2)коммутативность. Q(x,y,z)*Q(u,v,w)=Q(u,v,w)*Q(x,y,z) .(это равенство умножений матриц ВС=СВ) 3) для любых x,y,z != (0,0,0) существует u,v,w,такие,что (xE+yB+zC)(uE+vB+wC)=E. На экран надо вывести варианты матриц В, С, x, y, z, когда выполняются все вышеперечмсленные условия. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите с задачей | kiko | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 25.11.2008 14:31 |
Помогите с задачей | Noxil | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 30.10.2008 19:20 |
помогите с задачей | StakanpORTvejna | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.10.2008 19:19 |
Помогите с задачей. | terminadoor | Помощь студентам | 4 | 22.07.2008 18:38 |