189 8069 5689

java行列式计算源代码 行列的代码

java中n阶行列式的代码

public class Arranger {

成都创新互联服务项目包括晋中网站建设、晋中网站制作、晋中网页制作以及晋中网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,晋中网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到晋中省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

private double[][] arrangerMatrix;

private double arrangerResult=1.0;

public static void main(String args[]){

double[][] a={{4,1,4,8},{1,1,3,2},{2,2,5,1},{2,2,1,4}};

Arranger ar=new Arranger();

ar.arrFunction(a);//把行列式变成上三角行列式

ar.displayMatrix();//显示得出的上三角行列式

ar.displayResult(); //显示行列式计算结果

}

public void arrFunction(double[][] a){//Guass 消去

double k=0;

for (int p = 0; pa[0].length-1; p++) {

for (int r =p+1; ra.length; r++) {

k=a[r][p]/a[p][p];

a[r][p]=0;

for (int c = p+1; ca[0].length; c++) {

a[r][c]=a[r][c]-k*a[p][c];

}//u

}//r

}//c

arrangerMatrix=new double[a.length][a[0].length];

for (int i = 0; ia.length; i++) {

for (int j = 0; ja[0].length; j++) {

arrangerMatrix[i][j]=a[i][j];

if (i==j) {arrangerResult=arrangerResult*a[i][j];}//计算主对角线相乘的结果

//System.out.println (a[i][j]+" ");

}//j

}//i

}

public void displayMatrix(){

for (int i = 0; iarrangerMatrix.length; i++) {

for (int j = 0; jarrangerMatrix[0].length; j++) {

System.out.print (arrangerMatrix[i][j]+" ");

}//j

System.out.println ();

}//i

}

public void displayResult(){

System.out.println ("The result is "+arrangerResult);

}

}

求java编写行列式矩阵的相关知识

思路应该很简单,考虑如何抽象类,矩阵如何存储的数据结构如何表示(此处不建议使用数组,建议使用相关的容器,比如嵌套的ArrayListArrayListDouble, 类存储数据),容器类更方便的实现你说的3中的删除一行,不过删除列需要一些额外处理。

目标函数,应该不多,建议百度一下,有没有java实现的关于数学运算的第三方jar包,这样的话,你只要稍微封装一下即可。

见第一

如果使用容器,因为容器是动态的,不是数组的静态,也即是说,数据的多少对程序的影响是微小的。

希望上边的答复可以帮助到你。

行列式求值的java程序

这个用个循环递归就好了。先写个从n阶,以及位置(x,y)得到n-1阶的函数,然后用那个公式直接代入一个递归就行了。

java 求矩阵乘法及行列式的值

/**

 * 矩阵乘法

 * @param a

 * @param b

 * @return

 */

public static double[][] mulMatrix(double[][] a,double[][] b){

 double[][] c=new double[a.length][b[0].length];

 //相乘的两个行列式需要满足,第一个行列式的列于第二个行列式的行相等

 if(a[0].length!=b.length){

 System.out.println("Wrong parameters.");

 return c;

 }

 //若A为mXn矩阵,B为nXp矩阵,返回一个mXp的矩阵

 for (int i = 0; i  c.length; i++) {

for (int j = 0; j  c[0].length; j++) {

for (int j2 = 0; j2  a[0].length; j2++) {

c[i][j]=c[i][j]+a[i][j2]*b[j2][j];

}

}

}

 return c;

}

/**

 * 计算行列式的值

 * @param a

 * @return

 */

static double determinant(double[][] a){

double result2 = 0;

if(a.length2){

 //每次选择第一行展开

for(int i=0;ia[0].length;i++){

//系数符号

double f=Math.pow(-1,i);

//求余子式

double[][] yuzs=new double[a.length-1][a[0].length-1];

for (int j = 0; j  yuzs.length; j++) {

for (int j2 = 0; j2  yuzs[0].length; j2++) {

//去掉第一行,第i列之后的行列式即为余子式

if(j2i){

yuzs[j][j2]=a[j+1][j2];

}else {

yuzs[j][j2]=a[j+1][j2+1];

}

}

//行列式的拉普拉斯展开式,递归计算

result2+=a[0][i]*determinant(yuzs)*f;

}

}

else{

//两行两列的行列式使用公式

if(a.length==2){

result2=a[0][0]*a[1][1]-a[0][1]*a[1][0];

}

//单行行列式的值即为本身

else{

result2=a[0][0];

}

}

return result2;

}

转自


当前标题:java行列式计算源代码 行列的代码
文章转载:http://cdxtjz.cn/article/dosijcc.html

其他资讯