Python和科学计算认证群组  - 讨论区

标题:满秩矩阵求逆怎么会报错呢?

2012年03月05日 星期一 12:06

报错情况见附图。出错在程序的第40行(红圈标出),接下来的信息提示好像是说错误在Calc_Wsub()函数中,
代码:Ttemp=(T.H*T).I*T.H 的矩阵求逆运算出了问题

报错后,我不信邪,在Consloe中再运行一下ant.Calc_Wsub(),竟无错!(蓝箭头标出)
Ttemp=(T.H*T).I*T.H 这句代码在Console中也无错!(在函数ant.Calc_Wsub()中的实现与Consloe中的[39][40]相同)

另外有两点值得指出:
1.按推导,T.H*T一定是满秩的(可逆的);
2.程序时而报错,时而不报错。(我分析随机性可能是由聚类算法引起(程序第35、36行));

想请教一下,怎么避免这个错误?
还有,我也不知道程序某次运行会不会出错,这种情况该怎么调试?是不是用异常检测,还没学呀

2012年03月05日 星期一 12:09

2012年03月05日 星期一 12:42

出错之后,用IPython的调试功能回溯到出错的语句,看看那几个矩阵的值。

关于这个调试功能,书中第一章有简单的介绍。就是输入debug命令,进入pdb模式。然后输入命令在堆栈中移动,并查看各个变量的值。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号