Java之矩阵求秩
2016-03-04 23:36
375 查看
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基础系列6:计时器Timer与新闻的定时自动采集
- Java——包的概念及使用
- java Map实现的cache manager,定时清除缓存起来的值
- Java基础学习第十天——修饰符与内部类
- eclipse优化
- Eclipse使用技巧
- JavaWeb开发必过关-Servlet学习(一)
- JavaWeb开发必过关-Servlet学习(一)
- java复习总结2
- java学习之——安装与配置环境变量
- struts2日常
- [SSH 3]以网上商城项目浅谈spring配置
- [SSH 3]以网上商城项目浅谈spring配置
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- JAVA类课后练习
- [SSH 2] 以网站主页面浅谈Struts2配置
- [SSH 2] 以网站主页面浅谈Struts2配置
- Java基础学习第九天——多态,抽象类,接口
- SPRING IN ACTION 第4版笔记-第六章RENDERING WEB VIEWS-004- <s:url>、<s:escapeBody>标签
- java初步学习之队列