【數學】矩陣、向量(內含矩陣乘法C++)

目錄

  • 一、前置知識:向量(一列或一行的矩陣)、矩陣
    • 1. 行向量
    • 2. 列向量
    • 3. 向量其余基本概念
    • 4. 矩陣基本概念
    • 5. 關于它們的細節
  • 二、運算
    • 1. 轉置
      • (1)定義
      • (2)性質
    • 2. 矩陣(向量)與矩陣(向量)的加減法
    • 3. 點乘與乘法
      • (1)定義:矩陣點乘
      • (2)定義:向量點乘
      • (3)定義:矩陣(向量)與標量的乘法
      • (4)定義:矩陣(向量)與矩陣(向量)的乘法
      • (5)性質:矩陣(向量)與矩陣(向量)的乘法
      • (6)應用:矩陣快速冪,進行加速
  • 三、拓展
    • 1. 向量表示里的幾何意義
    • 2. 向量加法里的幾何意義
    • 3. 向量求反里的幾何意義
  • 四、結尾


一、前置知識:向量(一列或一行的矩陣)、矩陣

1. 行向量

例如 [ 1 1 4 ] \begin{bmatrix}1&1&4\end{bmatrix} [1?1?4?],這就是一個行向量 [ 1 1 4 ] \begin{bmatrix}1&1&4\end{bmatrix} [1?1?4?]可以理解為一個 1 1 1 3 3 3列矩陣。

行向量: [ a 1 … a n ] \begin{bmatrix}a_1&\dots&a_n\end{bmatrix} [a1???an??] n n n為任意取值。

2. 列向量

例如 [ 5 1 4 ] \begin{bmatrix}5\\1\\4\end{bmatrix} ?514? ?,這就是一個列向量 [ 5 1 4 ] \begin{bmatrix}5\\1\\4\end{bmatrix} ?514? ?可以理解為一個 3 3 3 1 1 1列的矩陣。

列向量: [ a 1 ? a n ] \begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix} ?a1??an?? ? n n n為任意取值。

3. 向量其余基本概念

向量是一個有方向與大小的量,它的起點可以是任意位置

維度:
[ a 1 ] \begin{bmatrix}a_1\end{bmatrix} [a1??],這是一個一維向量,它僅有一個數字。而 [ a 1 ? a n ] \begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix} ?a1??an?? ? [ a 1 … a n ] \begin{bmatrix}a_1&\dots&a_n\end{bmatrix} [a1???an??],它們都是 n n n維的。

長度:
向量的長度也就是它的大小,我們稱它為。而模則為向量起點與終點之間的距離

4. 矩陣基本概念

[ 1 1 4 1 6 1 4 1 5 ] \begin{bmatrix}1&1&4\\1&6&1\\4&1&5\end{bmatrix} ?114?161?415? ?注: 這是一個維度為 3 × 3 3\times3 3×3的矩陣。

一個矩陣的維度表示為 m × n m\times n m×n,即 m m m n n n列的矩陣。

5. 關于它們的細節

向量可以視為一種特殊的矩陣,我們通常用大寫字母表示矩陣;小寫字母表示向量,帶一個小箭頭,例如 v ? \vec{v} v 。例如 v i v_i vi?表示向量 v v v的第 i i i項(即第 i i i個元素,行向量從左往右數,列向量從上往下), a i , j a_{i,j} ai,j? A i , j A_{i,j} Ai,j?表示矩陣 A A A的第 i i i行第 j j j列的元素。

二、運算

下文由于向量可以視為一種特殊的矩陣,且為了方便所以均用大寫字母表示向量或矩陣。

1. 轉置

(1)定義

A T A^T AT表示對 A A A進行轉置,即 A A A的第 i i i行將變成
A T A^T AT的第 i i i列。若 A = [ 1 1 4 5 1 4 ] A=\begin{bmatrix}1&1&4\\5&1&4\end{bmatrix} A=[15?11?44?],則 A T = [ 1 5 1 1 4 4 ] A^T=\begin{bmatrix}1&5\\1&1\\4&4\end{bmatrix} AT= ?114?514? ?

