数值分析的Python实现
鹰皇
这个作者很懒,什么都没留下…
展开
-
Aitkin加速算法求解线性收敛的方程的根的Python实现
Aitkin加速算法可对线性收敛的简单迭代法起到加速作用由于(x(k+1)-x*)=phi’(m1)(x(k)-x*),m1是介于x(k)与x之间的一个值(x(k+2)-x)=phi’(m2)(x(k+1)-x*),m2是介于x(k+1)与x之间的一个值在需要求的方程f(x)=0的左右两端各加一个x,即得到新方程phi(x)=x若phi’(m1)≈phi’(m2),则有(x(k+1)-...原创 2019-02-16 08:37:24 · 989 阅读 · 0 评论 -
Newton迭代法与Newton下山法的Python实现
Newton迭代法是利用Taylor展开将f(x)线性化,忽略二次导及以上的高阶项,得到x*=x0-f(x0)/f’(x0),令x*=x(k+1),x0=x(k),重复迭代Newton又称切线法Newton下山法是在考虑到Newton法在区间内可能是发散的,因而增加一项参数l,要求abs(f(x(k)))在迭代时具有单调性,若不具有单调性,则令l减半例子同前代码如下# -*- codin...原创 2019-02-16 20:45:19 · 3415 阅读 · 0 评论 -
平方根法求解正定矩阵的线性方程组的Python实现
平方根法求解正定矩阵的线性方程组的Python实现定理:对线性方程组Ax=b,若A唯正定矩阵,则有唯一分解A=LU,且U的对角线元素大于0,而U可以进一步分解为一个对角矩阵D与一个上三角矩阵的乘积,设为U=DM,进而A=LDM,又由于A是一个正定矩阵,因此A’=(LDM)’=M’DL’=A=LDM,于是有M=L’,即A=LDL’,令D=D^0.5 * D0.5,再令G=L*D0.5,则有A=G*...原创 2019-02-11 19:52:29 · 4079 阅读 · 2 评论 -
追赶法求解三对角矩阵线性方程组的Python实现
追赶法是求大型稀疏方程之三对角线性方程组的三角分解方法,即求解方程组Ax=b,其中A为三对角矩阵,主对角线上的元素记为(a1, a2, …, an) ,紧贴主对角线上方的一根对角线上的元素记为(c1,…c(n-1) ),紧贴主对角线下方的一根对角线上的元素记为(d2, d3, …, dn),b=(b1,…bn)对三对角矩阵A进行Crout分解,有A=[[α1 0 0 0 ....... ...原创 2019-02-12 10:18:20 · 8764 阅读 · 4 评论 -
Doolittle分解法(LU分解法)的Python实现
在解一般的非奇异矩阵线性方程组的时候,或者在迭代改善算法中,需要使用LU分解法。对于一个一般的非奇异矩阵A=(a11, a12,…,a1n,a21,…ann),可分解为一个下三角矩阵L和一个上三角矩阵U。其中L的主对角线元素都是1.希望得到一个M,最后在需要的时候将M拆分为L和UM=[[u11 u12 u13 ...... u1n l21 u22 u23 ...... u2n ...原创 2019-02-12 14:01:19 · 7327 阅读 · 3 评论 -
Jacobi迭代法的python实现
设有线性方程组Ax=b,其中n阶矩阵A=(aij)使非奇异矩阵将A分解为A=M-N,因而Mx=Nx+b,求解Ax=b转化为求解x=M的逆Nx+M的逆b可构造一阶梯定常迭代法x(k+1)=Bx(k)+f令A=D-L-U,其中D是有A的主对角元组成的对角矩阵,L是A的下三角矩阵每一行乘以-1,U是A的上三角矩阵每一行乘以-1Jacobi迭代法中,令M=D,A=D-N,因而B=M的逆N=M的逆(...原创 2019-02-13 10:24:49 · 4670 阅读 · 4 评论 -
Gauss-Seidel迭代法的Python实现
Gauss Deidel迭代法与Jacobi迭代法无本质区别,唯一的区别是,Jacobi算法需要将一个完整的数组x=(x11,x12,…,x1n)迭代算出x21,仍使用x=(x11,x12,…,x1n),直到算出x2n,凑出下一个完整的x=(x21,x22,…,x2n),而Gauss Seidel迭代法则是在利用x=(x11,x12,…,x1n)算出x21之后,直接将x21代入x,变为x=(x21...原创 2019-02-14 08:06:38 · 3337 阅读 · 0 评论 -
超松弛迭代法(SOR)的Python实现
在Gauss-Seidel迭代法中M=D-L的基础上,我们令M=(1/w)(D-wL),B=I-M的逆A,f=M的逆b,其中w为可选择的松弛因子,要求w>0于是M的逆=w((D-wL)的逆),B=I-M的逆A=I-w((D-wL)的逆)A=((D-wL)的逆)((1-w)D+wU)从而得到解方程组的SOR解法B=I-M的逆A=I-w((D-wL)的逆)A=((D-wL)的逆)((1-w...原创 2019-02-14 10:42:26 · 5122 阅读 · 0 评论 -
J,GS,SOR算法解线性方程组的收敛性判别的Python实现
迭代过程是收敛的的充要条件是矩阵B收敛于0,矩阵B收敛于0的充要条件是矩阵B的谱半径小于1于是在前述J,GS,和SOR算法中的main()函数中可以加入一项判别式,从而判断线性方程组迭代法是否能够算出解例如在前述SOR算法的main()中,代码如下import numpy as npdef judgement(A,B): if np.linalg.det(A)==0: ...原创 2019-02-14 13:43:19 · 2595 阅读 · 0 评论