广告
返回顶部
首页 > 资讯 > 精选 >java实现的n*n矩阵求值及求逆矩阵算法示例
  • 349
分享到

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

java矩阵算法 2023-05-31 01:05:16 349人浏览 独家记忆
摘要

本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法。分享给大家供大家参考,具体如下:先来看看运行结果:java版的写出来了,用的跟C语言相同的算法,然后看看能不能以后加个框做成程序:import java.math.*;import

本文实例讲述了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();    }  }}

--结束END--

本文标题: java实现的n*n矩阵求值及求逆矩阵算法示例

本文链接: https://www.lsjlt.com/news/222740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作