Замена элементов матрицы - C#
Формулировка задачи:
Доброго времени суток! Подскажите, кто знает, вопрос очень нужный...
имеется матрица 3 столбца и неограниченное количество строк, матрицу вводит пользователь в текстбоксы (они динамические) необходимо заменить элементы строк матрицы так, чтобы сумма столбцов была максимально одинаковой. Реализовал такой алгоритм в wolfram а в c# никак не получается.
Заранее огромное спасибо!
Решение задачи: «Замена элементов матрицы»
textual
Листинг программы
m = { { 0.1, 0.8, 0.6 }, { 1.7, 1.7, 0.008 }, { 1.41, 1.19, 0.164 }, { 0.18, 0.49, 0 }, { 2.79, 2.79, 2.79 }, { 6, 2.11, 1 }, { 0.55, 1.75, 3 }, { 1.1, 0, 4 } }; { rowsN, colsN } = Dimensions[m]; p = Permutations[Table[Slot[n], { n, 1, colsN }]]; tP = Transpose[p]; pN = Length[p]; bVar = Table[Product[If[i == j, x[row, i], 1 - x[row, i]], { i, 1, pN }], { j, 1, pN }]; rowF[{ row_ }] = Function[Evaluate[Map[#.bVar &, tP]]]; nM = MapIndexed[rowF[#2] @@ #1 &, m]; eq = Total[ Map[Function[Abs[Subtract @@ #]], Subsets[Map[Total, Transpose[nM]], { 2 }]]]; var = Flatten[Table[x[row, j], { row, 1, rowsN }, { j, 1, pN }]]; conSt = And @@ Flatten[Table[{ Sum[x[row, j], { j, 1, pN }] == 1, Table[0 <= x[row, j] <= 1, { j, 1, pN }], Table[Element[x[row, j], Integers], { j, 1, pN }]}, { row, 1, rowsN }]]; sF = NMinimize[{ eq, conSt }, var, MaxIterations -> 500][[2]] MatrixForm[m] Total /@ Transpose[%] MatrixForm[nM /. sF] SmP = Total /@ Transpose[%] Total[SmP]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д