Я пытаюсь написать код, который позволяет мне создать матрицу 2x2, а затем использовать библиотеку JAMA (http://math.nist.gov/javanumerics/jama/), чтобы вычислить собственные значения и собственные векторы только что созданной матрицы. Затем я сравню собственные значения с аналитическим методом, используя форму, определяемую трассировкой.
Мой код ниже. Первый блок предназначен для генерации матрицы 2x2, затем второй блок кода для вычисления собственных значений и собственных векторов.
import Jama.Matrix;
import Jama.EigenvalueDecomposition;
import Jama.*;
import java.util.Scanner;
/**
* Code to generate a 2x2 matrix then find its eigenvalues and eigenvectors
* Check eigenvalue computation using trick for 2x2 case
* ^(only possible for 2x2, not in general possible for general nxn)
*/
public class Matrix_For_Eval_Calc
{
// instance variables - replace the example below with your own
public Matrix A;
// Create empty 2x2 array
/**
* Constructor for objects of class EigenvalueProblem
* Input elements in array
* Fill in elements of 2x2 matrix
*/
public void PopulateMatrix()
{
// initialise instance variables
// Prompt User Input for a_1,1 a_1,2 a_2,1 and a_2,2
Scanner in = new Scanner(System.in);
System.out.println("Enter the element a_{1,1}: ");
double a_11 = in.nextInt();
System.out.println("a_{1,1} = " + a_11 );
System.out.println("Enter the element a_{1,2}: ");
double a_12 = in.nextInt();
System.out.println("a_{1,2} = " + a_12 );
System.out.println("Enter the element a_{2,1}: ");
double a_21 = in.nextInt();
System.out.println("a_{2,1} = " + a_21 );
System.out.println("Enter the element a_{2,2}: ");
double a_22 = in.nextInt();
System.out.println("a_{2,2} = " + a_22 );
double[][] array = { {a_11 , a_12} , {a_21 , a_22} };
Matrix A = new Matrix(array);
// System.out.println(A);
// System.out.println(a_11 + "," + a_12);
// System.out.println(a_21 + "," + a_22);
}
}
То есть для создания матрицы. И затем я хочу использовать эту матрицу в следующем коде. Когда я использую «возврат A; '' Я получаю еще одну ошибку: "несовместимые типы: неожиданное возвращаемое значение"
import Jama.Matrix;
import Jama.EigenvalueDecomposition;
import Jama.*;
import java.util.Scanner;
/**
* Write a description of class EvalCalculation here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class EvalCalculation
{
// instance variables - replace the example below with your own
//private int x;
public void EigenvalueCalc(Matrix InputMatrix)
{
EigenvalueDecomposition somematrix = new EigenvalueDecomposition(InputMatrix);
Matrix S = somematrix.getV();
System.out.println("V = " + S);
// Compute Evals and e-vecs
// Print out
}
Когда я создаю матрицу, заполняю значениями, а затем пытаюсь использовать это в следующем фрагменте кода, я получаю сообщение об ошибке о несовместимых типах файлов и о том, что Matrix_For_Eval_Calc не может быть преобразован в матрицу. Я предполагаю, что это из-за отсутствия матрицы возврата, но не знаю, как это исправить.
Любые советы высоко ценится.
РЕДАКТИРОВАТЬ:
import Jama.Matrix;
import Jama.EigenvalueDecomposition;
import Jama.*;
import java.util.Scanner;
/**
* Code to generate a 2x2 matrix then find its eigenvalues and eigenvectors
* Check eigenvalue computation using trick for 2x2 case
* ^(only possible for 2x2, not in general possible for general nxn)
*/
public class MatrixForEvalCalc
{
// instance variables - replace the example below with your own
public Matrix A;
// Create empty 2x2 array
/**
* Constructor for objects of class EigenvalueProblem
* Input elements in array
* Fill in elements of 2x2 matrix
*/
public void populateMatrix()
{
// initialise instance variables
// Prompt User Input for a_1,1 a_1,2 a_2,1 and a_2,2
Scanner in = new Scanner(System.in);
System.out.println("Enter the element a_{1,1}: ");
double a_11 = in.nextInt();
System.out.println("a_{1,1} = " + a_11 );
System.out.println("Enter the element a_{1,2}: ");
double a_12 = in.nextInt();
System.out.println("a_{1,2} = " + a_12 );
System.out.println("Enter the element a_{2,1}: ");
double a_21 = in.nextInt();
System.out.println("a_{2,1} = " + a_21 );
System.out.println("Enter the element a_{2,2}: ");
double a_22 = in.nextInt();
System.out.println("a_{2,2} = " + a_22 );
double[][] array = { {a_11 , a_12} , {a_21 , a_22} };
this.A = new Matrix(array);
// return A;
}
}
Вторая часть
import Jama.Matrix;
import Jama.EigenvalueDecomposition;
import Jama.*;
import java.util.Scanner;
/**
* Write a description of class EvalCalculation here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class EvalCalculation
{
// instance variables - replace the example below with your own
//private int x;
public void eigenvalueCalc(Matrix inputMatrix)
{
EigenvalueDecomposition someMatrix = new EigenvalueDecomposition(inputMatrix);
Matrix S = someMatrix.getV();
System.out.println("V = " + S);
// Compute Evals and e-vecs
// Print out
}
}
Я создаю матрицу, заполняю ее. Затем используйте предложенный вами ввод
MatrixForEvalCalc matrixWrapper = new MatrixForEvalCalc();
matrixWrapper.PopulateMatrix();
EigenvalueCalc(matrixWrapper.A);
Затем я получаю на выходе V = Jama.Matrix@1b213c5
Любые советы о том, как заставить его правильно выводить матрицу?