利用递归求解行列式

利用递归求解行列式(适用于10阶左右)
**那么何为递归呢?**递归是利用某种方法将一个大问题不断分解为规模较小的子问题,持续分解,直到规模小到可以用非常简单直接的方法解答。
***那么如何设计递归程序呢?***这里提出三条指导设计递归程序的方法。1递归算法必须有一个基本结束条件。2递归算法必须能改变状态向基本结束条件演进。3递归算法必须调用自身。

基于此,那就开始我们的正题,利用递归计算行列式。在这里我们如何把一个大规模的行列式逐渐减小规模,使其利于计算,这时,拉普拉斯定理就起了非常重要的作用。拉普拉斯定理:设在行列式D中任意取定了k(1<=k<=n-1)行,由这k行元素所组成的一切k阶子式与它们的代数余子式的的乘积的和等于行列式D。
matlab 程序如下:
function s=fdet(L)
n=length(L);
s=0;
if n<=1
s=sum(L);
else
for i=1:n
M=[L(2:n,1:i-1),L(2:n,i+1:n)];
s=s+L(1,i)*(-1)^(1+i)*fdet(M);
end
end
验证 :
L=[1,4,5,2;5,4,12,23;11,42,12,23;14,11,4,5];
disp(fdet(L))
-39136

disp(det(L))%matlab 内置函数。
-39136
当然,基于递归算法求解行列式的运算量是十分巨大的,这也就决定了这种方法只能用来算低阶行列式,高阶情况下运算量太大,短时间内难以得出结果。
想要学习更多相关知识,扫描下方二维码,关注公众号Math and Code吧!
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值