全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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();
    }
  }
}

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


# java  # n*n  # 矩阵  # 求值  # 逆矩阵  # 算法  # Java实现的求逆矩阵算法示例  # C#计算矩阵的逆矩阵方法实例分析  # C语言求逆矩阵案例详解  # 操作技巧  # 来了  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 所述  # 先来  # 程序设计  # 自动生成  # 值为  # 后加  # 讲述了  # void  # matrix  # static  # int  # printf 


相关文章: 零基础网站服务器架设实战:轻量应用与域名解析配置指南  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何将凡科建站内容保存为本地文件?  建站之星安装提示数据库无法连接如何解决?  北京网站制作公司哪家好一点,北京租房网站有哪些?  香港服务器租用每月最低只需15元?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  高端网站建设与定制开发一站式解决方案 中企动力  如何通过西部数码建站助手快速创建专业网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  建站之星安装模板失败:服务器环境不兼容?  C++如何编写函数模板?(泛型编程入门)  网站按钮制作软件,如何实现网页中按钮的自动点击?  建站主机是什么?如何选择适合的建站主机?  建站主机与服务器功能差异如何区分?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  学校建站服务器如何选型才能满足性能需求?  如何快速查询网站的真实建站时间?  在线教育网站制作平台,山西立德教育官网?  电商平台网站制作流程,电商网站如何制作?  制作网站外包平台,自动化接单网站有哪些?  内部网站制作流程,如何建立公司内部网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  网站制作报价单模板图片,小松挖机官方网站报价?  如何在自有机房高效搭建专业网站?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  制作表格网站有哪些,线上表格怎么弄?  如何在Ubuntu系统下快速搭建WordPress个人网站?  红河网站制作公司,红河事业单位身份证如何上传?  重庆市网站制作公司,重庆招聘网站哪个好?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在阿里云高效完成企业建站全流程?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何快速辨别茅台真假?关键步骤解析  如何通过网站建站时间优化SEO与用户体验?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  制作宣传网站的软件,小红书可以宣传网站吗?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何快速生成ASP一键建站模板并优化安全性?  建站主机类型有哪些?如何正确选型  简历在线制作网站免费,免费下载个人简历的网站是哪些?  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站org新手必看:2024最新搭建流程与模板选择技巧  建站之星备案流程有哪些注意事项? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。