- MATLAB金融風險管理師FRM(高階實戰)
- 姜偉生 涂升 李蓉
- 1052字
- 2021-03-26 23:39:51
2.2 線性相關
給定向量組V = [v1, v2,…, vq],如果存在不全為零b1、b2、…、bq使得下式成立:

則稱向量組V線性相關(linear dependence);否則,V線性無關(linear independence)。如圖2.7(a)所示,線性無關v1和v2構造一個二維平面H,v1和v2常被稱作基底向量(basis vector)。
在二維平面H內,a用v1和v2表示,從而v1、v2和a線性相關。圖2.7(b)中,a不能用v1和v2表示,從而v1、v2和a線性無關。如果,a是a在H平面內投影,a中不能被v1和v2表達的部分,即a - a,垂直于H平面。

圖2.7 線性相關與線性無關
圖2.8(a)給出的平面內,x方向單位向量為i = [1, 0]T,y方向單位向量為j = [0, 1]T。圖2.8(b)給出空間中,x方向單位向量為i = [1, 0, 0]T,y方向單位向量為j = [0, 1, 0]T,z方向單位向量為k = [0, 0, 1]T。i、j和k這三個向量為相互垂直基底向量,也叫作正交基(orthogonal basis);因為i、j和k這三個向量正交且模為1,因此它們也叫作標準正交基。如圖2.8(c)和(d)所示,在平面內、三維空間中,數據可以通過這些空間基底向量表達。

圖2.8 向量直角坐標系
下面舉個例子,RGB(red green blue)三原色模型中任意一個顏色看成是以下三個基底向量構成線性組合。v1代表紅色,v2代表綠色,v3代表藍色。

v1、v2和v3這三個基底向量,模均為1,而且相互垂直,如圖2.9(a)所示。

圖2.9 三原色空間
圖2.9(b)展示,v1([1, 0, 0] red)、v2([0, 1, 0] green)和v3([0, 0, 1] blue)這三個基底向量任意兩個組合構造向量w1([1, 1, 0] yellow)、w2([1, 0, 1] magenta)和w3([0, 1, 1] cyan)。w1、w2和w3也可以是三維空間基底向量;印刷四分色模式(CMYK color model)就引入w1、w2和w3這三個基底向量。此外,CMYK還有一個維度,灰度。

從RGB模式向CMYK模式轉換是一種基底轉換。圖2.10展示v1、v2和v3這三個基底向量構造更多空間向量。

圖2.10 三原色空間向量分布
除向量以外,在v1、v2和v3這三個正交向量構造空間中,數據點也是一種重要數據展現形式,圖2.11中數據點顏色對應即空間點位置。有這一節內容作為基礎,本章下兩節要從數據和向量投影兩個角度研究數據矩陣。以下代碼獲得圖2.9~圖2.11。

圖2.11 v1、v2和v3這三個基底向量構造空間數據點
B4_Ch1_2.m close all; clear all; clc loc = [0,0,0]; figure(1) x_i = [1,0,0]; y_j = [0,1,0]; z_k = [0,0,1]; plot_vector(loc,x_i); hold on plot_vector(loc,y_j); plot_vector(loc,z_k); fig_dec figure(2) plot_vector(loc,x_i); hold on plot_vector(loc,y_j); plot_vector(loc,z_k); plot_vector(loc,x_i+y_j); hold on plot_vector(loc,x_i+z_k); plot_vector(loc,y_j+z_k); fig_dec figure(3) r = 0.75; [x,y,z] = Spherical_grid(r); subplot(1,2,1) x = x(:); y = y(:); z = z(:); hold on for i = 1:length(x) plot_vector(loc,[x(i),y(i),z(i)]) end fig_dec r = 1; [x,y,z] = Spherical_grid(r); subplot(1,2,2) x = x(:); y = y(:); z = z(:); hold on for i = 1:length(x) plot_vector(loc,[x(i),y(i),z(i)]) end fig_dec steps = [0:0.1:1]; [X,Y,Z] = meshgrid(steps,steps,steps); figure(4) scatter3(X(:),Y(:),Z(:),8,[X(:),Y(:),Z(:)],'filled'); hold on fig_dec view(115,20); function [x_grid,y_grid,z_grid] = Spherical_grid(r) theta = 0:pi/25:pi/2; phi = 0:pi/25:pi/2; [theta,phi] = meshgrid(theta,phi); x_grid = r.*sin(theta).*cos(phi); y_grid = r.*sin(theta).*sin(phi); z_grid = r.*cos(theta); end function plot_vector(loc,vec) h = quiver3(loc(1),loc(2),loc(3),... vec(1),vec(2),vec(3),'color',vec); h.AutoScale = 'off'; h.ShowArrowHead = 'off'; end function fig_dec daspect([1,1,1]) box off; view(135,20); axis tight; grid on xticks([0:0.5:1]); yticks([0:0.5:1]); zticks([0:0.5:1]) xlabel('x, red'); ylabel('y, green'); zlabel('z, blue') xlim([0,1]);ylim([0,1]);zlim([0,1]); grid off hAxis = gca; hAxis.XRuler.FirstCrossoverValue = 0; % X crossover with Y axis hAxis.YRuler.FirstCrossoverValue = 0; % Y crossover with X axis hAxis.ZRuler.FirstCrossoverValue = 0; % Z crossover with X axis hAxis.ZRuler.SecondCrossoverValue = 0; % Z crossover with Y axis hAxis.XRuler.SecondCrossoverValue = 0; % X crossover with Z axis hAxis.YRuler.SecondCrossoverValue = 0; % Y crossover with Z axis end