LU分解版本3_选主元、进行本地存储

LU分解版本3_选主元、进行本地存储


function ex2_7_3
%对系数矩阵A进行LU分解
%【自己写的版本,采用原地存储方式,进行选主元】
%将L矩阵和U矩阵输出,

 A = [10 -7 0;
      -3 2 6;
      5 -1 5];
 %对系数矩阵A进行LU分解,最终得到L 和 U矩阵
 %初始化L和U矩阵.
 L = [0 0 0;
      0 0 0;
      0 0 0];
 U = [0 0 0;
      0 0 0;
      0 0 0];
  [n,n] = size(A);
  for k = 1:1:n
      %%
       % 在计算乘子之前,进行选主元
       [m,q] = max(abs(A(k:n,k)));
       % q返回的是一个行号,q的值是一个相对的值,当k=1时,q的值是相对k-1,而言的,
       % 当k等于2的时候,q的值是相对于k-1而言的。
       q = q + k - 1;
       % 选主元
       if(k ~= q)
           % 当k!=q之后,说明主元所在列的最大值不是当前行,需要进行行交换,
           % A(k,:) = A(q,:);===>这样写行交换的代码居然不对!不是有种方法不需要,中间变量吗!
           B = A(k,:);
           A(k,:) = A(q,:);
           A(q,:) = B;
       end
      %%
      i = k+1:n;
      %计算乘子,将乘子填入到A矩阵的第(2、3)行,第1列
      A(i,k) = A(i,k)/A(k,k);
      %更新系数矩阵A,就是将A的第一行乘以相应的乘子的相反数,加到第二行和第三行
%     j = k:n;
      A(i,i) = A(i,i) - A(i,k)*A(k,i);
  end
  A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值