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之矩阵求秩


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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux apache2配置_apache2.4安装教程

    linux apache2配置_apache2.4安装教程一、安装:ubuntu及debian下的apahce有点特别,如果使用apt-get方式安装(apt-getinstallapache2)则安装目录默认在/etc/apache2默认log在/var/log/apache2/(这个鸟地方让我找了好久)二、配置文件说明/etc/apache2/apache2.conf此为apache2的主配置文件具体可

  • oracle数据库去重查询_oracle查询去重数据

    oracle数据库去重查询_oracle查询去重数据oracle数据库中有如下一张表,包含id,loginid,name,researchtime等字段,其中name字段中的数据有重复,查询数据时要重复数据只取一条,利用row_number()over(partitionby列orderby列desc)方法实现1:selecta.,row_number()over(partitionbya.nameorderbyres…

  • android高德地图中心点,高德地图中心点以及自定义infowindow[通俗易懂]

    android高德地图中心点,高德地图中心点以及自定义infowindow[通俗易懂]jdfw.gif基本效果图就是这个样子,录制这个软件不太好使,每次切换地点是点击确定变更的。接下来就看看地图上的功能是如何实现的:实现的方式编写自定义的infowindow一,书写布局样式(自定义随意写)android:layout_width=”match_parent”android:layout_height=”match_parent”android:background=”@drawab…

  • 安全帽识别软件使用中常见问题分析[通俗易懂]

    安全帽识别软件使用中常见问题分析[通俗易懂]一、安全帽识别软件的主要功能是什么?安全帽识别是通俗的说法,相对准确的名称应该是安全帽佩戴检测,是用深度学习的算法对视频流进行分析,通过人工智能来判断视频中的人是否未佩戴安全帽,如果未佩戴,则触发告警规则。二、安全帽识别软件的技术成熟吗?2012年人工智能领域的卷积神经网络迎来重大突破,深圳强美随即将此尖端技术应用于工业安全监控,因为掌握海量样本数据的先天优势,鹰眸安全帽(佩戴检测)识别系…

  • Go Modules 详解

    Go Modules 详解

  • Java SE学习之printf 日期转换符[通俗易懂]

    Java SE学习之printf 日期转换符

发表回复

您的电子邮箱地址不会被公开。

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