Gilbert Strang 經典線代課程心得-3

更新 發佈閱讀 24 分鐘

來自MIT的經典線代課程--Gilbert Strang

第三課:矩陣乘法、逆矩陣性質與高斯-喬登消去法(Matrix multiplication、Inverse matrix and Guass-Jordan Elimination)

今天的課程回聚焦在「 剖析矩陣乘法 」與「 逆反矩陣 」這兩個主題上

「 剖析矩陣乘法 」會銜接在上次課程建構「 消元矩陣 」時使用到的技巧,我們利用線性組合的概念將「 乘數 」轉換為「 單列向量 」進行描述

此次課程我們會進一步推廣一般矩陣乘法,當我們面對相同的矩陣運算式,可以發展出五種不同的說明方法

有意思的是,這些運算走著不同的路,可是卻能到達相同終點,這也是數學有趣的地方,儘管是相同的問題,在不同的人眼中,便可能存在著不同的答案,通過多樣的解讀方法,我們便能發現更多隱藏於「 觀點 」中的資訊與性質

開始討論前,依照慣例我們需要先定義「 矩陣 」,假設

  • A 為「 m 乘 n 的矩陣」,記做「 A m×n
  • B 為「 n 乘 p 的矩陣」,記做「 B n×p

並定義 C 為

C = A m×n × B n×p

此時, C 是也僅是一個「 m 乘 p 的矩陣」,記做「 C n×p

如此定義矩陣乘法的規則被稱為「一般性原則 ( Standard rule ) 」,簡單來說可以分為以下三點

  1. 兩個矩陣相乘,左側矩陣 ( A ) 的行數需等於右側矩陣 ( B )的列數
  2. 乘積矩陣 C 的列數是由 A 的列數「 m 」決定
  3. 乘積矩陣 C 的行數是由 B 的行數「 p 」決定

我們後續都會使用這三個矩陣進行說明,不過這次上課純代數推導的部分比較多,我其實比較建議看影片來學

為了方便討論,這邊先將這幾種視角定義名稱依便於參照 ( 教授沒說這些方式的名稱,所以下方非正式名稱,請留意 )

「 矩陣乘法的五種視角 ( Five Ways to Look at A×B ) 」

  1. 內積和 ( Inner / Dot Product )
  2. 行線性組合 ( Linear combinations of Column )
  3. 列線性組合 ( Linear combinations of Row )
  4. 外積和 / 張量積 ( Outer product )
  5. 分塊矩陣乘法 ( Block Matrix Multiplication )


  1. 內積和

從最基礎的求乘積矩陣定義來說明矩陣乘法,也是大部分的學生第一個學習到的矩陣運算之一,通過「 目標元 」所在的位置,利用內積進行計算,以實際元「 c34 」舉例,根據矩陣乘法定義應為

c34 = Row3(A)‧Column4(B)= ( a31 ) ( b14 ) + ( a32 ) ( b24 ) + ... + ( a3m ) ( bm4 )

以求和符號 ( Sigma ) 書寫的話

raw-image

用這個方式可以寫出 C 的所有元,但有點累人


  1. 行線性組合 ( Linear combinations of Column )

將 C = A B 以此概念拆解,我們能注意到此時的 Column(B) 被視為線性組合中的向量, A 則是對應指令乘數,依序建構出 C 中的所有行向量

raw-image


  1. 列線性組合 ( Linear combinations of Row )

同樣將 C = A B 以此概念拆解,我們能注意到此時的 row(A) 被視為線性組合中的向量, B 則是對應指令乘數,依序建構出 C 中的所有列向量

raw-image


  1. 外積和 / 張量積 ( Outer product )

難道我們進行矩陣乘法時只能執行「 列乘行 」嗎?有沒有可能使用「 行乘列 」呢?

答案是「 有的 」,這個運算規則便是「外積和」,「外積和」推翻了我們熟悉的「 列乘行 」這個對乘積矩陣單一元的定義,改以使用「 行乘列 」配合矩陣加法計算,具體操作如下

