⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.java

📁 用Java开发的实用数学建模程序 简单易懂 初学者可以用来学习java知识
💻 JAVA
字号:
/*
 *@(#)Matrix.java 2.0 2005/05/05
 *
 *清华大学 精密仪器与机械学系
 *范灿升 fancansheng@163.com
 */

package algorithm;

/**
 *这个类提供一些基本的矩阵运算。
 *<p>随着程序功能的加强,这个类需要不断地扩展。
 *@version	2.0, 2005/05/05
 *@author	范灿升
 *@see	Modeling
 */

public class Matrix
{
	/**
	 *对矩阵执行转置运算。
	 *<p>该运行不会改变输入矩阵。
	 *@param	matrix	要进行转置的矩阵。
	 *@return	转置后的矩阵。如果输入不是有效的矩阵,则返回null。
	 */
	public static double[][] transpose(double[][] matrix)
	{
		int i,j;
		if(matrix==null)
			return null;
		int row=matrix.length;
		for(i=0;i<row;i++)
		{
			if(matrix[i]==null)
				return null;
		}
		int column=matrix[0].length;//检查完才知道有没有column
		
		double[][] matrixT=new double[column][row];
		for(i=0;i<row;i++)
		{
			for(j=0;j<column;j++)
				matrixT[j][i]=matrix[i][j];
		}
		return matrixT;
	}
	
	/**
	 *对输入的两个矩阵执行乘法运算。
	 *@param	m1	第一个矩阵
	 *@param	m2	另一个矩阵
	 *@return	相乘后的矩阵。如果m1的列与m2的行数不相等,或者输入不是有效的矩阵则返回null。
	 */
	public static double[][] product(double[][] m1,double[][] m2)
	{
		int i,j,k;
		
		if(m1==null)
			return null;
		int row1=m1.length;
		for(i=0;i<row1;i++)
		{
			if(m1[i]==null)
				return null;
		}
		int column1=m1[0].length;
		
		if(m2==null)
			return null;
		int row2=m2.length;
		for(i=0;i<row2;i++)
		{
			if(m2[i]==null)
				return null;
		}
		int column2=m2[0].length;
		
		if(column1!=row2)
			return null;
		//该返回null的都返回了
		
		double[][] prod=new double[row1][column2];
		for(i=0;i<row1;i++)
		{
			for(j=0;j<column2;j++)
			{
				prod[i][j]=0;
				for(k=0;k<column1;k++)
					prod[i][j]+=(m1[i][k]*m2[k][j]);
			}
		}
		return prod;
	}
	
	/**
	 *对输入的两个矩阵执行乘法运算。其中第二个参数为列向量。
	 *@param	m1	第一个矩阵
	 *@param	m2	另一个矩阵,是列向量。
	 *@return	相乘后的矩阵(列向量)。如果m1的列与m2的行数不相等,或者输入不是有效的矩阵则返回null。
	 */
	public static double[] product(double[][] m1,double[] m2)
	{
		double[] prod=new double[m1.length];
		//列向量
		int i,j;
		
		if(m1==null)
			return null;
		if(m1[0].length!=m2.length)
			return null;
		
		for(i=0;i<m1.length;i++)
		{
			prod[i]=0;
			for(j=0;j<m2.length;j++)
				prod[i]+=(m1[i][j]*m2[j]);
		}
		return prod;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -