• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab练习(消去变换及选主元法求逆算法)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

消去变换的定义
消去变换实际上是Gauss-Jordan消去变换(G-J消去变换)的一种紧凑写法,它可以由两步完成,一步是G-J消去变换,另一步是替换,具体更多内容可见高慧璇著的《统计计算》,它的一个更贴近于代码实现的定义如下图所示

可以看到,这个变换很容易实现,只需要就4种不同情况分别定义好相应取值即可,下面是matlab中消去变换的实现

function B = Tij(A,i,j)
[m,n] = size(A);
B = zeros(m,n);
% case 1
B(i,j) = 1/A(i,j);
% case 2
for k = [1:i-1 i+1:m]
  B(k,j) = -1*A(k,j)/A(i,j);
end
% case 3
for k = [1:j-1 j+1:n]
  B(i,k) = A(i,k)/A(i,j);
end
% case 4
for k = [1:i-1 i+1:m]
  for s = [1:j-1 j+1:n]
    B(k,s) = A(k,s) - A(k,j)*A(i,s)/A(i,j);
  end
end
end

选主元法求逆算法
按行选主元法求逆算法具体流程如下图所示,它的证明可以通过置换(可以分解为对换的乘积:$(i_1,i_2,\cdots,i_n)=(i_1\ i_2)(i_2\ i_3)\cdots(i_{n-1}\ i_n)$,从右往左的置换)以及消去变换的性质得到

下面是matlab中的实现

function B = inv_by_Tij(A)
[~,n] = size(A);
B = zeros(n);
C = 1:n;
L = zeros(1,n);
for i = 1:n
  [~,j] = max(A(i,C));
  A = Tij(A,i,C(j));
  L(i) = C(j);
  C(C==C(j)) = [];
end
for i = 1:n
  for j = 1:n
    B(L(i),j) = A(i,L(j));
  end
end
end

总结
消去变换是一种非常有用的方法,其本质仍然是高斯消去变换,不过这种紧凑的“原地求逆”变换一方面节省了存储空间,另一方面也使得它在处理某些问题时会显得非常方便


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
JAVA-数据库之删除记录 - 疯狂delphi发布时间:2022-07-18
下一篇:
PC-改变电脑的CPU,内存,硬盘大小! - 疯狂delphi发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap