Matlab线性代数实验
8.1 实验(Ⅰ):用Matlab学线性代数
8.1.1实验与观察:向量组的线性关系和解线性方程组
1. 用线性组合的方式产生向量组
【 clear n=3; m=2; a=-10; b=10;
rand('seed',32), A = unifrnd(a,b,[n,m]) 】
【 x = unifrnd(-1,1,[1,m]), A(:,3)=x(1)*A(:,1)+x(2)*A(:,2) 】
2.Gauss消元法和向量组的线性关系的判定
【 B=rref(A) 】
【 r=2;m=2;s=5;
X=[-B(1:2,r+1:m+s) ;eye(m+s-r)] %基础解系 】
【 r1=rank(A(:,1:2)), r2=rank(A(:,1:3)) 】
【 B=rref(A(:,1:3)) 】
【 B=rref(A);C=B(1:2,:) 】
3 . 观察程序
zxy8_1.m (主程序,产生向量并画图)
【 clf,n=3;m=2;s=5; % 确定相关的参数
a=-10;b=10;
rand('seed',32),A = unifrnd(a,b,[n,m]), %产生m个n维向量(生成向量)
r=[1:m]; l=1;p=1.2;
zxy8_1plot(A,r,l,p) %将向量画出
for i=m+1:m+s %产生组合向量
x = unifrnd(-1,1,[1,m]);
A(:,i)=zeros(n,1);
for j=1:m
A(:,i)=A(:,i)+x(j)*A(:,j);
end
end
hold on,r=[m:m+s];l=2;p=0.5;
zxy8_1plot(A,r,l,p) %用另一种方式画组合向量 】
其中调用了画图子程序zxy8_1plot
【 function out=zxy8_1plot(A,r,l,p)
%A为若干3维向量拼成的矩阵, 绘制这些向量;r为向量,指明要绘制A的列向量指标。
%有两种不同的绘制方式,由参数l和p控制。
%l=1,向量用红色粗线条绘制;l=2,向量用蓝色细线条绘制。p是控制箭头的大小参数。
a=-10;b=10;k=50;
x=linspace(a,b,k);y=x;
[X,Y]=meshgrid(x,y);axis([a b a b a b]);
xlabel('x1','fontsize',14),ylabel('x2','fontsize',14),zlabel('x3','fontsize',14)
if l==1 %第一种绘图方式
for i=r
h1=plot3([0 A(1,i)],[0 A(2,i)],[0 A(3,i)],'rs','linewidth',3); %画线段
u(1)=A(1,i);v(1)=A(2,i);w(1)=A(3,i);u(2)=eps; v(2)=eps; w(2)=eps;
h=quiver3([0 A(1,i)],[0 A(2,i)],[0,A(3,i)],u,v,w,p); %画箭头
set(h,'linewidth',1,'color','red'), axis([a b a b a b]),hold on,
text(A(1,i),A(2,i),A(3,i),['\leftarrowA',int2str(i)],'fontsize',14); %文字标注
end
Z=zxyplane(X,Y,A(:,1)',A(:,2)',0,0,0); %计算平面的z坐标
mesh(X,Y,Z), axis([a b a b a b]),hidden off, %画平面
elseif l==2 %第二种绘图方式,结构同上
for i=r
h1=plot3([0 A(1,i)],[0 A(2,i)],[0 A(3,i)],'o--');
set(h1,'linewidth',2,'color','blue')
u(1)=A(1,i);v(1)=A(2,i);w(1)=A(3,i);u(2)=eps;v(2)=eps; w(2)=eps;
h=quiver3([0 A(1,i)],[0 A(2,i)],[0,A(3,i)],u,v,w,p);
set(h,'linewidth',1,'color','blue'), axis([a b a b a b]),hold on,
text(A(1,i),A(2,i),A(3,i),['\leftarrowA',int2str(i)],'fontsize',14);
end
end 】
zxyplane.m (计算平面的z坐标)
【 function z=zxyplane(x,y,a,b,x0,y0,z0)
%向量a,b叉积构成平面的法矢t,平面过(x0,y0,z0)点
t(1)=det([a(2) a(3);b(2) b(3)]);
t(2)=-det([a(1) a(3);b(1) b(3)]);
t(3)=det([a(1) a(2);b(1) b(2)]);
if t(3)~=0
z=z0-(t(1)/t(3))*(x-x0)-(t(2)/t(3))*(y-y0);
k=find(z<=-8&z>=8);z(k)=NaN;
elseif t(3)==0
disp('t(3)=0,this programme can not finish the work you want to do ')
end 】
8.1.2应用、思考与练习
1. 观察极大线性无关组的意义
【 B=rref(A), C=B(1:2,:), A(:,1:2)*C, A 】
2. 平面四连杆机构的设计
3. 用Matlab做线性代数题(矩阵的符号演算)
◆ 试题 设 ,求 a的值使得 1. a4不能由a1、a2、a3线性表示。 2. a4可以由a1、a2、a3线性表示,并写出表达式。
【 syms a
a1=[1;4;0;2]; a2=[2;7;1;3];a3=[0;1;-1;1];a4=[3;10;a;4];
A=[a1,a2,a3,a4]
for i=2:4 %行初等变换
A(i,:)=A(i,:)-A(1,:)*A(i,1);
end
A(2,:)=A(2,:)/A(2,2);
for i=3:4
A(i,:)=A(i,:)-A(2,:)*A(i,2);
end
A 】
8.2 实验(Ⅱ):矩阵的相似化简
8.2.1 实验与观察:矩阵的特征―相似标准形的作用
1. 逼近直线的迭代点列
2. 估计直线-特征值、特征向量
【 [P,D] = eig(A) 】
【 x=linspace(a,b,30); [pc,lamda]=eig(A),pc=-pc; z1=pc(2,1)/pc(1,1)*x;
plot(x,z1,'linewidth',3) 】
3.特征值和特征向量决定迭代性质?
【 x0=[1 1]'; A=[1/5,99/100;1,0];
[P,D]=eig(A);
y0=inv(P)*x0;y=y0;
for i=1:50
y=[D^i*y0,y];
end
x=P*y;
plot(y(1,:),y(2,:),'o',x(1,:),x(2,:),'*'),legend('Y','X=PY') 】
4. 观测程序说明
zxy8_2.m的源代码如下:
【 clear,clf
a=-20*100;b=-a;c=a;d=b;p=0.1; %设定画图范围
n=100;
A=[1/5,99/100;1,0]; %设定矩阵
axis([a b c d]),grid on,hold on
button=1
while button==1
[xi,yi,button]=ginput(1); %用鼠标选初始点
plot(xi,yi,'o'),hold on,
X0=[xi;yi];X=X0;
for i=1:n
X=[A*X,X0]; %用这种方式作迭代,并画图
h=plot(X(1,1),X(2,1),'R.',X(1,1:2),X(2,1:2),'r:');hold on
quiver([X(1,2),1]',[X(2,2),1]',[X(1,1)-X(1,2),0]',[X(2,1)-X(2,2),0]',p)
set(h,'MarkerSize',6), grid,
end
end
pause
x=linspace(a,b,30); %画最大特征值所对应的特征向量所决定的直线[pc,lamda]=eig(A),pc=-pc;
z1=pc(2,1)/pc(1,1)*x;
z2=pc(2,2)/pc(1,2)*x;
h=plot(x,z1),set(h,'linewidth',2) 】
8.2.2 应用、思考与练习
1. 植物基因的分布、杂交育种问题
3.高维线性离散动力系统
参考程序zxy8_3.m . (计算图8.6和8.7)
【 clear,clf
a=-2;b=-a;c=a;d=b;p=0.0001*abs(a); %设定画图范围
n=30;
A=[2,0;0,1/2] %设定矩阵
axis([a b c d]),hold on
button=1
while button==1
[xi,yi,button]=ginput(1); %用鼠标选初始点
plot(xi,yi,'o'),hold on,
X0=[xi;yi];X=X0;
for i=1:n
X=[A*X,X0]; %用这种方式作迭代,并画图
h=plot(X(1,1),X(2,1),'R.',X(1,1:2),X(2,1:2),'r:');hold on
quiver([X(1,2),1]',[X(2,2),1]',[X(1,1)-X(1,2),0]',[X(2,1)-X(2,2),0]',p)
set(h,'MarkerSize',6), grid,
end
end 】
3. 主成分分析和线性变换
下面是相应的程序:
【 x1=[-0.931 -3.931 20.069 -6.931 -4.931 20.931 -3.931 -12.931 28.069 0.069 -16.931 16.069 -11.931 -8.931 -7.931 0.069 0.069 -16.931 -8.931 -3.931 14.069 11.069 -15.931 21.069 -10.934 7.069 15.069 8.069 16.069];
x2=[-0.379 -0.379 12.621 -4.379 -3.379 -11.379 -1.379 -3.379 6.621 2.621 -9.379 3.621 -7.379 -2.379 -3.379 3.621 0.379 -6.379 -3.379 -0.379 2.621 7.621 -7.379 4.621 -3.379 4.621 9.621 4.621 5.621];
X=[x1',x2'];C=cov(X) %计算协方差矩阵,注意数据需按列向量存入X中。
[P,latent,explained] = pcacov(C) %主成分分析,P即为所需的变换矩阵。 】
【 clf, a=-20;b=30;c=-20;d=30;
t=linspace(a,b,20); z1= P(2,1)/P(1,1)*t; z2=P(2,2)/P(1,2)*t;hold on,
plot(x1,x2,'o',[a b],[0 0],':',[0 0],[c d],'b:',t,z1,t,z2),
xlabel('x1'),ylabel('x2') , axis([a b c d]),axis('equal') 】
zxy8_5.m
【 clear, clf,a=-20;b=30,n=8,x=linspace(a,b,n);y=x;
[x1,x2]=meshgrid(x);[x4,x3]=meshgrid(x); %生成网格线
A=[0 ,2.2;1 0.2]; a=pi/6;
for k=1:n %作网格线的线性变换
for l=1:n
z=A*[x1(k,l),x2(k,l)]'; %垂直线的的变换
y1(k,l)=z(1);y2(k,l)=z(2); %将变换后的坐标适当排列以便作图
z=A*[x3(k,l),x4(k,l)]'; %水平线的的变换
y3(k,l)=z(1); y4(k,l)=z(2);
end
end
t=linspace(a,b,30);z1=5*cos(t);z2=15+5*sin(t); %产生一个椭圆
z3=A*[z1;z2]; %对椭圆的变换
figure(1) %在第一个图形窗口画x1-x2平面的内容plot(x1,x2,x3,x4,z1,z2),axis('equal')
figure(2) %在第二个图形窗口画y1-y2平面的内容
Matlab线性代数实验
- matlab(227703)
相关推荐
深入探索人工智能的数学基础
线性代数是人工智能的数学基础之一,它涉及向量、矩阵、线性变换等概念。在机器学习和深度学习中,线性代数被广泛应用于数据处理、特征提取和模型训练等方面。
2023-09-14 10:06:41
94

