- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试编写一段代码,允许我创建 2x2 矩阵,然后使用 JAMA 库 ( http://math.nist.gov/javanumerics/jama/ ) 来计算我刚刚创建的矩阵的特征值和特征向量。然后,我将使用迹确定形式将特征值与分析方法进行比较。
我的代码如下。第一个 block 是生成 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);
}
}
这是为了创建矩阵。然后我想在下一个代码中使用该矩阵。当我使用“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
}
当我创建一个矩阵,填充值,然后尝试在下一段代码中使用它时,我收到有关不兼容文件类型的错误,并且 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
关于如何使其正确输出矩阵有什么建议吗?
最佳答案
注意PopulateMatrix()
的返回类型:
public void PopulateMatrix() { ... }
您说它不返回任何内容,将其设置为void
,因此当您尝试返回Matrix
时,您会收到一条错误消息,指出这是意外的返回类型。
如果您想从 PopulateMatrix()
返回一个 Matrix
,您应该将其返回类型更改为 Matrix
:
public Matrix PopulateMatrix() {
// rest of the code
double[][] array = { {a_11 , a_12} , {a_21 , a_22} };
Matrix A = new Matrix(array);
return A;
}
但这也许并不完全是您想要的。您已经声明了一个实例字段Matrix A
。当您执行 Matrix A = new Matrix(array) 时,您将创建一个具有相同名称的局部变量,而不是为实例字段分配值。如果您想稍后执行,可以将返回类型保留为 void
:
public void PopulateMatrix() {
// rest of the code
double[][] array = { {a_11 , a_12} , {a_21 , a_22} };
this.A = new Matrix(array);
}
并直接访问该字段(因为您将其公开):
Matrix_For_Eval_Calc matrixWrapper = new Matrix_For_Eval_Calc();
matrixWrapper.PopulateMatrix();
EigenvalueCalc(matrixWrapper.A);
顺便说一句,在命名变量、方法和类时,您应该尝试遵循 Java 约定:
InputMatrix
应为 InputMatrix
。PopulateMatrix()
应为 populateMatrix()
,EigenvalueCalc()
应为 eigenvalueCalc()
。Matrix_For_Eval_Calc
应为 MatrixForEvalCalc
。关于Java JAMA 不兼容无法转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932021/
我正在与 Jama Matrix 一起工作.我将它用于 LSI。它工作正常。但是,当我传递一个像 8000x8000 这样的大矩阵时,它会杀死我的整个系统。我只是调用 SVD,然后减小矩阵大小并相加。
当我使用 matrix.eig() 时,我得到了一个错误的特征向量(也通过运行多次来确定)。矩阵是: 1.2290 1.2168 2.8760 2.6370 2.2949 2.6402 1.2168
我正在使用 Jama API 解决线性代数问题。但它给我一个错误:java.lang.RuntimeException: Matrix is singular. 我想当矩阵是奇异矩阵时,有多种可能的解
我不熟悉将 Jama 用于矩阵。我的问题是,当我使用 det() 方法(与 LUDecomposition 类相关)时,它给出了 “Matrix must be square”。好的,我的矩阵是三角形
我有以下矩阵,它是对称且实数的(它是汉密尔顿运算符):(Matlab 友好) [63.000000, -1.732051, 0.000000, 0.000000, 0.000000, 0.000000
我正在尝试编写一段代码,允许我创建 2x2 矩阵,然后使用 JAMA 库 ( http://math.nist.gov/javanumerics/jama/ ) 来计算我刚刚创建的矩阵的特征值和特征向
首先,抱歉我的英语不好,但我需要你的帮助。 我用 java swing 开发了一个模拟程序,其中使用了大量矩阵计算。我的程序刚刚完成,但我需要加快我的表现。所以我使用了java Visual vm p
我正在使用 JAMA 进行图像处理中的一些矩阵运算。 在这里,我将矩阵与其转置相乘。肯定是有可能的。 但我收到以下错误: Exception in thread "main" java.lang.Il
我正在尝试在 Linux 的代码中使用 Jama 包。在我的主类中,我尝试使用 Matrix 类。 这是我的主要类(class): import Jama.*; class Main { pu
我有这个数组 double a[][] = {{1,1,1}, {0,1,1} , { 1,0,0} ,{0,1,0},{1,0,0},{1,0,1},{1,1,1},{1,1,1},
我想使用jama库将矩阵写入java文件。但是,只生成一个空文件。我正在使用下面的代码。可能出了什么问题? PrintWriter writer = null; try { w
我想使用 Jama 库将 2 矩阵相乘,但它返回: A col: 4 row: 4 B col: 1 row: 4 Exception in thread "AWT-EventQueue-0" jav
谁能告诉我 JAMA MATRIX 包 setMatrix 的工作原理吗?请不要建议我查看文档。我多次搜索文档,但没有得到任何其工作原理的示例。我有代码想要使用 JAMA MATRIX 包设置具有所需
我是 Java 编程的新手。我正在做一个科学模拟,其中必须求解一个线性方程组。 我在 Eclipse 中工作。我下载了 jama jar 文件并添加到 JRE 系统库中。问题是当我通过传递一个二维双数
这可能是一个有点愚蠢的问题,我也可能误解了解决这个问题的最佳方法,但我本质上想做的是: 我想将以下矩阵相乘以获得结果 -0.8。但是,理想情况下,我希望使用 JAMA 函数来执行此操作。到目前为止,我
我使用 JAMA.matrix 包..我如何打印矩阵的列 最佳答案 最简单的方法可能是 transpose矩阵,然后打印每一行。以API中的部分示例为例: double[][] vals = {{1.
关注 Jama矩阵在我的代码中定义: P: 3*3 Matrix I: 3*3 identity Matrix K: 3*2 Matrix H: 2*3 Matrix Q: 3*3 Matrix 以下
我正在尝试使用 Jama 求解 4x4 线性方程组(4 个变量,4 个方程)。我已经尝试过以下代码,但它不起作用。如果有人可以使用 Jama 或任何其他方法帮助我,我将不胜感激。 import Jam
我正在开发一个小型 Java 应用程序,用于对矩阵执行计算。这就是我现在计算方阵的行列式和逆矩阵的方法。但我想使用 Jama 类来计算特征值和特征向量,但我不知道如何使用它,有人可以帮我吗?谢谢。 i
我有一个使用 JAMA 的程序而需要测试的是一个矩阵是否可以倒置。我知道我可以尝试它并捕获异常,但这似乎是个坏主意(将 catch block 作为“正常”代码路径的一部分似乎是一种不好的形式)。 首
我是一名优秀的程序员,十分优秀!