package com.shine.matrix;
/*
* 矩阵类
* 直接由2维数组进行构建
*/
public class Matrix {
private int element[][];//存储矩阵元素的二维数组
public Matrix(int m,int n){
this.element = new int[m][n];
}
public Matrix(int n){
this(n,n);
}
public Matrix(int m,int n,int mat[][]){//构造m*n矩阵,由mat提供元素
this(m,n);
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat[i].length;j++)
this.element[i][j] = mat[i][j];
}
}
public int get(int i,int j){
return this.element[i][j];
}
public void set(int i,int j,int value){
this.element[i][j] = value;
}
public String toString() {
String str = "矩阵 Matrix("+this.element.length+"x"+this.element[0].length+"):\n";
for(int i=0;i<this.element.length;i++)
{
for(int j=0;j<this.element[i].length;j++)
str += String.format("%4d", this.element[i][j]);
str += "\n";
}
return str;
};
public void add(Matrix mat)//矩阵的加法
{
if(mat.element.length!=this.element.length||mat.element[0].length!=this.element[0].length)
throw new IllegalArgumentException("两个矩阵阶数不同,不能进行相加运算!");
for(int i=0;i<this.element.length;i++)
for(int j=0;j<this.element[i].length;j++)
this.element[i][j]+=mat.element[i][j];
}
}
package com.shine.matrix;
/*
* 描述稀疏矩阵非零元素的三元组类
*/
public class Triple implements java.lang.Comparable<Triple>{
int row,column,value;
public Triple(int row,int column,int value)
{
if(row<0||column<0)
throw new IllegalArgumentException("稀疏矩阵元素三元组的行/列序号非正数");
this.row = row;
this.column = column;
this.value = value;
}
//拷贝构造方法,复制一个三元组
public Triple(Triple elem)
{
this(elem.row,elem.column,elem.value);
}
@Override
public String toString() {
return "("+row+","+column+","+value+")";
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Triple))
return false;
Triple elem = (Triple)obj;
return this.row==elem.row&&this.column==elem.column&&this.value==elem.value;
}
//根据三元组位置比较两个三元组的大小,与元素值无关,约定三元组排序次序
public int compareTo(Triple elem) {
if(this.row<elem.row||this.row==elem.row&&this.column<elem.column)
return -1;
if(this.row==elem.row&&this.column==elem.column)
return 0;
return 1;
}
}
package com.shine.matrix;
/*
* 下三角矩阵的压缩存储
*/
public class DownTriangleMatrix {
private int rows;
private int element[];
public DownTriangleMatrix(int rows)//构造rows阶下三角矩阵,元素为0
{
if(rows<0)
throw new IllegalArgumentException("矩阵行数非正数:"+rows);
this.rows = rows;
this.element = new int[rows*(rows+1)/2];//rows阶下三角矩阵存储rows*(rows+1)/2个元素
}
//构造rows阶下三角矩阵,初值由mat提供,mat按行主序顺序存储rows阶下三角矩阵元素
public DownTriangleMatrix(int rows,int[] mat)
{
this(rows);
int n = element.length<=mat.length? element.length:mat.length;
for(int i=0;i<n;i++)
this.element[i] = mat[i];
}
public int get(int i,int j)
{
if(i<0||i>=rows||j<0||j>=rows)
throw new IndexOutOfBoundsException("矩阵的行号或列号越界");
return i<j?0:element[i*(i+1)/2+j];//按照线性压缩存储地址寻找矩阵元素
}
public void set(int i,int j,int value)
{
if(i<0||i>=rows||j<0||j>=rows)
throw new IndexOutOfBoundsException("矩阵的行号或列号越界");
this.element[i*(i+1)/2+j]=value;
}
public void add(DownTriangleMatrix mat)//两个下三角矩阵的相加
{
if(this.rows!=mat.rows)
throw new IllegalArgumentException("两个矩阵的阶数不同,不能相加");
for(int i=0;i<this.element.length;i++)
this.element[i] += mat.element[i];
}
public String toString()
{
String str="下三角矩阵"+this.getClass().getName()+"("+this.rows+"阶):\n";
for(int i=0;i<this.rows;i++){
for(int j=0;j<this.rows;j++)
str += String.format("%4d", this.get(i, j));
str +="\n";
}
return str;
}
}
分享到:
相关推荐
使用java实现求矩阵的伴随矩阵,使用者可以根据自身需要进行采用
矩阵转置的java实现,使用java实现矩阵的转置运算
因此输出的形状,像条蛇,因此称为蛇形矩阵.
该程序实现了Java的基本运算: 1.矩阵的相加。 2.矩阵的相减。 3.矩阵于数的相乘。 4.矩阵于矩阵的相乘。 5.矩阵的求秩。 6.矩阵的求逆(能求2阶以上的)。 7.矩阵的转秩。
使用java实现求矩阵的逆矩阵,使用者可根据吱声需要采纳
矩阵的Java实现,含矩阵的所有运算,也可与向量进行运算表示图形的变换。
本代码展示了矩阵的转置,通过提示,输入想要转置的矩阵,完成该矩阵的转置
矩阵乘法的java实现,希望对大家有用。
利用JAVA实现的一个简单的矩阵计算器,可以实现矩阵间的加法,减法和乘法,有详细的注释
设计一个矩阵相乘的Strassen算法编程实现并做算法的时间复杂性分析。 其中:乘积矩阵C = A*B, A=(aij)n*n,B=(bij)n*n (1)考虑n为2的幂次方的情形,取n=8实现分治递归; (2)考虑n不是2的幂次方,n为偶数的...
主要介绍了Java实现的求逆矩阵算法,涉及java基于数组的矩阵遍历与运算相关操作技巧,需要的朋友可以参考下
用JAVA实现螺旋矩阵的编写,这是一种比较容易让人接受的方法
java实现的矩阵转换算法,包括完整的java 和class文件项目。
矩阵减减乘除java实现
用java实现矩阵的转置和矩阵的相乘,就是一个很简单的小程序,初次学java,试着编的,比较简单,仅供参考
这是一个java实现的矩阵连乘算法...欢迎大家来下载...
本项目是由java实现的大矩阵相乘Strassen算法。采用的是分治法的算法。
用Java实现循环矩阵的输出,通过用户输入是几阶矩阵然后自动输出
数据结构 用Java语言实现矩阵 可视代码数据结构 用Java语言实现矩阵 可视代码数据结构 用Java语言实现矩阵 可视代码数据结构 用Java语言实现矩阵 可视代码
使用java实现矩阵行列式的计算,下载者可根据自身需要进行修改