文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java实现的n*n矩阵求值及求逆矩阵算法示例

2023-05-31 01:37

关注

本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法。分享给大家供大家参考,具体如下:

先来看看运行结果:

java实现的n*n矩阵求值及求逆矩阵算法示例

java版的写出来了,用的跟c语言相同的算法,然后看看能不能以后加个框做成程序:

import java.math.*;import java.util.*;import java.text.*;public class matrix {  static int map1[][]=new int [110][110];  static int just[][]=new int [110][110];  public static void printf(int n,int map[][])  {    int i,j;    for(i=1;i<=n;i++ )    {      for(j=1;j<n;j++)        System.out.print(map[i][j]+" ");      System.out.println(map[i][j]);    }  }  public static void get(int numi,int numj,int map[][],int n)  {    int i,j,k,l;    for(i=0;i<n+10;i++)      for(j=0;j<n+10;j++)        just[i][j]=1;    for(i=1;i<=n-1;i++)//求余子式矩阵      for(j=1;j<=n-1;j++)      {        if(i>=numi&&j<numj)        just[i][j]=map[i+1][j];        else if(i>=numi&&j>=numj)        just[i][j]=map[i+1][j+1];        else if(i<numi&&j>=numj)        just[i][j]=map[i][j+1];        else if(i<numi&&j<numj)        just[i][j]=map[i][j];      }  }  //static int map[][]=new int [110][110];  public static int getans(int nn)  {    int map[][]=new int [110][110];    for(int i=1;i<=nn;i++)    for(int j=1;j<=nn;j++)    map[i][j]=just[i][j];    if(nn==2)    return map[1][1]*map[2][2]-map[1][2]*map[2][1];    else if(nn==1)    return map[1][1];    else    {      int cnb=0;      for(int i=1;i<=nn;i++)      {        get(1,i,map,nn);//得到当前余子式 just      // printf("pay attention!\n");        //print(map,nn);        //print(just,nn-1);        if(i%2==1)        cnb+=map[1][i]*getans(nn-1);        else        cnb-=map[1][i]*getans(nn-1);      }      return cnb;    }  }  public static int gcd(int m,int n)  {//   if(m<n)//   matrix.gcd(n,m);//   if(n==0)//   return m;////   else//   return matrix.gcd(n,m%n);    int mm=m;    int nn=n;    if(mm<nn)    {      int c=mm;      mm=nn;      nn=c;    }    int w=1;    while(w!=0)    {      w=mm%nn;      mm=nn;      nn=w;    }    return mm;  }  public static void ans(int n,int m)  {    if(n*m<0)    {      System.out.print("-");      ans(Math.abs(n),Math.abs(m));      return ;    }    if(m==1)    System.out.print(n+"\t");    else if(n%m==0)      System.out.print(n/m+"\t");    else      System.out.print((n/matrix.gcd(m, n))+"/"+(m/matrix.gcd(m, n))+"\t");  }  public static void main(String[] args) {    // TODO 自动生成的方法存根    Scanner cin=new Scanner(System.in);    int i,j,k,l,m,p;    while(true)    {      int n=cin.nextInt();      int ans=0;      for(i=0;i<n+10;i++)        for(j=0;j<n+10;j++)          map1[i][j]=1;      for(i=1;i<=n;i++)        for(j=1;j<=n;j++)        {          map1[i][j]=cin.nextInt();          just[i][j]=map1[i][j];        }      int ans1=matrix.getans(n);      System.out.println("矩阵的值为:");      System.out.println(ans1);      int map2[][]=new int [110][110];      for(i=1;i<=n;i++)        for(j=1;j<=n;j++)        {          map2[i][j]=map1[j][i];          just[i][j]=map2[i][j];        }      System.out.println("转置矩阵为:");      matrix.printf(n, map2);      int help2=matrix.getans(n);      System.out.println(help2);      if(help2==0)      {        System.out.println("No inverse matrix");        continue;      }      System.out.println("逆矩阵为:");      for(i=1;i<=n;i++)      {        for(j=1;j<=n;j++)        {          matrix.get(i, j, map2, n);          //boolean b=((i+j)%2==0);          if((i+j)%2==0)          matrix.ans(matrix.getans(n-1), help2);          else          matrix.ans(matrix.getans(n-1)*-1, help2);        }        System.out.println();      }      System.out.println();    }  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