数值分析北航第一次计算实习任务(福利:附百度云源码java版)

老规矩,先干货

百度云链接:https://pan.baidu.com/s/1FKFbekQH9eNgMxVMsgZWaA 密码:nsuw

稍加说明,这是java版的源码以及上交作业的完整文档,如果你胆子大,可以直接将其作为作业上交,后果自负。云盘文件如下

这套源码解决的问题:

对于第一问:幂法求按模最小特征值,反幂法求按模最大特征值,再利用平移变换的性质求得λ1和λ501。

原理不多说,说说程序,幂法较简单没有编程难点,注意一点:数组下标问题,数组是从0开始的哦

反幂法与幂法大多数情况相同,但是,需要求逆矩阵,对于较低阶的矩阵可以采用直接求余子式的方法求逆矩阵,但是这道题是500多阶,计算机会崩溃的。所以采用LU分解法,先将矩阵进行LU分解成上三角和下三角阵,这种矩阵求逆矩阵非常简单,N-1次迭代即可(在代码里我是直接硬写的,因为上三角下三角好求,所以代码中求逆矩阵的方法可能对于其他非带状矩阵并不适用!带状矩阵进行LU分解)求得L逆和U逆,再进行矩阵乘法即可获得逆矩阵。

对于第二问:也是平移变换,较第一问没有新内容,只是计算量的问题。

对于第三问:谱范数公式cond(A)2 = |λm|/|λs|;按模最大特征值比最小特征值,前面都已经求出来了。

而因此题为带状矩阵,可进行LU分解,L为单位下三角矩阵,U为上三角矩阵,detL=1,则有:detA = det(LU) = detU由于U为上三角矩阵,所以直接计算矩阵U对角线的乘积即可。所以第三问难在如何求,计算量很小。

结果如下:

再次强调,开源的东西后果自负

猜你喜欢

转载自blog.csdn.net/qq_36187544/article/details/83895799
今日推荐