Matlab解决施密特正交规范化矩阵(代码开源)

打印 上一主题 下一主题

主题 520|帖子 520|积分 1560

#迩来在学习matlab,刚好和线代论文重合了
于是心血来潮用matlab建了一个模子来解决施密特正交规范化矩阵。
我们知道这个正交化矩阵挺公式化的,一般公式化的内容我们都可以用计算机来举行操纵,节约我们人工的时间。
我们起首把矩阵导入进去,之后计算投影的长度举行缩减。举行正交化
之后单独举行规范化
代码如下:
 
  1. %%
  2. % 施密特正交化
  3. a=ones(3,3);   % 假设3行,3列,视题目而定
  4. % 必须是线性无关的向量组
  5. %带入题目的向量得到:
  6. a(:,1)=[1;2;-1];
  7. a(:,2)=[-1;3;1];
  8. a(:,3)=[4;-1;0];
  9. a1 = a(:,1);
  10. c=size(a1);  % 去判断a1多少行
  11. b=zeros(c(1),3);%与题目中向量个数行列一样   
  12. b(:,1)=a(:,1);
  13. %正交化
  14. for i=2:3%从第二个开始递归
  15.     for j=1:i-1
  16.         b(:,i)=b(:,i)-dot(a(:,i),b(:,j))/dot(b(:,j),b(:,j))*b(:,j);
  17.     end
  18.     b(:,i)=b(:,i)+a(:,i);
  19. end
  20. %单位化
  21. for k=1:3
  22.     b(:,k)=b(:,k)/norm(b(:,k));
  23. end
  24. disp(b);
  25. %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

以上为数学人工方法求解,而假如直接带入我们建立的模子,我们可以直接得到:


谢谢大家啦,以上就是代码和展示部门!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表