切換
舊版
前往
大廳
主題

java_矩陣相乘

深海異音 | 2014-01-06 15:18:18 | 巴幣 16 | 人氣 5401


創建一個【data.txt】,
上面是A矩陣,下面是B矩陣,中間用  ?個【=】來分割,如:
558 9
66 -5
11 6
-5 4
-8 9
==========================
1 2 3 4 5 6
7 8 9 10 22 11



運行結果:



程式碼:
import  java.io.BufferedReader;
import  java.io.FileReader;
import  java.util.ArrayList;

public  class  yege  {

   //  傳入【字串陣列】;回傳【int陣列】
   static int[]  INT_array(String[]  s)  {
      int[]  i  =  new  int[s.length];
      for  (int  j  =  0;  j  <  i.length;  j++)  {
          i[j]  =  Integer.valueOf(s[j]);
      }
      return i;
   }

   //  列印矩陣(傳入int[][]
   static void  print(int[][]  a)  {
      for  (int[]  i  :  a)  {
          for  (int  s  :  i)  {
             System.out.print(s  +  "\t");
          }
          System.out.println("");
      }
   }

   //  列印矩陣(傳入ArrayList<int[]>
   static void  print(ArrayList<int[]>  a)  {
      for  (int[]  i  :  a)  {
          for  (int  s  :  i)  {
             System.out.print(s  +  "\t");
          }
          System.out.println("");
      }
   }

   //  計算矩陣相乘
   static int[][]  ji_suan(ArrayList<int[]>  a,  ArrayList<int[]>  b)  {
      int  c[][]  =  new  int[a.size()][b.get(0).length];
      for  (int  k  =  0;  k  <  b.get(0).length;  k++)  {
          for  (int  i  =  0;  i  <  a.size();  i++)  {
             for  (int  j =  0;  j  <  a.get(i).length;  j++)  {
                c[i][k]  +=  a.get(i)[j]  *  b.get(j)[k];
             }
          }
      }
      return c;
   }
   
   public static  void  main(String[]  args)  throws  Exception {

      BufferedReader  data =  new  BufferedReader(
             new  FileReader("src/data3.txt"));
      String  s  =  "";
      ArrayList<int[]>  A  =  new  ArrayList<int[]>();
      ArrayList<int[]>  B  =  new  ArrayList<int[]>();
      boolean pan  =  false;//判斷要存到A還是B

      for  (int  i =  0;  (s  =  data.readLine())  !=  null;  i++)  {//讀取資料檔
          if  (pan)//存到B
             B.add(INT_array(s.split("[ ]")));
          
          if  (s.matches("[=]{0,50}"))  //遇到[=]{050},就換存到B
             pan  =  true;

          if  (!pan)//存到A
             A.add(INT_array(s.split("[ ]")));
      }

      int[][]  C  =  ji_suan(A,  B);//  計算矩陣A*B

      System.out.println("矩陣  A-------------");
      print(A);//  列印A矩陣
      System.out.println("\n矩陣  B-------------");
      print(B);
      System.out.println("\n矩陣  A*B-------------");
      print(C);

   }
}

送禮物贊助創作者 !
0
留言

創作回應

新手方
矩陣在三維電腦圖學中可以說是萬物之源,像是物件的資料(位置,旋轉,縮放)就由4X4矩陣儲存,在工程數學中,可以用矩陣求出微分方程(就是把幾元幾次方程式換成幾元幾次微分方程式)
2016-06-02 23:38:44
新手方
就我理解,線性代數會大量使用
2016-06-02 23:39:23
深海異音
我是有看一些文章跟書有提到矩陣的很多應用,可惜我數學沒學的那麼深,完全看不懂在說什麼哈哈
2016-06-02 23:41:23
新手方
有些時候真的不用會也沒關係。像我學過三維物件的光渲染公式後等到工數學到哪些符號時才知道他再寫什麼,但現在的軟體很強大的,不會也沒差
2016-06-02 23:49:07
Author
我現在在做這題,查到這篇XD
2020-03-23 00:55:57
川普的ㄐㄐ
各位問個Java問題

sun.security.pkcs does not exist
怎麼解決
網路上都只找到Windows 64bit 不支援
但我就是想用
有甚麼解決方法
2021-06-02 01:25:13
深海異音
https://truth.bahamut.com.tw/s01/201911/4e3eb1c83a9c6204fd1cdcff2206e831.JPG
2021-06-02 02:55:21

更多創作