2012年5月26日 星期六

以試算表(Spreadsheet)求解多元一次方程式組及反矩陣

http://4rdp.blogspot.com/2012/05/spreadsheet.html

在電腦的應用軟體中,除了文書處理軟體廣受歡迎外,試算表是另一個改變世界的程式,早先的 LOUTS 1-2-3 在二十五年前就是非常出名的試算表程式,它讓一般人無需設計程式,在空格填寫文字、數字等資料或是計算公式,就可以處理簡單資料庫、帳目計算或試算估計,也能夠繪圖統計分析,完全看使用者的創意與功力發揮,約 1988 年後微軟才以 Excel 擊敗它,現在網路上Google也提供線上試算表,影響更是無遠弗屆。

以個人工作經驗,需要求解到四元一次方程式組的問題還
未見過,因此在此提供常見的二元一次、三元一次方程式組試算表求解計算,會遇見要計算更高次元難題的人,必定是該應用領域的高手,數學造詣自然不遑多讓,通常會有像 Matlab 專業軟體幫忙處理。

另外,本文計算矩陣同時,試算表也以高斯消去法求解反矩陣。

8 則留言:

  1. Excel工具,以前自己以為懂了不少,但後來進階學習,才發現有很多功能項目,在真正接觸使用,才深覺自己的膚淺。

    回覆刪除
  2. 薛老師,

    您客氣了,我也只懂一些皮毛,像是本文多元一次方程式組求解或是反矩陣計算,其實 EXCEL 都有提供函式計算,不過我還是喜歡自己動手算。

    試算表非常方便工程模擬試算,因此研發過程常用它處理複雜的數學計算,來模擬及評估實驗結果。

    回覆刪除
  3. Bridan,
    小弟的部落格內有一篇有關於 GPS 定位的數學問題,其中略有提到解方程式解的方法. 以矩陣來講,另一解法為 LU 分解. 小弟只略提及。
    可參考: http://twbackpackers.blogspot.tw/search/label/%E6%95%B8%E5%AD%B8

    回覆刪除
    回覆
    1. 行天下謝謝你的補充,難得在網路上遇到數學同好,改日再追補 LU 反矩陣解法。

      另外關於 GPS 計算,採取算式兩兩相減這部分沒問題,可是 (1)-(2),(2)-(3),(3)-(1),只能獲得兩個獨立條件,因此需要四顆衛星計算才對,這裡我覺得怪怪的,晚上要睡覺了,明天再好好思考。

      對了,有興趣友站連結嗎?

      刪除
    2. LU分解求解可參考: http://163.13.134.134/NUMERICAL/linear2.pdf
      (1)-(2),(2)-(3),(3)-(1) 可得 3個獨立的方程式。未知數在我文內為 (a,b,c) 所以可以求得 abc 的解. 式(1), (2), (3) 分別來自 3顆衛星。如需要定時才需要 4顆衛星。
      另外,由於女兒病情,及 blog 定位問題, blog 荒廢甚久。如不嫌棄,友站連結當然 OK 囉。

      刪除
    3. 今天仔細思考你的計算,確定用三顆衛星相減消去法是無法計算反矩陣的,依你的公式計算 3x3 矩陣行列式值 = 0。

      刪除
    4. 因小弟 blog 中第一階段採用的的模型是不考慮時間誤差的未知數,所有未知數只有接收器的座標,就是 (a,b,c)。所以至少3個方程式就有機會求解。

      而這三個方程式,必須其係數的行列式不為零才有唯一解。而我上面的矩陣行列式值為 (x2-x1)[(y3-y2)(z1-z3)-(y1-y3)(z3-z2)]-(y2-y1)[(x3-x2)(z1-z3)-(x1-x3)(z3-z2)]+(z2-z1)[(x3-x2)(y1-y3)-(x1-x3)(y3-y3)]。

      只有在兩個條件下其值為零。其一: 3顆衛星中,其中兩顆在空間位置相同。其二:其中兩顆衛星與地球圓心在同一直線上。第二個條件因為衛星是同步衛星,距地心距離相等,可被排除。所以只剩一個條件:3顆衛星,只要在空間的位置不同,其行列式值就不等於0.

      刪除
    5. 我想你會得到錯誤的結論,可能是因為行列式公式寫錯 (錯在最後項目 y3-y3),正確應該為
      (x2-x1)[(y3-y2)(z1-z3)-(y1-y3)(z3-z2)]
      -(y2-y1)[(x3-x2)(z1-z3)-(x1-x3)(z3-z2)]
      +(z2-z1)[(x3-x2)(y1-y3)-(x1-x3)(y3-y2)] ← 問題在此
      把它們展開
      (x2-x1)(y3-y2)(z1-z3)-(x2-x1)(y1-y3)(z3-z2)
      -(y2-y1)(x3-x2)(z1-z3)+(y2-y1)(x1-x3)(z3-z2)
      +(z2-z1)(x3-x2)(y1-y3)-(z2-z1)(x1-x3)(y3-y2)
      重新排列
      (x2-x1)(y3-y2)(z1-z3)-(x2-x1)(y1-y3)(z3-z2)
      -(x3-x2)(y2-y1)(z1-z3)+(x1-x3)(y2-y1)(z3-z2)
      +(x3-x2)(y1-y3)(z2-z1)-(x1-x3)(y3-y2)(z2-z1)
      以 x 排列
      x1[-(y3-y2)(z1-z3)+(y1-y3)(z3-z2)+(y2-y1)(z3-z2)-(y3-y2)(z2-z1)]
      +x2[(y3-y2)(z1-z3)-(y1-y3)(z3-z2)+(y2-y1)(z1-z3)-(y1-y3)(z2-z1)]
      +x3[-(y2-y1)(z1-z3)-(y2-y1)(z3-z2)+(y1-y3)(z2-z1)+(y3-y2)(z2-z1)]
      計算 [] 內數值
      x1{-(y3-y2)[(z1-z3)+(z2-z1)]+[(y1-y3)+(y2-y1)](z3-z2)}
      +x2{[(y3-y2)+(y2-y1)](z1-z3)-(y1-y3)[(z3-z2)+(z2-z1)]}
      +x3{-(y2-y1)[(z1-z3)+(z3-z2)]+[(y1-y3)+(y3-y2)](z2-z1)}
      計算 [] 內數值
      x1{-(y3-y2)(z2-z3)+(y2-y3)(z3-z2)}
      +x2{(y3-y1)(z1-z3)-(y1-y3)(z3-z1)}
      +x3{-(y2-y1)(z1-z2)+(y1-y2)(z2-z1)}
      因此行列式值 = 0,不限定特別條件

      刪除