一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現(xiàn)的n*n矩陣求值及求逆矩陣算法示例

java實現(xiàn)的n*n矩陣求值及求逆矩陣算法示例

2021-01-14 15:44hpuzsk Java教程

這篇文章主要介紹了java實現(xiàn)的n*n矩陣求值及求逆矩陣算法,結(jié)合具體實例形式分析了java基于數(shù)組的矩陣定義、遍歷、運算等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了java實現(xiàn)的n*n矩陣求值及求逆矩陣算法。分享給大家供大家參考,具體如下:

先來看看運行結(jié)果:

java實現(xiàn)的n*n矩陣求值及求逆矩陣算法示例

java版的寫出來了,用的跟c語言相同的算法,然后看看能不能以后加個框做成程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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("轉(zhuǎn)置矩陣為:");
      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程序設(shè)計有所幫助。

原文鏈接:http://blog.csdn.net/z8110/article/details/51691577

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日摸日日添日日透 | 日韩制服丝袜在线观看 | 色综合天天综合中文网 | 亚洲高清中文字幕一区二区三区 | 亚洲成av人片天堂网 | 亚洲网红精品大秀在线观看 | 美女露奶奶 | 久久精品观看 | 日本三级在丈面前被耍了 | 国产欧美成人不卡视频 | 公妇仑乱在线观看 | 精品久久久久久 | 国产精品思瑞在线观看 | 国产成人精品在线 | 草草影院免费 | 免费观看一级特黄三大片视频 | α级毛片| 免费国产网站 | 欧美高清milf在线播放 | jk制服白丝超短裙流白浆 | 波多野结衣一区 | 天天综合色天天综合色sb | 国产一区视频在线免费观看 | gaygayas男男免费中国 | 美女大乳被捏羞羞漫画 | 俄罗斯妈妈k8影院在线观看 | 国产人成激情视频在线观看 | av魔镜收集号| 四虎成人网| 女女性恋爱视频入口 | 99精品久久精品一区二区小说 | 亚洲成人mv| 俄罗斯三级在线观看级 | 国产欧美va欧美va香蕉在线观 | 国产一区在线播放 | 色老板在线播放 | 厨房里摸着乳丰满在线观看 | 欧美特级午夜一区二区三区 | 香蕉久久ac一区二区三区 | 女黑人尺寸bbb | 91香蕉嫩草 |