(2)性質

  • ( A T ) T = A (A^T)^T=A (AT)T=A
  • ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT

2. 矩陣(向量)與矩陣(向量)的加減法

我們設 A ± B = C A\pm B=C A±B=C

A ± B A\pm B A±B不是隨便的, A A A B B B要求維度相同。且 C C C維度仍與 A A A B B B相同。
運算方式, C i , j = A i , j ± B i , j C_{i,j}=A_{i,j}\pm B_{i,j} Ci,j?=Ai,j?±Bi,j?

3. 點乘與乘法

(1)定義:矩陣點乘

我們設 A ° B = C A\circ B=C A°B=C

矩陣點乘的符號為“ ° \circ °”,其中 A A A B B B C C C均為矩陣,且維度相同。運算方法也很簡單, C i , j = A i , j × B i , j C_{i,j}=A_{i,j}\times B_{i,j} Ci,j?=Ai,j?×Bi,j?

(2)定義:向量點乘

我們再設 A ? B = n A\cdot B=n A?B=n

顯然 A A A B B B均為向量,且維度相同,而 n n n又是一個標量。那 n n n為多少? n = ∑ i = 1 m A i , j B i , j n=\sum_{i=1}^mA_{i,j}B_{i,j} n=i=1m?Ai,j?Bi,j? m m m A A A B B B的維度)。

(3)定義:矩陣(向量)與標量的乘法

我們再設 n A = B nA=B nA=B

A A A B B B矩陣(向量) n n n標量,顯而易見 B i , j = n A i , j B_{i,j}=nA_{i,j} Bi,j?=nAi,j?

(4)定義:矩陣(向量)與矩陣(向量)的乘法

我們再再設 A B = C AB=C AB=C,設 A A A維度為 m × n m\times n m×n,而 B B B維度為 n × p n\times p n×p,則 C C C維度為 m × p m\times p m×p

運算方式大概如此(復雜): C i , j = A i 行 ? B j 列 C_{i,j}=A_{i行}\cdot B_{j列} Ci,j?=Ai??Bj?,即 C i , j = ∑ i = 1 n A i , k B k , j C_{i,j}=\sum_{i=1}^nA_{i,k}B_{k,j} Ci,j?=i=1n?Ai,k?Bk,j?

(5)性質:矩陣(向量)與矩陣(向量)的乘法

  • 沒有交換律。
  • 結合律和分配率。

(6)應用:矩陣快速冪,進行加速

現在目光轉置P1962,要運用矩陣乘法來解決求斐波那契數列第 n n n項(對 1 0 9 + 7 10^9+7 109+7取模)。

我們構造一個矩陣 A A A與矩陣 B B B A = [ x y ] A=\begin{bmatrix}x&y\end{bmatrix} A=[x?y?] B = [ 1 1 1 0 ] B=\begin{bmatrix}1&1\\1&0\end{bmatrix} B=[11?10?],而 A B = [ x + y x ] AB=\begin{bmatrix}x+y&x\end{bmatrix} AB=[x+y?x?]。現在設 x x x是斐波那契數列的第 ( i + 1 ) (i+1) (i+1)項(簡記 F i + 1 F_{i+1} Fi+1?), y y y則為第 i i i項(簡記 F i F_i Fi?)。再把目光轉回矩陣, A = [ F i + 1 F i ] A=\begin{bmatrix}F_{i+1}&F_i\end{bmatrix} A=[Fi+1??Fi??]
A B = [ F i + 1 + F n F i + 1 ] AB=\begin{bmatrix}F_{i+1}+F_n&F_{i+1}\end{bmatrix} AB=[Fi+1?+Fn??Fi+1??],根據斐波那契數列的規律, F i + 1 + F i = F i + 2 F_{i+1}+F_i=F_{i+2} Fi+1?+Fi?=Fi+2?,so A B = [ F i + 2 F i + 1 ] AB=\begin{bmatrix}F_{i+2}&F_{i+1}\end{bmatrix} AB=[Fi+2??Fi+1??],很容易發現 A B AB AB A A A中每項都進了一位,也就是說只要一直乘 B B B直至結果矩陣為 [ F n F n ? 1 ] \begin{bmatrix}F_n&F_{n-1}\end{bmatrix} [Fn??Fn?1??],第一項就是P1962的答案。

