題目來自:《戰勝MATLAB必做練習50道》
題目有更改,改成了我想寫的樣子。
1. 創建一個3×3矩陣,並將其擴充為4×5矩陣
clear; clc; mat1 = ones(3,3) mat2 = zeros(3,3) mat3 = rand(3,3) %隨機矩陣 mat4 = randn(3,3) %產生均值為0,方差σ^2 = 1,標准差σ = 1的正態分布的矩陣
mat4(4,5) = 10
2. 建立一個等比數列,然后由它產生一個對角陣,並存儲該矩陣。
clear; clc; a = logspace(0,4,5) d1 = diag(a) save mydate d1
%eye(m,n)生成一個m×n的單位矩陣
3. 調用上面存儲的矩陣,並由它產生一個列向量。
clear;
clc;
load mydate d1
d1
d2 = diag(d1)
4. 創建一個3×3魔方陣和相應的隨機矩陣,將兩個矩陣拼接起來。然后提取任意元素。
魔方陣:任意行、列及對角線之和相等。
clear; clc; mat1 = magic(3) mat2 = rand(3,3) mat3 = [mat1,mat2] %橫向拼接 mat4 = [mat1;mat2] %縱向拼接 mat5 = mat3(2:3,[1,3,4]) %提取第2、3行,第1、3、4列的元素 mat6 = mat3([1,3],[2,4])
5. 求矩陣的轉置矩陣。
clear; clc; mat1 = magic(3) mat2 = rot90(mat1) %旋轉矩陣 mat3 = mat1' %轉置矩陣
6. 創建一個4×4單位矩陣,提取主對角線上的元素
clear; clc; mat1 = rand(4,4) d = diag(mat1)
7. 創建一個4×5隨機矩陣,提取第一行和第二行中大於0.3的元素組成的矩陣。
clear; clc; mat1 = rand(4,5) mat2 = mat1([1,2],[1,2,3,4,5]) mat3 = mat2(:) k = 1; for ii = 1 : length(mat3) if(mat3(ii) > 0.3) mat4(k) = mat3(ii); k = k + 1; end end mat4
8. 計算A×B×C。
clear; clc; A = rand(3) B = magic(3) C = rand(3,4) A*B*C
9. A=[1,2,3],計算A‘ 與A 的積。
clear; clc; A = [1,2,3] B = A' A*B B*A
10. 求5×5矩陣和4×3矩陣的逆矩陣
clear; clc; A = rand(5,5) B = rand(4,3) A1 = inv(A) %inv只能對方陣求逆 B1 = pinv(B) %pinv都可,包含了inv的功能 C = A*A1 D = B1*B
11. 用兩種方法 求解Ax = b的解(A為4階隨機矩陣,b為4階列向量)
clear; clc; A = rand(4) b = ones(4,1) x1 = inv(A) * b x2 = A\b %直接使用高斯消去法,速度快一些
12. 算A的5次方,計算(0.5)^A
矩陣的乘方算法(A^p):
① 當p為正整數時,A^p表示A自乘p次
② 當p為負整數時,A^(-p)表示矩陣A-1自乘p次
③ 當p為0時,A^0等於與A同維的單位矩陣
④ 當p為分數時,若A可以分解為A = WDW-1,D為對角陣,則A^p = WDpW-1
標量的矩陣乘方(p^A):
若A可以分解為A = WDW-1,D為對角陣,則可以定義標量矩陣乘方為:
clear; clc; A = rand(4) B = A^5 %A自乘5次 C = (0.5)^A