bcjohn's blog
武漢天門尋根之旅
發布於: 2026-03-15 更新於: 2026-03-15 分類於: Life

  以前爺爺就常跟我說想要回去故鄉老家看看,記得他說小時候過著有一餐沒一餐的生活,從小就要在燒餅店之類的地方幫忙賣東西賺錢,每當爺爺說到這件事的時候,我就會建議他可以回去看看,但他總是說回去大陸的話軍人的退休金就會被政府收回去,之後只能都喝西北風了。或許是很久之前的法律規定吧,我想現在這時代不可能只是因為回去大陸旅遊就把退休金沒收,即便如此爺爺年紀也大了,他認為的事情是無法說服他的,而且隨著爺爺失智症後面變的更加嚴重,跟他講過的事情他大概十秒後又會再問一次同樣的問題,這樣的狀況也不可能帶爺爺回去。

  在爺爺去年中風躺在病床時,就有在他旁邊跟他說之後打算代他回老家看看了,爺爺總是說八、九十年過去了,從小照顧他的叔公等這些認識的人八成也都早已不在了,而他父親也在他小的時候就跑得不知所向,即使回去也不可能有認識的人了。

  趁著過年前的空檔,出發的兩週前才突發奇想的去辦台胞證,還好很快的一週後就拿到了,接著上網訂購中國東方航空的機票剛好只剩一個空位,出發!

閱讀更多
go-linebot 開發心得
發布於: 2026-01-28 更新於: 2026-01-30 分類於: Life

故事

最近花了半個月的時間開發了 go-linebot,是一款能夠在 line 上面進行圍棋對弈,以及串接 KataGo 進行 AI 對弈和 AI 覆盤的服務

閱讀更多
共變異數矩陣
發布於: 2025-12-10 更新於: 2025-12-10 分類於: 線性代數

前言

我們在看資料時,常常不只想知道「一個東西變化大不大」,還會好奇「兩個東西是不是一起變」。例如:天氣變熱時,飲料銷量會不會跟著上升? 讀書時間增加,成績會不會也變好? 這些「一起變」的現象,就是 共變異數 (Covariance) 想描述的內容

最基本的概念是 變異數 (Variance),它告訴我們某個數據本身的波動有多大;但只看單一變數就像只看一個角色,很難了解整個故事。當我們把兩個變數放在一起,就可以用共變異數判斷它們是同方向動(一起變大或變小)、還是相互拉扯(一个變大、一个變小),或是根本沒什麼關聯

而當資料裡的變數不只兩個,而是三個、十個、甚至上百個時,我們就需要把所有變數之間的「一起變動關係」整理成一張表,那就是 共變異數矩陣 (Covariance Matrix)。這張矩陣像是一個地圖,描繪出每個變數之間的連動方式,幫助我們看出資料的真正結構。許多強大的資料分析方法(像 PCA)都是以它為核心,從中找出資料最重要的變化方向

閱讀更多
奇異值分解 SVD (2) - 實際應用
發布於: 2025-12-07 更新於: 2025-12-07 分類於: 線性代數
此為 奇異值分解 SVD 系列文章 - 第 2 篇:
  1. 奇異值分解 SVD (1) - 定義與性質
  2. 奇異值分解 SVD (2) - 實際應用

前言

在上一篇文章中,我們詳細介紹了奇異值分解 (SVD) 的定義、性質和計算方法

本文將介紹 SVD 的兩個實際應用:

  1. 圖像壓縮:利用 SVD 的低秩近似特性,大幅減少圖像存儲空間
  2. 極分解:從 SVD 推導極分解,理解線性變換的幾何意義
閱讀更多
奇異值分解 SVD (1) - 定義與性質
發布於: 2025-12-07 更新於: 2025-12-07 分類於: 線性代數
此為 奇異值分解 SVD 系列文章 - 第 1 篇:
  1. 奇異值分解 SVD (1) - 定義與性質
  2. 奇異值分解 SVD (2) - 實際應用

前言

在前面的文章中,我們學習了多種矩陣分解方法,如 特徵值分解矩陣對角化對稱矩陣的譜分解正定矩陣的 Cholesky 分解 等。然而,這些分解方法都有一個共同的限制:只能作用在方陣上。對於非方陣(如 $m \times n$ 矩陣,其中 $m \neq n$),這些方法都無法直接應用

相較之下,奇異值分解 (Singular Value Decomposition, SVD) 適用於 任意矩陣(包括非方陣),這使得它成為線性代數中最普遍、最實用的分解方法。無論是瘦高矩陣($m > n$)、矮胖矩陣($m < n$),還是方陣($m = n$),SVD 都能提供一個優雅的分解形式

下面我們來學習 SVD 的定義、性質、計算方法以及其代表的幾何意義

定義

對於任意 $m \times n$ 矩陣 $A$,存在分解:

$$A = Q_1\Sigma Q_2^T$$

其中:

  • $Q_1$:$m \times m$ 正交矩陣
  • $\Sigma$:$m \times n$ 對角矩陣(對角線元素稱為奇異值
  • $Q_2$:$n \times n$ 正交矩陣
閱讀更多
正定矩陣與半正定矩陣 (3) - Cholesky 分解
發布於: 2025-11-16 更新於: 2025-11-16 分類於: 線性代數
此為 正定矩陣與半正定矩陣 系列文章 - 第 3 篇:
  1. 正定矩陣與半正定矩陣 (1) - 定義與性質
  2. 正定矩陣與半正定矩陣 (2) - 橢球體的形狀
  3. 正定矩陣與半正定矩陣 (3) - Cholesky 分解

前言

Cholesky 分解是線性代數中的矩陣分解方法,專門用於正定矩陣,它將一個正定矩陣分解為下三角矩陣與其轉置的乘積

定義

對於一個 $n \times n$ 的正定矩陣 $A$,存在唯一的下三角矩陣 $L$,使得:

$$A = LL^T$$

其中:

  • $L$ 是下三角矩陣(對角線以下元素為零)
  • $L^T$ 是 $L$ 的轉置矩陣
  • $L$ 的對角線元素都是正數
閱讀更多
正定矩陣與半正定矩陣 (2) - 橢球體的形狀
發布於: 2025-11-12 更新於: 2025-11-16 分類於: 線性代數
此為 正定矩陣與半正定矩陣 系列文章 - 第 2 篇:
  1. 正定矩陣與半正定矩陣 (1) - 定義與性質
  2. 正定矩陣與半正定矩陣 (2) - 橢球體的形狀
  3. 正定矩陣與半正定矩陣 (3) - Cholesky 分解

前言

在上一篇文章中,我們討論了正定矩陣的定義和性質。這次我們要探討正定矩陣在幾何上的意義:它們如何描述 橢球體(ellipsoid) 的形狀,透過二次型 $\mathbf{x}^T \mathbf{A} \mathbf{x} = 1$,我們可以將線性代數與橢球體的幾何圖形連結起來

橢球體的數學表示

對於一個 $n \times n$ 的正定對稱矩陣 $\mathbf{A}$,方程式

$$
\mathbf{x}^T \mathbf{A} \mathbf{x} = 1
$$

定義了一個在 $n$ 維空間中的橢球體(或在二維空間中的橢圓)

這個簡單的方程式蘊含了豐富的幾何資訊,包括:

  • 橢球體的形狀和大小
  • 各個主軸的方向
  • 各個主軸的長度

下面我們用各種例子來探討二次型 $\mathbf{x}^T \mathbf{A} \mathbf{x} = 1$ 是如何代表橢球體的幾何圖形

閱讀更多
正定矩陣與半正定矩陣 (1) - 定義與性質
發布於: 2025-11-03 更新於: 2025-12-07 分類於: 線性代數
此為 正定矩陣與半正定矩陣 系列文章 - 第 1 篇:
  1. 正定矩陣與半正定矩陣 (1) - 定義與性質
  2. 正定矩陣與半正定矩陣 (2) - 橢球體的形狀
  3. 正定矩陣與半正定矩陣 (3) - Cholesky 分解

前言

我們知道數字可以分為正數、負數和零。對於矩陣來說是否也有類似「正負性」的概念呢?

正定矩陣(Positive definite matrix)半正定矩陣(Positive semi-definite matrix) 就是用來描述矩陣「正負性」的重要概念。簡單來說:

  • 正定矩陣:就像「恆正的矩陣」,對應的二次函數圖形是碗狀的(有最小值)
  • 半正定矩陣:就像「非負的矩陣」,對應的二次函數圖形可能是碗狀的,也可能是平的

下面將從二次型的角度出發,深入探討這兩個概念的定義、等價條件,以及如何判斷一個矩陣是否為正定或半正定矩陣

二次型(Quadratic Form)

定義

對於 $n \times n$ 實對稱矩陣 $A$ 和 $n$ 維向量 $\mathbf{x}$,表達式:

$$Q(\mathbf{x}) = \mathbf{x}^T A \mathbf{x}$$

稱為矩陣 $A$ 的二次型

閱讀更多
LU 分解
發布於: 2025-10-20 更新於: 2025-11-03 分類於: 線性代數

LU 分解的定義

對於一個 $n \times n$ 的方陣 $A$,如果存在下三角矩陣 $L$ 和上三角矩陣 $U$,使得:

$$A = LU$$

其中:

  • $L$ 是下三角矩陣,對角線元素為 1
  • $U$ 是上三角矩陣

這就是 LU 分解

閱讀更多
子式 - minor
發布於: 2025-10-19 更新於: 2025-11-03 分類於: 線性代數

子式

對於一個 $n \times n$ 的矩陣 $A$,我們可以通過取出 $A$ 的某些行與列來得到較小的子矩陣,這些子矩陣的行列式就稱為子式(Minor)

$$M_{I,J}(A) = \det(A_{I,J})$$

其中 $I, J$ 代表從列與行中的元素取出來的 索引集合

  • 列的集合: $I = \{i_1, i_2, \dots, i_r\}$
  • 行的集合: $J = \{j_1, j_2, \dots, j_c\}$

下面來看實際的例子會比較好理解

閱讀更多