人工智能的数学基石:揭秘人工智能十大数学基础
奥秘。一、线性代数(LinearAlgebra)线性代数是人工智能的数学基础之一,它涉及向量、矩阵、线性变换等概念。在机器学习和深度学习中,线性代数被广泛应用于数据
2023-09-14 08:29:53
260


线性代数及其应用
2023-08-29 14:49:29
0

matlab 7.0完整版iso下载
大学计算机系主任 Moler 教授在讲授线性代数课程时,发现了用其他高级语言编程极为不便,便构思并开发了 MATLAB (MATrix LABoratory,即矩阵实验室), 这一软件利用
2008-06-13 09:50:44
基于线性代数的C ++模板库
00 Eigen简介 Eigen:基于线性代数的C ++模板库,主要用于矩阵,向量,数值求解器和相关算法。SLAM中常用的Ceres、G2O等项目均是基于Eigen库。 Eigen库的优点: 支持
2023-06-25 10:28:31
149

如何在MATLAB中使用线性规划求解不同的问题
MATLAB是一种广泛使用的数学软件,它提供了各种工具箱和函数来解决多种问题,包括线性规划。下面介绍几个线性规划的示例,演示在MATLAB中如何使用线性规划求解这些问题: 1. 线性规划基础 假设
2023-06-14 10:25:00
255

PyTorch教程-2.3. 线性代数
2.3. 线性代数¶ Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab [jax
2023-06-05 15:37:48
129

PyTorch入门须知PyTorch教程-2.3. 线性代数
我们可以将数据集加载到张量中,并使用基本的数学运算来操纵这些张量。要开始构建复杂的模型,我们还需要一些线性代数工具。本节简要介绍了最基本的概念,从标量算术开始,一直到矩阵乘法。
火炬网路网贾克斯张量流import torch
2023-06-05 15:15:26
156

评论