但是直接遞推到 F n F_n Fn? O ( n ) O(n) O(n)的,乘到 F n F_n Fn?也是 O ( n ) O(n) O(n)的。但是多個相同數相乘是數的冪,多個相同矩陣相乘是矩陣的冪,同樣也可以使用快速冪,現在復雜度大約為 O ( k l o g 2 n ) O(klog_2n) O(klog2?n)(有些小細節沒有提及), k k k為矩陣乘法運算時耗掉的。這時當 n n n的值到達一個程度,時間就會大幅減少。

代碼如下。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll p=1e9+7;
struct mat{ll nr,nc;ll m[15][15];mat(ll NR=0,ll NC=0){nr=NR,nc=NC;memset(m,0,sizeof(m));}mat operator=(mat b){nr=b.nr;nc=b.nc;for(int i=1;i<=nr;i++)for(int j=1;j<=nc;j++)m[i][j]=b.m[i][j];}
};
mat operator*(mat a,mat b){mat c(a.nr,b.nc);for(int i=1;i<=a.nr;i++){for(int j=1;j<=b.nc;j++){for(int k=1;k<=a.nc;k++){c.m[i][j]=(a.m[i][k]*b.m[k][j]%p+c.m[i][j])%p;}}}return c;
}
mat fastpow(mat a,ll b){if(b==1)return a;if(b%2==0)return fastpow(a*a,b/2);else return fastpow(a*a,b/2)*a;
}
int main(){ll n;cin>>n;if(n<=2){cout<<1;return 0;}mat fib(1,2),tmp(2,2),tmp2;fib.m[1][1]=1,fib.m[1][2]=1;tmp.m[1][1]=1,tmp.m[1][2]=1;tmp.m[2][1]=1;tmp2=fib*fastpow(tmp,n-2);cout<<tmp2.m[1][1];
}

三、拓展

1. 向量表示里的幾何意義

例如有一個二維向量, v ? = [ x y ] \vec{v}=\begin{bmatrix}x\\y\end{bmatrix} v =[xy?],它將原點 ( 0 , 0 ) (0,0) (0,0)作為起點時,它的終點就是 ( x , y ) (x,y) (x,y)

2. 向量加法里的幾何意義

如圖,向量 a a a與向量 b b b頭尾相接最終與向量 c c c到達同一目的地,而恰好 a ? + b ? = c ? \vec{a}+\vec{b}=\vec{c} a +b =c

3. 向量求反里的幾何意義

a ? \vec{a} a ? a ? -\vec{a} ?a 的區別在于將 a ? \vec{a} a 旋轉 180 ° 180\degree 180°就可以得 ? a ? -\vec{a} ?a ,即方向相反。

四、結尾

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894844.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP/IP 郵件

TCP/IP 郵件 引言 在互聯網技術飛速發展的今天,電子郵件(Email)已成為人們日常工作和生活中不可或缺的通信工具。TCP/IP協議作為互聯網通信的基礎,為電子郵件的傳輸提供了強大的技術支持。本文將詳細介紹TCP/IP在電子郵件傳輸過程中的作用,以及相關的協議和實現方式。 …

離線安裝Appium Server

1、問題概述? 安裝Appium通常有兩種方式: 第一種:下載exe安裝包,這種是Appium Server GUI安裝方式,缺點是通過命令啟動不方便。 第二種:通過cmd安裝appium server,可以通過命令方式啟動,比較方便。 問題:在沒有外網的情況下,無法通過命令在cmd中安裝appium server…