將 A 的行向量 ( ColumnA ) 與 B 的列向量 ( RowB ) 逐一列出並按照下式進行相乘,並將此乘積定義為 Ci ( 如下 )

[ Column i ( A )m×1 ] × [ Row i ( B )1×p ] = [ Ci ]m×p

可以注意到的是,經矩陣乘法的一般性原則可知,每個乘積矩陣 [ Ci ] 的大小會與 C 相同,且有意思的是

C = C1 + C2 + ... + Cn

將過程完整列出就像下圖一樣

raw-image

為何我們需要「外積和」呢?

因為這樣的運算方式能夠更好的幫助我們了解參與運算的矩陣向量是如何影響最終結果的,通過此方式拆解的矩陣可以更好的協助我們進行分析或是控制變量

不僅如此, [ Ci ] 會是一個行列向量皆為線性依賴 ( Linear dependant ) 的「 秩一矩陣 ( Rank 1 metrix ) 」,以上專有名詞是後面的課程內容,看不懂是正常的,而「外積和」的運算應用也不會那麼快的出現,先將此名詞提出是希望你能先留意這個特殊的例子

導出這個矩陣是很有意思的,後期的課程中,我們會嘗試將矩陣視為一個向量,並討論其空間性質,而「外積和」會是一個好例子,希望你看到後面時能夠想起來


  1. 分塊矩陣乘法 ( Block Matrix Multiplication )

這是五種乘法規則中最反直覺的一個,如果看完表示無法理解也無關緊要,我們不會太快使用到這種手法,就當增廣見聞,順便思考成立的原因是什麼,可以怎麼樣去解釋他

這個規則有趣的地方在於「 分割矩陣 」,將參與運算的矩陣裁切為「 等大的小矩陣 」,也可以將其稱之為「 塊 ( Block ) 」,「 分塊矩陣乘法 」便是將這些「 塊 」視為矩陣中的「 元 」進行內積和 ( 法一 )以求得目標乘積

讓我們來看看實際案例,將 A 、 B 、 C 裁切為等大的「塊」,並定義為

A = [ A_1 , A_2;A_3 , A_4 ] ;B = [ B_1 , B_2;B_3 , B_4 ] ;C = [ C_1 , C_2;C_3 , C_4 ]

A = [ A_1 , A_2;A_3 , A_4 ] ;B = [ B_1 , B_2;B_3 , B_4 ] ;C = [ C_1 , C_2;C_3 , C_4 ]

此時

C1 = A1 B1 + A2 B3
C2 = A1 B2 + A2 B4
C3 = A3 B1 + A4 B3
C4 = A3 B2 + A4 B4

這種思想方式同第四點,都是將矩陣視為向量組進行矩陣運算,其中的規則挺值得思考

  • 有沒有辦法利用向量的概念進行說明以解析此運算規則?
  • 「 塊 」的裁切割需要具備那些條件?
  • 使用這種方式進行計算的優點是什麼?

不過我們不會花太多時間討論這些性質,那有些太過深入了,而且答案不全然在文章中,是屬於「 課外內容 」,希望你能留下你的答案與我或是其他讀者討論

至此,矩陣乘法的說明便到此告一段落ㄌ,我們要進入下一個主題「 逆反矩陣 」

===================================================================

如果有看完上一篇文章,應該會知道「 逆反矩陣 ( Inverse matrix )」在矩陣運算中代表著「 撤回、退回、取消 」等等的「 重製指令 」,接下來會將「 如何生成」做為內容主軸進行說明

首先我們需要了解那些矩陣可以被稱為「 逆反矩陣 」,通過給定一個矩陣 A i×j 進行說明

  • 若矩陣 B 使得 B A = Ij, B 被稱為 A 的「 左逆反矩陣 ( Left inverse of A , AL-1 )」
  • 若矩陣 C 使得 A C = Ii, C 被稱為 A 的「 右逆反矩陣 ( Right inverse of A , AR-1 )」
  • 若矩陣 D 使得 A D = D A = I, D 被稱為 A 的「 逆反矩陣 ( Inverse of A , A-1 )」

「 左 / 右逆反矩陣 」之所以要分開命名,是因為對 A 而言,理論上

「右逆反矩陣」不恆等於「左逆反矩陣」

更正確地說

如果 A 不是一個方陣,則「右逆反矩陣」不可能等於「左逆反矩陣」

但是我們可以看一個有趣的例子,假設 A i×j 存在左右逆反矩陣,則

( AL-1 ) A = Ij

A ( AR-1 ) = Ii

在 i ≠ j 的前提下

( AL-1 ) A = Ij

→ ( AL-1 ) A ( AR-1 ) = Ij ( AR-1 )

→ ( AL-1 ) Ii = ( AR-1 )

→ ( AL-1 ) = ( AR-1 )

這就有意思了,我們得出了一個理論上有誤的結論,但是就邏輯上是暢通的,原因只有一個我要推翻數學界了哈哈哈

嗯咳!真實的原因是「 A i×j 存在左右逆反矩陣 」這個假設從一開始就存在著謬誤,一個非方陣不可能同時存在「 左 / 右逆反矩陣 」,這是一個相當重要的特性,可是問題錯在哪呢?不要忘記

「 逆反矩陣 」在矩陣運算中代表著「 重製指令 」

重新看過剛剛給出的條件

T = ( AL-1 ) = ( AR-1 )

在 i ≠ j 的前提下

​T A = Ij

A T = Ii

如果我們將「 A 」視為「 向東走 」,「 T 」視為「 向西走 」,此時卻因為指令順序對調

T A = 向西走再向東走= Ij

A T = 向東走再向西走= Ii

明明做了「 可以相抵的動作 」卻得到不同的結果 ( Ij ≠ Ii ) ,這就很玄了

既然發現了原因,那我們應該如何進行證明呢?抱歉,我們還沒學到咿嘻嘻

這與「 線性相依 / 獨立 」有關,那是第五課的課程內容,所以我只好先用一個相對不嚴謹的方式說明,希望你能先記住這件事情

好的,既然我們有了共識

故若 A 不是方陣,則不可能存在「 逆反矩陣 」

下一步要討論的便是

「如果 A 是方陣,則其必然存在「 逆反矩陣 」嗎?」

給各位讀者一個小知識,數學上提到的「 必然 」大多不是顯而易見,不然就是條件限縮得相當厲害的特例,而這個問題的答案是否定的,因為僅有方陣不足以支撐「 存在逆反矩陣 」這一個命題,需要滿足另外一個條件,那就是

「 A 需要是「 滿秩矩陣 ( Full rank metrix ) 」 」

「 滿秩 」在後面的課程才會有比較深入的說明與探討,不過我們能通過一些比較好理解的定義了解「 滿秩 」,那便是「 線性相依( Linear depandant ) 」「 線性獨立( Linear indepandant ) 」,「 線性相依 / 獨立 」是一種描述向量內部關係的專有名詞,其定義如下

給定一組向量構成的集合 V

V = { v1 , v2 , ... , vn }

若存在一組不全為零的數「 ci 」使得

c1 v1 + c2 v2 + ...+ cn vn 0

則稱集合 V 具有「 線性相依 」的性質

反之,當不存在任意一組不全為零的數「 ci 」使得

c1 v1 + c2 v2 + ...+ cn vn 0

則稱集合 V 具有「 線性獨立 」的性質

換句話說,當向量集合存在一個可以被同一集合的其他元素線性組合得出的元素,則該集合「 線性相依 」,反之,當集合內部的任意一個元素都不能被同一集合的其他元素線性組合得出,則該集合「 線性獨立 」

如果還是不懂,這個例子應該可以讓讀者明白,你有兩袋可隨意拼裝的積木,A 袋中的積木可以分為兩類,一類為積木 P,另一類為可以被 P 組裝製成的其他積木 P'。 B 袋中的積木都是獨一無二且不可替代的,我們無法由通過選擇 B 袋積木拼裝出 B 袋的其他積木

現在我們要用 A 、 B 袋內的積木完成目標,如果使用 A 袋的積木,則組合方式是極度多樣化的,我們可以選全都用 P 一步一步完成目標,也可以在過程中適當的使用 P' 來加快速度。如果使用 B 袋的積木,則組合方式必然是單一的,選用的積木都是不可替代且缺一不可的,只能按照說明書準備好積木進行拼裝。

若將「 A / B 袋 」視為集合,積木視為向量,則「 A 袋 」具有「 線性相依 」的性質,而「 B 袋 」具有「 線性獨立 」的性質

回到定義,當我們將方陣 A 利用消元法寫成 REF 後,會出現兩種可能

  1. 出現「 零列向量 」,則方陣 A 的列向量具有「 線性相依 」的性質, A 被稱為
  • 奇異矩陣 ( Singular matrix )
  • 不可逆矩陣 ( Non-invertible matrix )
  • 退化矩陣 ( Degenerate matrix )
  • 非滿秩矩陣 ( Rank deficient matrix )
  1. 沒有出現「 零列向量 」,則方陣 A 的列向量具有「 線性獨立 」的性質, A 被稱為
  • 非奇異矩陣 ( Non-singular matrix)
  • 可逆矩陣 ( Invertible matrix )
  • 非退化矩陣 ( Non-degenerate matrix )
  • 滿秩矩陣 ( Full rank matrix )
  • 正則矩陣 ( Regular matrix )

為何有那麼多名稱?只能說「 方陣 」與「 可逆性 」的組合可以延伸到相當多的矩陣性質討論,相當強力,現在我們明白了 A 要擁有一個對應的「 逆反方陣 」需要具備兩個條件

A 是「 方陣 」且「 滿秩 」

為什麼要是「 方陣 」文章前方說明過了,可是為何需要滿足「 滿秩 」條件呢?

請讀者以「 逆反矩陣的本質 」為引,思考「 滿秩 」成立與否給我們的限制

學數學時永遠不要吝嗇於追問到底,很多概念性問題只有自己思考過後才能明白其意義,無論你是否有想出一些東西,思考都是必要的!準備好你的答案再繼續看下去吧

沒想出來也別氣餒,問第一次看的我大概也想不出來哈哈,如果你有能力從這想出些什麼,代表讀者對我們過去課程中提到的內容有著足夠深的理解,這是一個非常好的「 訊號 」,在此,我也希望你能將想到的內容打在回覆欄內以利於後來者一同討論

好了,回歸正題,還記得我們怎麼定義「 逆反矩陣」嗎?找到一個矩陣使其滿足

A A-1 = A-1 A = I

換句話說,套用上一節課的內容,我們需要找到一個適當的線性組合乘數建構指令,使其進行「 行 / 列向量的線性組合 」,現在我們的目標已經給定了,就是由一個一跟多個零構成的「 行 / 列向量 」,但若其中有一個「 行 / 列向量 」消元後變成了「 零向量 」,那不就不可能找到一個適當的指令建構出單位矩陣矩陣了嗎!

「 湊不出來 」便是這個問題的答案,如果 REF 這種型態不夠直觀,後期我們學到的 RREF 型態能夠更直觀的了解到為何會「 湊不出來 」

===================================================================

現在我們對於「 逆反矩陣 」的認識已經足夠多了,但是別忘了,我們學了這麼多東西是為了處理「 U 怎麼變回 A 」

E-1 U → A

換句話說,我們好奇的是「 E-1 」具有什麼令人念念不忘特質

你以為準備工作完成了嗎?我只能說你還是太年輕了

數學老師最喜歡的就是「 問問題 」,除了可以刁難學生外,也可以使用問題引導讀者思考 ( 這是主要目的,相信我 )

請問:

「 如果存在一個非零向量 X 使得方陣 A 滿足 A X = 0 ,則 A 是否存在逆反矩陣?」

這是一個關於線性方程組解的一個重要引題,沒有頭緒的可以把上面的內容再看一遍,我把答案埋藏在說明「 線性獨立 」的文章內容中了

回到問題本身,這個問題的答案是「 否定的 」,在討論為什麼之前,或許我們能先從「 下一個問題 」進行思考

「 如果我們能找到一個非零向量 X,是否存在無窮多個非零向量 Xi 滿足該方程式? 」

這個問題本身是一個「 引子 」,一個讓我們能夠更好的了解「 線性獨立性 」與「 可逆矩陣 」之間的「 引子 」,如果讀者此時沒有想法,如果沒有,可以試著參考下方這個向量加法的例子,已知

( 1 , 0 ) + ( -1 , 0 ) = 0

( t , 0 ) + ( -t , 0 ) = t ( ( 1 , 0 ) + ( -1 , 0 ) ) = 0 , t ∈ R

這個例子說明了什麼呢?這個例子其實就是答案之一

從「 線性組合 」的視角切入 「 矩陣乘法 」 ,則 X 扮演的角色為「 行向量的構成指南 」,X 中的每個分量都是在告訴我們

「 最終的向量組合中,第幾行需要乘上多少倍進行向量加法運算 」

一旦我們找出對應的組合 X 使得「 行向量運算 = 0 」時,則我們便能找出無窮無盡的

XiX × i​

以滿足

A ( X × i ​) = A ( Xi ​) = 0

所以一但我們能找出一個「 行向量的構成指南 ( X ​) 」,則這個「 行向量的構成指南 」便能有「 無窮多組 ( Xi ​) 」表示的方法

如果讀者到這邊還是有些模糊不懂為何,請你先停下來重新審視,別想著順順的帶過去,在學習時打迷糊仗可是大忌!

這並不是一個看過一遍就能輕鬆了解的東西,請重新再看看前面的課程中,教授是如何使用例子不斷強調

「 將矩陣運算視為對「 行 / 列向量 」的線性組合」

緩下來,想想你是怎麼理解這些內容的,用自己明白的方式寫一遍,試著找到哪個地方卡住了 ( 我自己看了兩三次才算很順的看過去哈哈 )

繼解決「 引子 」後,我們得出了以下結論

「 找到一個非零向量 X 滿足 A Xi = 0,便能有無窮多個 Xi 方陣 A 滿足 A Xi = 0 」

但這與問題本身的關係是什麼呢?

答案是「 這段敘述本身便是一種證明方式 」,讓我來回答你,首先我們假定此命題為真

「 若存在一個非零向量 X 使得方陣 A 滿足 A X = 0 ,則 A 存在逆反矩陣 」

根據給定的假設,存在「 A-1 」使得

A-1 × A = I

將方程式「 A X = 0 」左右同乘「 A-1 」使得

LHS:A-1 × A X =​ I X X
RHS:A-1 × 0 = 0

所以

X = 0 (→←)

得出一個矛盾的結論後,我們便能利用此例說明

「 若存在一個非零向量 X 使得方陣 A 滿足 A X = 0 ,則 A 不可能存在逆反矩陣 」

===================================================================

看到這邊,關於「 逆反矩陣 」的理論性質算是告一段落了,現在來想如何將這些概念應用到問題上,假設「 可逆矩陣 」A 滿足

A = [ 1 , 3;2 , 7]

A = [ 1 , 3;2 , 7]

我們嘗試用線性組合湊出 A 的逆反矩陣,先設「 逆反矩陣 」為

A^(-1)  = [ a , c;b , d]

A^(-1) = [ a , c;b , d]

