Java之矩阵求秩

Java之矩阵求秩publicclassMatrixRank{publicstaticintRank(double[][]Matrix,interror_,intList){ intn=List; intm=Matrix.length; inti=0; inti1; intj=0; intj1; double

大家好,又见面了,我是你们的朋友全栈君。

public class MatrixRank {

   public static int Rank(double[][] Matrix,int error_,int List)
   {
	   int n=List;
	   int m=Matrix.length ;
	   int i=0;
	   int i1;
	   int j=0;
	   int j1;
	   double temp1;
	   if(m>n)
	   {
		   i=m;
		   m=n;
		   n=i;
		   i=1;
	   }
	   m-=1;
	   n-=1;
	   double[][]temp=new double[m+1][n+1];
	   if(i==0)
	   {
		 for(i=0;i<=m;i++)
		 {
			 for(j=0;j<=n;j++)
			 {
				 temp[i][j]=Matrix[i][j];
			 }
				 
		 }
	   }
	   else
	   {
		   for(i=0;i<=m;i++)
		   {
			   for(j=0;j<=n;j++)
			   {
				   temp[i][j]=Matrix[j][i];
			   }
		   }
	   }
	   if(m==0)
	   {
		   i=0;
		   while(i<=n)
		   {
			   if(Matrix[0][i]!=0)
			   {
				   return 1;
			   }
			   i+=1;
		   }
		   return 0;
	   }
	   double error0;
	   if(error_==-1)
	   {
		   error0=Math.pow(0.1, 10);
	   }
	   else
	   {
		   error0=Math.pow(0.1, error_);
	   }
	   i=0;
	   while(i<=m)
	   {
		   j=0;
		   while(j<=n)
		   {
			   if(temp[i][j]!=0)
			   {
				   error0*=temp[i][j];
				   i=m;
				   break;
			   }
			   j+=1;
		   }
		   i+=1;
	   }
	   double error1;
	   for(i=0;i<=m;i++)
	   {
		   j=0;
		   while(j<=n)
		   {
			   if(temp[i][j]!=0)
			   {
				   break;
			   }
			   j+=1;
		   }
		   if(j<=n)
		   {
			   i1=0;
			   while(i1<=m)
			   {
				   if(temp[i1][j]!=0&&i1!=i)
				   {
					   temp1=temp[i][j]/temp[i1][j];
					   error1=Math.abs((temp[i][j]-temp[i1][j]*temp1))*100;
					   error1+=error0;
					   for(j1=0;j1<=n;j1++)
					   {
						   temp[i1][j1]=temp[i][j1]-temp[i1][j1]*temp1;
						   if(Math.abs(temp[i1][j1])<error1)
						   {
							   temp[i1][j1]=0;
						   }
					   }
					   
				   }
				   i1+=1;
			   }
		   }
	   }
	   
	   i1=0;
	   for(i=0;i<=m;i++)
	   {
		   for(j=0;j<=n;j++)
		   {
			   if(temp[i][j]!=0)
			   {
				   i1+=1;
				   break;
			   }
		   }
	   }
	   return i1;
   }
   public static void main(String[]args)//测试
   {
   	double[][] TestMatrix = {
   			   {1, 22, 34,22}, 
   			   {1, 11,5,21} ,
   			   {0,1,5,11},
   			   {7,2,13,19}};	 
   	double[][]TestMatrix2={
   			{1,2,3},{4,7,8},{2,9,1}
   	};
   	double[][]TestMatrix3={
   			{1,2},{3,3}	
   	};
   		
   	  String strr=String.valueOf(Rank(TestMatrix,-1,4));
   	 String strr2=String.valueOf(Rank(TestMatrix2,-1,3));
   	 String strr3=String.valueOf(Rank(TestMatrix3,-1,2));
   	
      System.out.println(strr);
      System.out.println(strr2);
      System.out.println(strr3);
     
   	
   }
   
}

运行结果:

Java之矩阵求秩


推荐文章:那些年,做的几个应用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145006.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • shell编程if/then备忘

    shell编程if/then备忘一、基础知识”[“是专有命令,而不是普通测试符号(ls/usr/bin/[有结果),和test命令等价,并且是内建命令。bash2.02引入[[…]]扩展测试命令,但是[[是一个关键字,而不是一个命令,Bash把[[$a-lt$b]]看做一个单独的元素,并且返回一个退出状态码((…))和let…结构也能够返回退出状态吗,当他们所测试的算术表达式的结构

    2022年8月18日
    10
  • present continuous passive_representative和representation

    present continuous passive_representative和representation1.安装ExtremeComponents安装文件在/components/web/extremetable/下,包括jar文件,images图片和css文件以及properties文件。以及web.xml,sample.jsp示例。连环指定:images文件,css文件,properties文件可随意摆放properties文件中指定images文件的位置,web.xml中指定pr…

    2022年8月20日
    7
  • spring是什么意思_什么spring是孩子

    spring是什么意思_什么spring是孩子Spring是什么?            Spring是一个开源的轻量级的Java开发框架。  2.Spring能帮我们做什么?          简化应用程序的开发。  3.简化应用程序开发体现在哪些方面?     ①IOC容器       Java思想是面向对象的开发,一个应用程序是由一组对象通过相互协作开发出的业务逻辑组成,那么如何管理这些对象,使他们高效地协作呢?抽象工厂、工…

    2025年6月13日
    3
  • 二叉树的性质及其创建

    二叉树的性质及其创建二叉树的性质性质1在二叉树的第i层上至多有2^(i-1)个结点(i>=1)性质2深度为k的二叉树至多有2^k-1个结点(k>=1)性质3对任意一棵二叉树,若终端结点数为n0,其度数为2的结点数为n2,那么n0=n2+1满二叉树深度为k且结点个数为2^k-1,即每一层都具有最大结点数完全二叉树深度为k,结点数为n的二叉树,如果其结点1n的位置序号分别与满二叉树的结点1…

    2022年5月15日
    38
  • 开关三极管的导通和截止条件「建议收藏」

    开关三极管的导通和截止条件「建议收藏」转自:https://blog.csdn.net/ruanjianruanjianruan/article/details/38523973三极管在我们数字电路和模拟电路中都有大量的应用,在我们开发板上也用了多个三极管。在我们板子上的LED小灯部分,就有这个三极管的应用了,图3-5的LED电路中的Q16就是一个PNP型的三极管。图3-5 LED电路三极管的初步认识三极管是一…

    2022年6月16日
    138
  • ajax处理跨域_django跨域解决方案

    ajax处理跨域_django跨域解决方案原文:Javascript跨域和Ajax跨域解决方案 摘要:跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过style标签加载外部样式表文件、通过img标签加载外部图片、通过script标签加载外部脚本文件、通过Webfont加载字体文件等等。默认情况下,脚本访问文档属性等数据采用的是同源策略(Sameorigi…

    2022年8月24日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号