設計模式六大原則和單例模式

設計模式 目的 實現可重用解決方案&#xff0c;構筑易維護、可擴展的軟件系統。 六大原則 單一職責&#xff1a; 類的職責單一&#xff0c;一個方法做一件事。 開閉原則&#xff1a; 拓展開放&#xff0c;修改關閉。 里氏替換&#xff1a; 父類能出現的地方&#xff0c;子…

淺嘗yolo11全程記錄1-準備環境+官網模型推理(個人備份)

準備工作&#xff08;虛擬環境、導入項目&#xff09; 安裝Anaconda 主要是為了創建和管理虛擬環境&#xff0c;在pycharm里按照項目里的requirments.txt安裝依賴的時候&#xff0c;使用虛擬環境會好很多&#xff08;我記得不用Anaconda也可以直接在pycharm的terminal里頭創建…

5.攻防世界 fileinclude

進入題目頁面如下 提示flag在flag.php ctrlu&#xff0c;查看源碼 給出了一段PHP代碼&#xff0c;進行代碼審計 <?php // 檢查是否開啟了錯誤顯示功能 if( !ini_get(display_errors) ) {// 如果沒有開啟&#xff0c;則將錯誤顯示功能設置為開啟狀態ini_set(display_error…

深入淺出 NRM:加速你的 npm 包管理之旅

文章目錄 前言一、NRM 是什么&#xff1f;二、為什么需要 NRM&#xff1f;三、NRM 的優勢四、NRM 的安裝與使用4.1 安裝 NRM4.2 查看可用的 npm 源4.3 切換 npm 源4.4 測試 npm 源速度4.5 添加自定義 npm 源4.6 刪除 npm 源 五、NRM 的進階使用六、總結 前言 作為一名 JavaScr…

《C#之集訓1-20121019c#基礎》

&#xfeff;&#xfeff; C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。它是微軟公司研究員Anders Hejlsberg的最新成果。 C#曾經的它在我眼中是很高大上的&#xff0c;一直沒有目睹其風采&#xff0c;現在終于揭開了它神秘的面紗&#xf…

紅包雨項目前端部分

創建項目 pnpm i -g vue/cli vue create red_pakage pnpm i sass sass-locader -D pnpm i --save normalize.css pnpm i --save-dev postcss-px-to-viewportpnpm i vantlatest-v2 -S pnpm i babel-plugin-import -Dhttps://vant.pro/vant/v2/#/zh-CN/<van-button click&…

藍橋杯嵌入式備賽(三)—— LED +按鍵 + LCD

目錄 一、LED1、原理圖介紹2、程序代碼 二、按鍵1、原理圖介紹2、程序代碼 三、LCD1、原理圖介紹2、程序代碼 一、LED 1、原理圖介紹 如果所示&#xff0c;STM32G431RBT6中有八個LED&#xff0c;由八個GPIO控制&#xff0c;分別為PC8-15&#xff0c;當輸出為低電平時點亮。其中…

深入剖析 HTML5 新特性:語義化標簽和表單控件完全指南

系列文章目錄 01-從零開始學 HTML&#xff1a;構建網頁的基本框架與技巧 02-HTML常見文本標簽解析&#xff1a;從基礎到進階的全面指南 03-HTML從入門到精通&#xff1a;鏈接與圖像標簽全解析 04-HTML 列表標簽全解析&#xff1a;無序與有序列表的深度應用 05-HTML表格標簽全面…

[Java基礎]函數式編程

Lambda函數 JDK8新增的語法形式, 使用Lambda函數替代某些匿名內部類對象&#xff0c;從而讓程序代碼更簡潔&#xff0c;可讀性更好。 基本使用 lambda表達式只能簡化函數式接口的匿名內部類寫法 // 1.定義抽象類 abstract class Animal {public abstract void crt(); }publi…

Vue通過觸發與監聽事件進行數據傳遞: 子組件調用 $emit 方法來將數據傳遞給父組件。

