本文主要是介绍Matlab解决施密特正交规范化矩阵(代码开源),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#最近在学习matlab,刚好和线代论文重合了
于是心血来潮用matlab建了一个模型来解决施密特正交规范化矩阵。
我们知道这个正交化矩阵挺公式化的,一般公式化的内容我们都可以用计算机来进行操作,节约我们人工的时间。
我们首先把矩阵导入进去,之后计算投影的长度进行缩减。进行正交化
之后单独进行规范化
代码如下:
%%% 施密特正交化
a=ones(3,3); % 假设3行,3列,视题目而定
% 必须是线性无关的向量组%带入题目的向量得到:
a(:,1)=[1;2;-1];
a(:,2)=[-1;3;1];
a(:,3)=[4;-1;0];a1 = a(:,1);
c=size(a1); % 去判断a1多少行b=zeros(c(1),3);%与题目中向量个数行列一样
b(:,1)=a(:,1);
%正交化
for i=2:3%从第二个开始递归for j=1:i-1b(:,i)=b(:,i)-dot(a(:,i),b(:,j))/dot(b(:,j),b(:,j))*b(:,j);endb(:,i)=b(:,i)+a(:,i);
end%单位化for k=1:3b(:,k)=b(:,k)/norm(b(:,k));enddisp(b);%b即为正交规范组!!
我们带入一道例题:
设a1=[1,2,-1]T,a2=[-1,3,1]T,a3=[4,-1,0]T
试用施密特正交化过程把这组向量规范正交化.
解取b1=a1;
b2=a2-[a2,b1]/(||b1||)2b1=[-1,3,1]T-4/6[1,2,-1]T=5/3[-1,1,1]T;
B3=a3-[a3,b1]/(||b1||)2b1-[a3,b2]/(||b2||)2b2=[4,-1,0]T-1/3[1,2,-1]T+5/3[-1,1,1]T=2[1,0,1]T;
再把它们单位化,
取e1=b1/||b1||=1/√6[1,2,-1]T,e2=b2/||b2||=1/√3[-1,1,1]T,e3=b3/||b3||=1/√2[1,0,1]T
以上为数学人工方法求解,而如果直接带入我们建立的模型,我们可以直接得到:
谢谢大家啦,以上就是代码和展示部分!
这篇关于Matlab解决施密特正交规范化矩阵(代码开源)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!