Решение линейного уравнения с помощью java-matrix-library.
Я использую следующую библиотеку для решения линейного уравнения. Ссылка на эту библиотеку следующая: эффективное-java-matrix-library
Я скачал файл библиотеки и импортировал в затмение. Затем я написал следующий код для решения системы линейных уравнений.
SimpleMatrix A1 = new SimpleMatrix(m,n);
SimpleMatrix b1 = new SimpleMatrix(m,1);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
A1.setRow(i, i, A2[i][j]);
// System.out.println();
}
b1.setColumn(i, 0, B2[i]);
}
try {
SimpleMatrix x1 = A1.solve(b1);
for(int i=0;i<x1.getNumElements();i++)
{
double value = x1.get(i, 0);
System.out.println(" value of x"+i+" is "+value);
}
}
catch ( SingularMatrixException e )
{
// throw new IllegalArgument("Singular matrix");
}
Но для этого кода у меня есть следующее исключение.
Exception in thread "main" java.lang.IllegalArgumentException: Specified element is out of bounds: (0 , 1)
at org.ejml.data.DenseMatrix64F.set(Unknown Source)
at org.ejml.simple.SimpleBase.setColumn(Unknown Source)
at com.temp.temp.Main_function.main(Main_function.java:37)
Я не могу понять, почему я получаю эту ошибку. Можете ли вы помочь мне решить эту ошибку?
1 ответ
Решение
SimpleMatrix A1 = новый SimpleMatrix(m,n); SimpleMatrix b1 = новый SimpleMatrix(m,1);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
A1.setRow(i, j, A2[i][j]);
double value1 = A1.get(i,j);
System.out.print(" "+value1);
// System.out.println();
}
b1.setRow(i,0, B2[i]);
double value2 = b1.get(i,0);
System.out.print(" = "+value2);
System.out.println();
}
try {
SimpleMatrix x1 = A1.solve(b1);
for(int i=0;i<x1.getNumElements();i++)
{
double value = x1.get(i, 0);
System.out.println(" value of x"+i+" is "+value);
}
}
catch ( SingularMatrixException e )
{
// throw new IllegalArgument("Singular matrix");
}