some fixes

This commit is contained in:
pgirl111 2023-12-14 10:03:40 +04:00
parent 37e951cf33
commit 46db2e59cd
5 changed files with 20 additions and 19 deletions

View File

@ -1,8 +1,9 @@
# Лабораторная работа 1 # Лабораторная работа 1
Дисциплина "Вычислительная математика" Дисциплина "Вычислительная математика"
## Авторы: ## Авторы:
ПИбд-33 Борщевская ПИбд-33 Борщевская, Прыткина
### Вариант 7 ### Вариант 7
Имеется два вида корма P1 и P2, содержащие питательные вещества (витамины) S1, S2, S3. Необходимо составить дневной рацион, имеющий минимальную стоимость, в котором содержание каждого вида питательных веществ было бы не менее установленного предела.
Целевая функция: F = 4x+6y->min Целевая функция: F = 4x+6y->min
Ограничения: Ограничения:
1) 3x+y>=9 1) 3x+y>=9

View File

@ -0,0 +1,7 @@
package ru.uni.symplex_method;
public class SimplexException extends Exception {
public SimplexException(String error) {
super(error);
}
}

View File

@ -38,9 +38,9 @@ public class SimplexMatrix {
return currentRowCount; return currentRowCount;
} }
public void addRow(double[] coefficients) throws SymplexException { public void addRow(double[] coefficients) throws SimplexException {
if (isFill()) { if (isFill()) {
throw new SymplexException("Матрица уже заполнена!!!"); throw new SimplexException("Матрица уже заполнена!!!");
} }
matrix[currentRowCount] = coefficients; matrix[currentRowCount] = coefficients;
currentRowCount++; currentRowCount++;
@ -63,13 +63,13 @@ public class SimplexMatrix {
System.out.print("Базис\t"); System.out.print("Базис\t");
System.out.print("b\t\t"); System.out.print("b\t\t");
for (int i = 1; i <= numCols-1; i++) { for (int i = 1; i <= numCols - 1; i++) {
System.out.print("x" + i +"\t\t\t"); System.out.print("x" + i + "\t\t\t");
} }
System.out.println(); System.out.println();
for (int i = 0; i < matrix.length; i++) { for (int i = 0; i < matrix.length; i++) {
if(i != matrix.length-1) { if (i != matrix.length - 1) {
System.out.printf("%4s\t", basis.get(i)); System.out.printf("%4s\t", basis.get(i));
} else { } else {
System.out.printf("%4s\t", "D"); System.out.printf("%4s\t", "D");

View File

@ -70,7 +70,7 @@ public class SimplexService {
printMatrix(); printMatrix();
try { try {
doIter(); doIter();
} catch (SymplexException exception) { } catch (SimplexException exception) {
System.out.println("Произошла ошибка при выполнении: " + exception.getMessage()); System.out.println("Произошла ошибка при выполнении: " + exception.getMessage());
break; break;
} }
@ -91,17 +91,17 @@ public class SimplexService {
return Arrays.stream(matrix).allMatch(x -> x[0] >= 0); return Arrays.stream(matrix).allMatch(x -> x[0] >= 0);
} }
private void doIter() throws SymplexException { private void doIter() throws SimplexException {
var matrix = simplexMatrix.getMatrix(); var matrix = simplexMatrix.getMatrix();
// поиск разрешающей строки и столбца // поиск разрешающей строки и столбца
int indexRow = findRowIndex(matrix); int indexRow = findRowIndex(matrix);
if (indexRow == -1) { if (indexRow == -1) {
throw new SymplexException("Разрешающая строка не найдена"); throw new SimplexException("Разрешающая строка не найдена");
} }
var row = matrix[indexRow]; var row = matrix[indexRow];
int indexColumn = findColIndex(row); int indexColumn = findColIndex(row);
if (indexColumn == -1) { if (indexColumn == -1) {
throw new SymplexException("Разрешающий столбец не найден"); throw new SimplexException("Разрешающий столбец не найден");
} }
double element = row[indexColumn]; double element = row[indexColumn];
@ -125,7 +125,7 @@ public class SimplexService {
private int findRowIndex(double[][] matrix) { private int findRowIndex(double[][] matrix) {
int index = -1; int index = -1;
double maxAbs = -1; double maxAbs = -1;
for (int i = 0; i < matrix.length-1; i++) { for (int i = 0; i < matrix.length - 1; i++) {
if (matrix[i][0] < 0) { if (matrix[i][0] < 0) {
var value = Math.abs(matrix[i][0]); var value = Math.abs(matrix[i][0]);
if (value > maxAbs) { if (value > maxAbs) {

View File

@ -1,7 +0,0 @@
package ru.uni.symplex_method;
public class SymplexException extends Exception {
public SymplexException(String error) {
super(error);
}
}