則我們需要找出滿足下列方程式的組合

a [ 1 , 3 ] + c [ 2 , 7 ] = [ 1;0 ] ; b [ 1 , 3 ] + d [ 2 , 7 ] = [ 0;1 ]

a [ 1 , 3 ] + c [ 2 , 7 ] = [ 1;0 ] ; b [ 1 , 3 ] + d [ 2 , 7 ] = [ 0;1 ]

得出

( a , b , c , d ) = ( 7 , -2 , -3 , 1 )

乍看之下不困難,仔細一看很簡單,答案自然而然地就出來了,那這個方法好用嗎?

不,但不全然不

提醒各位,在這個範例中,我們處理的僅僅是結構最簡單的由整數構成的二階方陣,因此我們可以沿著「 解線性方程組 」的概念,進一步使用更有效率的做法,還記得我們上一堂學到的「 高斯消元法 」的功能是什麼嗎?如果讀者忘了我這邊提示一下

「 解線性方程組 」

可是「 高斯消元法 」只能處理單個「 向量 b 」,也就是

A X =​ b

那我們能怎麼辦?沒錯,結合矩陣乘法中的「 列線性組合 」將「 高斯消元法 」中的「 向量 b 」升級成「 矩陣 B 」,讀者也可以簡單直接地理解為「 高斯消元法 PRO」,其專有名稱為

「 高斯-喬丹消元法 ( Gauss-Jordan elimination ) 」

這個方法可以用來一次處理由「 ColumnA 」構成的各式各樣的「 Matrix B 」,而不僅限於「 向量 b 」

所謂的「 高斯-喬丹消元法 」與「 高斯消元法 」在結構上並無差別,同樣可以利用「 增廣矩陣 」表示問題

aug ( A | I ) = [ A | I ]

經過消元運算可以得知

[ A | I ] → [ I | A-1 ]

咦?過程呢?運算呢?這東西怎麼得出來得?啥?

如果你有了以上反應,建議再重看一次上一課我們是如何以矩陣運算表示消元,以及如何使用「 增廣矩陣 」處理消元運算的

在「 高斯-喬丹消元法 」中,所謂的「 逆反矩陣 」實際上就是對「 單位矩陣 I 」的線性組合乘數 ( a , b , c , d )

而我們執行「 高斯消元法 」時使用消元矩陣的目標是 U ,而「 高斯-喬丹消元法 」進一步將目標訂定為 I 而已,如果看到這裡還是有些無法理解,下方的例子應該可以很好的幫助你了解

首先對 aug ( A | I ) 進行向下消元,乘上

E_21  = [ 1 , 0;-2 , 1 ]

E_21 = [ 1 , 0;-2 , 1 ]

[ 1 , 0;-2 , 1 ][ 1 , 3;2 , 7 | 1 , 0;0 , 1 ] → [ 1 , 3;0 , 1 | 1 , 0;-2 , 1 ]

[ 1 , 0;-2 , 1 ][ 1 , 3;2 , 7 | 1 , 0;0 , 1 ] → [ 1 , 3;0 , 1 | 1 , 0;-2 , 1 ]

再進行向上消元,乘上 E12 = [ 1 , -3;0 , 1 ]得

[ 1 , -3;0 , 1 ][ 1 , 3;0 , 1 | 1 , 0;-2 , 1 ]→ [ 1 , 0;0 , 1 | 7 , -3;-2 , 1 ]

[ 1 , -3;0 , 1 ][ 1 , 3;0 , 1 | 1 , 0;-2 , 1 ]→ [ 1 , 0;0 , 1 | 7 , -3;-2 , 1 ]

此時得到的

A^(-1) = [ 7 , -3;-2 , 1 ]

A^(-1) = [ 7 , -3;-2 , 1 ]

看吧!與最初使用的「 解線性方程組 」得出相同的解,而「 高斯-喬丹消元法 」只是沒有將運算過程一一列出罷了,將「 高斯-喬丹消元法 」攤開來看,便能更清晰的了解到「 逆反矩陣 」的誕生

  AB = I
