matlab-线性代数 施密特正交化

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。


  •                     matlab : R2018a 64bit
  •                             os : win7
  •            type setting : markdown
  •                         blog : https://blog.csdn.net/yushaopu
  •                     github : https://github.com/GratefulHeartCoder

code

clear
clc

% 施密特正交化
% 这些代码是自己写的,不具备权威性,只能做个简单的参考,不可照搬。
% 写这份代码的时候,大约是2016年。现在2018了,代码的细节都忘记了。
% 嗨...逆水行舟,不进则退呀。

a=ones(4,2);   % 四行,两列
% 必须是线性无关的向量组
a(:,1)=[1;1;2;3];
a(:,2)=[-1;1;4;-1];

a  % 看看a
a1 = a(:,1)
c=size(a1);  % 去判断a1多少行

b=zeros(c(1),2);    

b(:,1)=a1;   % 根据施密特,b1=a1

for i=2:1:2   % 需要改的是最后一个2,要把它改成共有几个向量的数目,比如说有a3,那么就改成3   
   for j=1:1:i-1 
   b(:,i)=b(:,i)+(-1*dot(b(:,j),a(:,2))/dot(b(:,j),b(:,j)))*b(:,j);
   end
end

n=input('想看第几个正交向量组的向量呢:')
b(:,n)

result


a =

     1    -1
     1     1
     2     4
     3    -1


a1 =

     1
     1
     2
     3

想看第几个正交向量组的向量呢:2

n =

     2


ans =

   -0.3333
   -0.3333
   -0.6667
   -1.0000

>> 

resource


感恩曾经帮助过 心少朴 的人。
matlab优秀,值得学习。基础知识 + 专业知识 + matlab = ?
注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变通之时,自然跳出深坑。

猜你喜欢

转载自blog.csdn.net/yushaopu/article/details/81147736