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


相关推荐

  • 新版Pycharm中Matplotlib图像不在弹出独立的显示窗口「建议收藏」

    新版Pycharm中Matplotlib图像不在弹出独立的显示窗口「建议收藏」官方说明链接:https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000736584-SciView-in-PyCharm-2017-3-reduces-functionality-of-Matplotlibpycharm从2017.3版之后,将matplotlib的绘图的结果默认显示在SciView窗口中…

    2022年8月27日
    5
  • c语言 obj_obj转json

    c语言 obj_obj转json我是前言看开源代码时,总会看到一些大神级别的代码,给人眼前一亮的感觉,多数都是被淡忘的C语言语法,总结下objc写码中遇到的各类非主流代码技巧和一些妙用:[娱乐向]objc最短的方法声明[C]结构体的初始化[C]三元条件表达式的两元使用[C]数组的下标初始化[objc]可变参数类型的block[objc]readonly属性支持扩展的写法[C]小括号内联复合表达式[娱乐向]奇葩的C

    2022年10月18日
    4
  • nmap命令详解「建议收藏」

    nmap命令详解「建议收藏」nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还

    2022年5月8日
    151
  • MySQL递归查询 三种实现方式

    MySQL递归查询 三种实现方式我是以山东济南的行政区划作为示例的,数据库是MySQL话不多说,直接上示例代码!感觉阅读麻烦的伙伴可以直接下载资源:点我下载1.建表脚本1.1.建表DROPTABLEIFEXISTS`sys_region`;CREATETABLE`sys_region`(`id`int(50)NOTNULLAUTO_INCREMENTCOMMENT’地区主键编号’,`name`varchar(50)CHARACTERSETutf8COLLATEut

    2022年7月15日
    41
  • 机器学习之朴素贝叶斯分类算法

    机器学习之朴素贝叶斯分类算法一、数学知识相关1.独立事件–前提2.条件概率3.全概率公式4.贝叶斯公式5.朴素贝叶斯公式其中:P(A)叫做A事件的先验概率,即一般情况下,认为A发生的概率。 P(B|A)叫做似然度,是A假设条件成立的情况下发生B的概率。 P(A|B)叫做后验概率,在B发生的情况下发生A的概率,也就是要求的概率。P(B)叫做标准化常量,即在一般情况下,认为B…

    2022年10月15日
    1
  • c++输入文件流ifstream用法详解

    c++输入文件流ifstream用法详解Andrew-&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;China:SaysHelloNoterightofChina:Chinathinks\naboutitChina–&amp;amp;amp;amp;amp;amp;amp;amp;amp;am

    2022年6月14日
    43

发表回复

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

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