Читайте также:
|
|
private void calc() {
int n = Integer.parseInt(etPow.getText().toString());
if (n <= 1) {
Toast.makeText(this, "Степень должна быть больше 1", Toast.LENGTH_SHORT).show();
return;
}
if (n >= 6) {
Toast.makeText(this, "Степень должна быть меньше 6", Toast.LENGTH_SHORT).show();
return;
}
ArrayList<ArrayList<Matrix> > groups = new ArrayList<ArrayList<Matrix> >();
for (int i = 0; i < 3; i++) {
groups.add(new ArrayList<Matrix>());
}
ArrayList<Matrix> g0 = groups.get(0), g1 = groups.get(1), g2 = groups.get(2);
Matrix emptyMatrix = new Matrix(n, n);
for (int number = 0; number < (1 << (n * n)); number++) {
Matrix m = new Matrix(n, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int k = i * n + j;
if ((number & (1 << k))!= 0) {
m.set(i, j, 1);
} else {
m.set(i, j, 0);
}
}
}
if (m.pow(2).equals(emptyMatrix)) {
g0.add(m);
} else if (m.pow(3).equals(emptyMatrix)) {
g1.add(m);
} else {
g2.add(m);
}
}
StringBuilder sb = new StringBuilder();
for (int gIdx = 0; gIdx < groups.size(); gIdx++) {
switch (gIdx) {
case 0:
sb.append("A^2 = [0]");
break;
case 1:
sb.append("A^3 = [0]");
break;
case 2:
sb.append("A^3!= [0]");
break;
}
sb.append(", количество матриц: " + groups.get(gIdx).size() + "\n\n");
ArrayList<Matrix> gr = groups.get(gIdx);
for (Matrix m: gr) {
ArrayList<Matrix> pows = new ArrayList<Matrix>();
for (int k = 0; k < gIdx + 1; k++) {
pows.add(m.pow (k + 1));
}
for (int i = 0; i < n; i++) {
for (int k = 0; k < gIdx + 1; k++) {
Matrix mp = pows.get(k);
for (int j = 0; j < n; j++) {
sb.append(mp.get(i, j));
}
sb.append(" ");
}
sb.append("\n");
}
sb.append("\n");
}
}
etResult.setText(sb); }
Дата добавления: 2015-08-26; просмотров: 44 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Постановка задачи | | | Загальні. |