→ E21AB = E21
→ E12E21AB = E12E21
→ I B = E12E21
→ B =A-1 = E12E21

從上方的式子可以知道,「 逆反矩陣 」也是「 初等矩陣 」的一分子,我們如何理解 / 使用「 初等矩陣 」,就能怎麼理解 / 使用「 逆反矩陣 」

好了,相信又是收穫滿滿的一課,關於「 逆反矩陣 」的課程內容可以告一段落的 ( 拍手 )

上節課尾段的問題「 U 怎麼變回 A 」可以使用「 逆反矩陣 」解決,我們好像還是不知道為什麼我要這麼麻煩的求出「 逆反矩陣 」,也就是說,這次的課程只提到了「 怎麼做 」,沒提到「 為什麼 」

那是因為再加入「 為什麼 」,這篇文章就要突破兩萬字了,給我跟自己一些消化的時間吧嗚嗚嗚

總之,下一次的課程主軸便是「 為什麼要把 U 變回 A 」,關鍵字為 L U 分解,感謝你的閱讀,期待下一次碰面,88

留言
avatar-img
Lux in Tenebris 闇夜微光
0會員
9內容數
Lux in Tenebris,來自拉丁文,意為「 黑暗中的光 」。 如果說人生的學習旅程是一片深沉的海洋 那我們都是那葉在暗夜中摸索方向的扁舟。 無論是過去,還是現在,無論是你,抑或是我 此處不會有太陽般耀眼、炫目、張狂的明亮 僅有夜深人靜時,孤懸於空伴你行的「 闇夜微光」。 以專業提煉知識,只願能夠柔和地指引困惑。
你可能也想看
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
高中數學主題練習—三角函數疊合
Thumbnail
高中數學主題練習—三角函數疊合
Thumbnail
高中數學主題練習—三角函數疊合
Thumbnail
高中數學主題練習—三角函數疊合
Thumbnail
中學數學基礎練習—十字交乘法
Thumbnail
中學數學基礎練習—十字交乘法
Thumbnail
中學數學基礎練習—十字交乘法
Thumbnail
中學數學基礎練習—十字交乘法
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 九 為能清晰說明,我們給範疇次序標號 (即置頂的 1-5),使整個推導過程看似一個矩陣﹕ 1.4.1_5.3 艾杜凱維茨的推導矩陣 第 2 行的 gr:1 (C1, C2) 是說 gr 用於第 1 行的 C
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 九 為能清晰說明,我們給範疇次序標號 (即置頂的 1-5),使整個推導過程看似一個矩陣﹕ 1.4.1_5.3 艾杜凱維茨的推導矩陣 第 2 行的 gr:1 (C1, C2) 是說 gr 用於第 1 行的 C
Thumbnail
這篇文章,會帶著大家複習以前學過的數列DP框架, 並且以費式數列、爬樓梯、骨牌拚接的應用與遞迴數列概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 數列DP與遞迴數列常見的形式 如果是遞迴數列,常常看到以函數型式表達
Thumbnail
這篇文章,會帶著大家複習以前學過的數列DP框架, 並且以費式數列、爬樓梯、骨牌拚接的應用與遞迴數列概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 數列DP與遞迴數列常見的形式 如果是遞迴數列,常常看到以函數型式表達
Thumbnail
這篇文章,會帶著大家複習以前學過的配對模型與Stack框架, 並且以括弧配對的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 首先,Stack本身具有Last-In First-Out 後進先出的特質。 再根據題目所需要的資訊利用Stack去儲存索引
Thumbnail
這篇文章,會帶著大家複習以前學過的配對模型與Stack框架, 並且以括弧配對的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 首先,Stack本身具有Last-In First-Out 後進先出的特質。 再根據題目所需要的資訊利用Stack去儲存索引
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News