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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10安装nfs服务器并实现liunx访问「建议收藏」

    1、测试环境    宿主操作系统:win1064位    虚拟机操作系统:ubuntuserver18.042、安装nfs服务器   a.下载安装haneWIN;   b.右键以管理员身份运行nfsserver(若不以管理员身份打开,设置项均为灰色不可设),切换到“Exports”标签页,点击“Editexportsfile"进行编辑,如下图所示。比如"E:\Video"为win1…

    2022年4月13日
    736
  • 大整数乘法的详解

    大整数乘法的详解一.问题由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。尤其是乘法运算,下面就是大整数的乘法的过程(加减法都一样的原理)。二.解决问题的方法方法一(传统的相乘逐步相加)乘法规律,一个数的第i位和另一个数的第j位相乘,一定会累加到结果的第i+j位,结果的数组一个数组元素存2位数,最后对结果整除得到进位,mod得到余数就是i+j位的数字,最后打印出来。对于大整数比较方便的输入方法是,.

    2022年6月2日
    37
  • 关于2020最新Kali无法使用arpspoof命令解决(在源和包都已经安装的情况下)

    关于2020最新Kali无法使用arpspoof命令解决(在源和包都已经安装的情况下)第一步可以参照这个https://hlynford.com/565.html如果你按照上面的步骤安装了相应的包,还是没有相应的命令,那多半就是路径的问题了第二部[root@server~]#echo$PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin如果输出的东西和上面不一样…

    2022年10月6日
    0
  • 电容论坛(电感电容电压公式)

    玉山YGR智能电容以客为尊智能电容器模块是新一代无功补偿模块化装置,结合绿色智能电网的精神应用于绿色电网。产品以微电子技术为基础,集成了自动测控、无功优化、过零切换、多重保护、网络通信、大屏幕显示等技术,实现了低压无功补偿的全部功能,并改变不同的组合构造不同的补偿方案。它是一种智能化、模块化、标准化、集约化的无功补偿装置。 投切电容器组大约20-30毫秒内就完成一个全部动作,这种…

    2022年4月15日
    37
  • 编程helloworld代码_pycharm怎么编写python代码

    编程helloworld代码_pycharm怎么编写python代码1.什么是Pycharm?PyCharm是一种PythonIDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。能够帮助我们在编写代码时提高效率。2.下载Pycharm网上提供的有专业版和教育版之分(windows下的)。网址:https://www.jetbrains.com/pycharm/download/#section=windows·专业版是收费的,功能更全面…

    2022年8月28日
    2
  • Glance详解_glance of

    Glance详解_glance ofGlance简介Glance是OpenStack平台中负责镜像服务的组件,其功能包括系统镜像的查找、注册和获取等,简单来说glance的功能就是用户可以通过其提供的RESTAPI查询和获取镜像元数据。glance负责OpenStack中的ImageService,那么Image是什么,简单来说Image就是一个模板,里面包含各种常用的操作系统和软件,这样用户在租用OpenStack服务后就…

    2025年7月26日
    0

发表回复

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

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