感谢西电的课程强力推荐
matlab 实数 精度64位二进制 、8个字节
变量的检查,who; whos(详细)
ex21p.m
format, echo on % 显示函数,不只是显示结果
pause,x1=sqrt(5),x2=1.37 % pause 执行前等待用户确认
pause,y=3/x2
pause,disp(' 矩阵的赋值')
pause,a=[1,2,3;4,5,6;7,8,9]
pause,disp(' 赋值元素可以是表达式')
pause,x=[-1.3 sqrt(3) (1+2+3)/5*4]
pause,disp(' 可以超越矩阵已有范围赋值')
pause,disp(' 其中未赋值元素自动取零')
pause,x(5)=abs(x(1)) % 生成 或者 添加 第五行 !!
pause,a(4,3)=6.5
pause,a(5,:)=[5,4,3] % 此处5 后面逗号 不可省
pause,disp('提取4个位置')
pause,b=a([2,4],[1,3])
pause,disp(' 用空矩阵[]在矩阵中删除行或列')
pause,a([2,4,5],:)=[]
pause,disp(' 赋值语句可以无左端变量')
pause,a/7
pause,disp(' 矩阵的转置')
pause,a'
pause,disp(' 矩阵元素可以是复数')
pause,c=3+5.2i
pause,z=[1+2i,3+4i;5+6i,7+8i]
pause,z=[1,3;5,7]+[2,4;6,8]*i
pause,disp(' 运算对复数有效')
pause,f=sqrt(1+2i)
pause,g=sin(3+5i)
pause,f*f
c = eye(2)
c =
1 0
0 1
>> d = eye(3)
d =
1 0 0
0 1 0
0 0 1
>> e =eye(4)
e =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
magic 模仿矩阵
>> a = magic(2)
a =
1 3
4 2
>> b = magic(3)
b =
8 1 6
3 5 7
4 9 2
>> c = magic(4)
c =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> d = linspace(0,1,3)
d =
0 0.5000 1.0000
>> e = linspace(0,1,5)
e =
0 0.2500 0.5000 0.7500 1.0000
% 矩阵拼接
>> a = zeros(3,2)
a =
0 0
0 0
0 0
>> b = ones(3,4)
b =
1 1 1 1
1 1 1 1
1 1 1 1
>> c = [a,b]
c =
0 0 1 1 1 1
0 0 1 1 1 1
0 0 1 1 1 1
>> d = linspace(0,1,6)
d =
1 至 5 列
0 0.2000 0.4000 0.6000 0.8000
6 列
1.0000
>> e =[c , d]
错误使用 horzcat
串联的矩阵的维度不一致。
>> e =[c ; d]
e =
0 0 1.0000 1.0000 1.0000 1.0000
0 0 1.0000 1.0000 1.0000 1.0000
0 0 1.0000 1.0000 1.0000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
matlab 解线性方程组
rref (Reduced Row Echelon Form) 行最简行(针对增广矩阵)
行阶梯矩阵——阶梯高度只能是一行;阶梯下方全为0
行最简形矩阵——首先是行阶梯矩阵,然后每行系数为1;对于行中系数为1的列,该列仅有1 这一个元素
作用,具体功能:
解线性方程组
求矩阵的秩(行最简形,有几行为非0;约束条件有几个(即几行非0);系数矩阵 和 增广矩阵 的秩 一样 有唯一解;)
求矩阵行最简形 首元 所在的列数
>> a =[2 -2 2 6 ;2 -1 2 4 ;3 -1 4 4 ; 1 1 -1 3 ];
>> b = [-16;-10;-11;-12];
>> ab = rref([a,b])
ab =
1 0 0 0 11
0 1 0 0 -8
0 0 1 0 -6
0 0 0 1 -7
>> [ab1,b1]= rref([a,b])
ab1 =
1 0 0 0 11
0 1 0 0 -8
0 0 1 0 -6
0 0 0 1 -7
b1 =
1 2 3 4
% b1 计算的是 化简的行最简形的首元 所在列的位置;当有无数解时,可能b1 就是1235 (欠定方程组)
求解也可以直接用左除ax = b ; x = a' b ; x = a\b
矩阵计算 —— 多个线性系统 相互关联;构成更大的复杂的系统,是线性代数要完成的重要任务;要用矩阵的理论和算法来实现。
矩阵加法 —— 一一对应元素 相加
矩阵数乘 —— 用系数 分别 乘 每个元素(左乘 == 右乘)
矩阵乘法三要点 —— AB可乘,A列数 == B 行数; AB乘积C的形状 A行B列; AB乘积C元素构成: A的行和B的列內积;
矩阵乘法规律 ———— 不符合交换律AB != BA;
线性代数(矩阵加法;矩阵数乘;)定义:
从变量x -> 变量Y的线性变换 x
多次连续线性变换,可以变换为矩阵的连乘,在现有基础上进行线性变换,即左乘变换系数;
(AB)C = A(BC)空间次序不可变, 时间次序可以变
A(B+C) = AB+ AC
λ(AB)= (λA)B = A(λB)
如果AB都是上下对角矩阵,则AB也是上下对角矩阵;
矩阵的逆(就是除法):
可逆条件:矩阵A的行列式的值 不为0;
唯一性: 如果矩阵A 可逆 是唯一的;
A B可逆: AB = BA = I
逆的逆:A可逆,A^-1也可逆,(A^-1)^-1 =A
(AB)^-1 = B^-1A^-1;
推广:
(ABCDE)^-1= E^-1D^-1C^-1B^-1A^-1
逆矩阵的求法(计算量最少的方法——高斯消元法):
https://jingyan.baidu.com/article/1709ad8095e1924634c4f03a.html
方法1:参数法(就是高斯消元法)
方法2: 伴随矩阵
方法3:(A,E)–》(E,A^-1)初等行变换;
matlab 两种方法:(必须是方阵)
你函数 V= inv(A)
负指数 V= A^-1
A = [ 1 2
-1 -3];
>> B = inv(A)
B =
3 2
-1 -1
>> A^-1
ans =
3 2
-1 -1
>> rref([A,eye(2)])
ans =
1 0 3 2
0 1 -1 -1
矩阵转置 符号’ T
(AB)’ = B’A’
A = A’ 对阵矩阵
矩阵分块
典型用法:化学方程式 配平
数组赋值 【】
x = [起点,增量,终点]
y = linspace(起点,终点,点数)
z = logspace(起点,终点,点数)
元素群的四则运算:
+ - * / 前加一点符号“。” ,两个矩阵按逐个元素进行运算
rref 和 ref 的功能: ref 即转化为行阶梯 形;不是最简形;
行列式的意义:主要用来判断Ax = b 是否有解的情况;
用两个竖线 圈起来,| A | = det(A) (determinant 行列式,决定值)
A B 两点代表的两个向量,该两个向量之间的面积 即为 二阶行列式;
即为 向量內积: A * B = | A | | B | sint(θ)
三阶行列式的几何意义:
三个向量 为三条边 组成的平行六面体 的体积。
matlab 求解行列式的值det():
特征值的另一个用法,求特征方程的特征值。
>> AA = [1 3 4 ;]
AA =
1 3 4
>> AA = [1 3 4 ;2 3 6; 0 9 1];
>> D =det(AA)
D =
15
>> AA(2,:) = [1 3 4]
AA =
1 3 4
1 3 4
0 9 1
>> det(AA)
ans =
0
plot 画图
format compact, clear , % clear删除变量; clc 数字 清屏
close all,echo on
pause,% Y=5*(rand(1,10)-0.5)); % rand()随机生成一个数组,元素群
pause,Y=[-1.4,-2.2,0.9,0.9,2,-0.6,0.1,1.7,-2.3,-2.2],disp(' ') % Y 就是个数组,plot(Y) 以下标为横坐标
pause,plot(Y,'b','linewidth',2) % b blue 线宽 mm
pause, title('我的第一张图'), xlabel('n'), ylabel('Y'),grid
pause,disp('用hold on命令在一张图上画两根曲线的方法'),disp(' ')
pause, t=0:0.5:4*pi; y=exp(-0.1*t).*sin(t); plot(t,y,'g'),hold on %图片保持,后续作图在改图基础上
pause, t=0:0.5:4*pi; y1=exp(-0.1*t).*sin(t+1); plot(t,y1,'r','linewidth',2)
hold off
pause,disp('将平面上若干点(1,2),(3,4),(4,1),(1,2)连接的方法'),
pause,plot([1,3,4,1],[2,4,1,2]) % 多个点之间画直线, 分别将3个点的 x 和 y 分开 取成了一个集合;
pause,plot([1,3,4,1],[2,4,1,2],'s') % 只画出点,s 代表 square
pause,disp('分割成子图的方法'),disp(' ')
pause,subplot(2,2,1),stem(t,y), title('stem(t,y)') %画子图(2,2,1)代表2行2列,第一个图
pause,subplot(2,2,2),stairs(t,y),title('stairs(t,y)') %
pause,subplot(2,2,3),bar(t,y),title('bar(t,y)'),axis([0,20,-1,1])
pause,subplot(2,2,4),fill(t,y,'r'),title('fill(t,y,''r'')'),
pause,subplot(1,1,1)
>> clear
>> syms a b c d;
>>
>> A =[a b ; c d]
A =
[ a, b]
[ c, d]
>> det(A)
ans =
a*d - b*c
>> inv(A)
ans =
[ d/(a*d - b*c), -b/(a*d - b*c)]
[ -c/(a*d - b*c), a/(a*d - b*c)]
向量
向量的几何长度 || V || = sqrt() , 也叫范数 ,norm
matlab 命令 length()
单位向量 : 该向量 / 范数
单位向量 和 方向余弦:单位向量 三个(2个)分量在x - y -z 轴的投影,也就是该向量与 x - y - z 夹角的余弦
数量积 (点积)—— 一个向量在另一个向量上投影
两个向量正交额条件是 两个单位向量的 数量积 为 0;