創作內容

4 GP

java_矩陣相乘

作者:深海異音│2014-01-06 15:18:18│贊助:16│人氣:4619

創建一個【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);

   }
}

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2300850
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 6 篇留言

海平面
感覺好厲害喔!!

01-08 20:07

深海異音
沒吧,這只是上課教的東西01-08 20:16
海平面
我都看不懂..

01-08 20:17

深海異音
主要是我在練習java的語法,所以才會看起來比較難懂,
不然實際上老師教的只有用到for迴圈[e8]01-08 20:24
Lyre
ㄋㄇㄉ這什麼複雜的東西XDDDDD

01-09 20:20

深海異音
阿災,我也不太清楚矩陣在做啥用的01-09 20:37
新手方
矩陣在三維電腦圖學中可以說是萬物之源,像是物件的資料(位置,旋轉,縮放)就由4X4矩陣儲存,在工程數學中,可以用矩陣求出微分方程(就是把幾元幾次方程式換成幾元幾次微分方程式)

06-02 23:38

新手方
就我理解,線性代數會大量使用

06-02 23:39

深海異音
我是有看一些文章跟書有提到矩陣的很多應用,可惜我數學沒學的那麼深,完全看不懂在說什麼哈哈
06-02 23:41
新手方
有些時候真的不用會也沒關係。像我學過三維物件的光渲染公式後等到工數學到哪些符號時才知道他再寫什麼,但現在的軟體很強大的,不會也沒差

06-02 23:49

我要留言提醒:您尚未登入,請先登入再留言

4喜歡★hbl917070 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:意義不明的java練習_... 後一篇:楓之谷傳統登入(快速換帳...

追蹤私訊

作品資料夾

tv860619All of you
末日之時更新啦~來看來看~看更多我要大聲說昨天21:39


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】