文章目錄 引言I 組件事件事件參數defineEmits 宏聲明需要拋出的事件事件校驗例子:子組件告訴父組件放大所有博客文章的文字II 【詳細說明】 子組件通過觸發一個事件,將數據傳遞給父組件調用內建的 `$emit `方法傳入事件名稱來觸發一個事件子組件通過`this.$emit`來觸發一個事…

Vim 多窗口編輯及文件對比

水平分割 :split 默認使用水平分割的方式。 :split :sp 垂直分割 :vsplit :vs 帶文件的分割 :split 文件名 :sp 文件名 在光標所在的窗口&#xff0c;輸入分割窗口命令就會對那個窗口進行分割。 切換窗口 Ctrlw 切換正在編輯的窗口 快速分割窗口 Ctrlwn 快速分割當前…

“衛星-無人機-地面”遙感數據快速使用及地物含量計算的實現方法

在與上千學員交流過程中&#xff0c;發現科研、生產和應用多源遙感數據時&#xff0c;能快速上手&#xff0c;發揮數據的時效性&#xff0c;盡快出創新性成果&#xff0c;是目前的學員最迫切的需求。特別是按照“遙感數據獲取-處理-分析-計算-制圖”全流程的答疑解惑&#xff0…

二級C語言題解:十進制轉其他進制、非素數求和、重復數統計

目錄 一、程序填空&#x1f4dd; --- 十進制轉其他進制 題目&#x1f4c3; 分析&#x1f9d0; 二、程序修改&#x1f6e0;? --- 非素數求和 題目&#x1f4c3; 分析&#x1f9d0; 三、程序設計&#x1f4bb; --- 重復數統計 題目&#x1f4c3; 分析&#x1f9d0; 前言…

使用服務器部署DeepSeek-R1模型【詳細版】

文章目錄 引言deepseek-r1IDE或者終端工具算力平臺體驗deepseek-r1模型總結 引言 在現代的機器學習和深度學習應用中&#xff0c;模型部署和服務化是每個開發者面臨的重要任務。無論是用于智能推薦、自然語言處理還是圖像識別&#xff0c;如何高效、穩定地將深度學習模型部署到…

讓相機自己決定拍哪兒!——NeRF 三維重建的主動探索之路

我在 NeRF 中折騰自動探索式三維重建的心得 寫在前面&#xff1a; 最近我在研究三維重建方向&#xff0c;深切感受到 NeRF (Neural Radiance Fields) 在學術界和工業界都備受矚目。以往三維重建通常要依賴繁瑣的多視圖幾何管線&#xff08;比如特征匹配、深度估計、網格融合等&…

央行發布《貿易金融分布式賬本技術要求》,參考架構包括5部分

《銀行科技研究社》(作者 木子劍):2024年12月11日,中國人民銀行發布金融行業標準《貿易金融分布式賬本技術要求》(JR/T 0308-2024)(以下簡稱“《要求》”),當日實施。據悉,該文件的起草單位包括6大行和多家股份制銀行等。 《要求》規定了分布式賬本技術在貿易金融領域…

管理etcd的存儲空間配額

如何管理etcd的存儲空間配額 - 防止集群存儲耗盡指南 本文基于etcd v3.4官方文檔編寫 為什么需要空間配額&#xff1f; 在分布式系統中&#xff0c;etcd作為可靠的鍵值存儲&#xff0c;很容易成為系統瓶頸。當遇到以下情況時&#xff1a; 應用程序頻繁寫入大量數據未及時清理…

調用騰訊云批量文本翻譯API翻譯srt字幕

上一篇文章介紹了調用百度翻譯API翻譯日文srt字幕的方法。百度翻譯API是get方式調用&#xff0c;參數都放在ur中&#xff0c;每次調用翻譯文本長度除了接口限制外&#xff0c;還有url長度限制&#xff0c;而日文字符通過ur轉碼后會占9個字符長度&#xff0c;其實從這個角度來講…