精华内容
下载资源
问答
  • matlab求解非线性偏微分方程的抛物型方程的追赶法
  • 追赶法算法流程图.doc

    2020-07-02 10:04:36
    追赶法算法流程图 追赶法算法流程图 PAGE / NUMPAGES 追赶法算法流程图 追赶法 开始 开始 输入必要的数据ai(i=1,2,3,n,bi(i=1,2,n)和ci(i=1,2,n-1) 输入必要的数据ai(i=1,2,3,n,bi(i=1,2,n)和ci(i=1,2,n-1) 计算 ...
  • 追赶法的简单MATLAB代码
  • matlab求解三对角矩阵,利用追赶法求解,程序中给了简便的例子
  • 三次样条插值简称Spline,通过取值并求取导数,得到平滑的插值曲线,数值计算课程之一,一般分为一阶导数和二阶导数作为未知数求解两种方法
  • 运用追赶法来解三对角线性方程组MATLAB. 三对角矩阵是一种具有特殊意义的带状矩阵.用差分法求解二阶常微分方程边值问题时,最后常规解为求解具有三对角系数矩阵的线性方程组.对三对角矩阵实行Doolittle(或Crout)...
  • MATLAB追赶法解方程

    2017-04-08 21:10:44
    MATLAB追赶法解方程
  • 内含有追赶法推导过程word文档,以及visual studio2017c++代码和求解结果。
  • 追赶法matlab

    2015-01-07 23:28:10
    matlab 追赶法解方程组m文件
  • 结合一个题目演示了如何自编代码实现高斯消元法和追赶法,各函数文件独立,便于移植,题目附有解答,题目来自西工大数值计算方法作业。
  • MATLAB追赶法求解三对角方程
  • 微分方程数值解中的算法,利用追赶法求解微分方程的数值解,用matlab编程解决
  • 当系数矩阵为三对角矩阵时,利用追赶法求解矩阵方程组Ax=b,效率更高,里面附有详细的注释,新手阅读也没有任何问题
  • ○1高斯-赛德尔迭代法比雅克比的迭代次数少一半多,说明高斯-赛德尔迭代优于雅克比迭代,收敛速度更快,效率更高。但也不绝对,有时也会出现雅克比迭代收敛而高斯-赛德尔迭代不收敛的情况。 ○2SOR的迭代...
  • 应用追赶法求解线性方程组的fortran代码,平台用的是VS2010,IVF开发
  • 计算水力学vb追赶法的计算过程。 最后可以输出txt文件,挺好用的还。
  • 求微分方程中两点边值问题的追赶赴,参考微分方程数值解
  • 追赶法 数值积分

    2018-01-03 16:35:07
    数值积分的追赶法matlab代码,希望对大家数值积分的学习有帮助。
  • 计算方法中的追赶法

    2013-12-16 16:52:02
    计算方法中使用到的追赶法,程序比较简单,如有什么不妥之处还请见谅
  • 追赶法计算断面水位流量,圣维南方程四点隐格式求解
  • 本算法可用于一般的三对角方程组的求解,是经典的用追赶发解方程组的算法
  • 方程组求解追赶法

    2012-11-21 22:30:20
    追赶法是适用于三对角矩阵的线性方程组求解的方法。
  • 追赶法求解带状矩阵

    2018-01-11 14:42:58
    带状矩阵方程组矩阵求解。 追赶法。 生成方程组的系数i u 及其除数i d ,事实上,按式(*)可交替生成i d 与i u :
  • 追赶法实现

    2020-12-26 22:27:32
    1.追赶法 解系数矩阵为对角占优的三对角线方程组 [b1c1a2b2c2⋱⋱⋱an−1bn−1cn−1anbn][x1x2⋮xn−1xn]=[f1f2⋮fn−1fn],\begin{bmatrix} b_1&c_1&&&\\ a_2&b_2&c_2&&\\ &...

    1.追赶法原理

    解系数矩阵为对角占优的三对角线方程组
    [ b 1 c 1 a 2 b 2 c 2 ⋱ ⋱ ⋱ a n − 1 b n − 1 c n − 1 a n b n ] [ x 1 x 2 ⋮ x n − 1 x n ] = [ f 1 f 2 ⋮ f n − 1 f n ] , \begin{bmatrix} b_1&c_1&&&\\ a_2&b_2&c_2&&\\ &\ddots&\ddots&\ddots&\\ &&a_{n-1}&b_{n-1}&c_{n-1}\\ &&&a_n&b_n \end{bmatrix} \begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_{n-1}\\ x_n \end{bmatrix}= \begin{bmatrix} f_1\\ f_2\\ \vdots\\ f_{n-1}\\ f_n \end{bmatrix}, b1a2c1b2c2an1bn1ancn1bnx1x2xn1xn=f1f2fn1fn,
    简记为 A x = f . Ax=f. Ax=f.其中,当 ∣ i − j ∣ > 1 |i-j|>1 ij>1时, a i j = 1 , a_{ij}=1, aij=1,且:
    ∣ b 1 ∣ > ∣ c 1 ∣ > 0 ; | b_1| >| c_1| >0; b1>c1>0;
    ∣ b i ∣ ≥ ∣ a i ∣ + ∣ c i ∣ , a i , c i ≠ 0 , i = 2 , 3 , … , n − 1 | b_i| \ge |a_i| +|c_i|,a_i,c_i\ne0,i=2,3,\ldots,n-1 biai+ci,ai,ci=0,i=2,3,,n1
    ∣ b n ∣ > ∣ a n ∣ > 0. | b_n| >| a_n| >0. bn>an>0.
    A = [ b 1 c 1 a 2 b 2 c 2 ⋱ ⋱ ⋱ a n − 1 b n − 1 c n − 1 a n b n ] [ α 1 γ 2 α 2 ⋱ ⋱ γ n α n ] = [ 1 β 1 1 ⋱ ⋱ β n − 1 1 ] , A=\begin{bmatrix} b_1&c_1&&&\\ a_2&b_2&c_2&&\\ &\ddots&\ddots&\ddots&\\ &&a_{n-1}&b_{n-1}&c_{n-1}\\ &&&a_n&b_n \end{bmatrix} \begin{bmatrix} \alpha_1&&&\\ \gamma_2&\alpha_2&&\\ &\ddots&\ddots&\\ &&\gamma_n&\alpha_n \end{bmatrix}= \begin{bmatrix} 1&\beta_1&&\\ &1&\ddots&\\ &&\ddots&\beta_{n-1}\\ &&&1 \end{bmatrix}, A=b1a2c1b2c2an1bn1ancn1bnα1γ2α2γnαn=1β11βn11,其中 α i , β i , γ i 为 待 定 系 数 . \alpha_i,\beta_i,\gamma_i为待定系数. αi,βi,γi.
    经过分析,求解 A x = f Ax=f Ax=f等价于求解两个三角形方程组:
    ( 1 ) L y = f , 求 y ; (1)Ly=f,求y; (1)Ly=f,y; ( 2 ) U x = y , 求 x . (2)Ux=y,求x. (2)Ux=y,x.
    从而得到解三对角线方程组的追赶法公式:
    (1)计算{ β i \beta_i βi}的递推公式
    β 1 = c 1 / b 1 , β i = c i / ( b i − α i β i − 1 ) , i = 2 , 3 , … , n − 1 ; \begin{aligned} \beta_1&=c_1/b_1,\\ \beta_i&=c_i/(b_i-\alpha_i\beta_{i-1}),i=2,3,\ldots,n-1; \end{aligned} β1βi=c1/b1,=ci/(biαiβi1),i=2,3,,n1;
    (2)解 L y = f Ly=f Ly=f
    y 1 = f 1 / b 1 , y i = ( f i − α i y i − 1 ) / ( b i − α i β i − 1 ) , i = 2 , 3 , … , n ; \begin{aligned} \quad y_1&=f_1/b_1,\\ \quad y_i&=(f_i-\alpha_iy_{i-1})/(b_i-\alpha_i\beta_{i-1}),i=2,3,\ldots,n; \end{aligned} y1yi=f1/b1,=(fiαiyi1)/(biαiβi1),i=2,3,,n;
    (3)解 U x = y Ux=y Ux=y
    x n = y n , x i = y i − β i x i + 1 , i = n − 1 , n − 2 , … , 1. \begin{aligned} x_n&=y_n,\\ x_i&=y_i-\beta_ix_{i+1},i=n-1,n-2,\ldots,1. \end{aligned} xnxi=yn,=yiβixi+1,i=n1,n2,,1.

    2.Python实现追赶法解三对角线方程组

    # 自己原创,注意这里没有做矩阵类型判断,该方法仅适用于解系数矩阵为对角占优的三对角线方程组,P159
    def chasing_thomas(triple_diagonal_matrix: np.ndarray, f_vector: np.ndarray):
        b_diagonal = np.diag(triple_diagonal_matrix)
        c_diagonal = np.diag(triple_diagonal_matrix, k=1)
        a_diagonal = np.diag(triple_diagonal_matrix, k=-1)
        # 计算Bata_i,dtype=np.float64,提高运算精度,否则默认最小精度
        beta_diagonal = np.ones_like(c_diagonal, dtype=np.float64)
        beta_diagonal[0] = c_diagonal[0] / b_diagonal[0]
        rows = triple_diagonal_matrix.shape[0]
        for i in range(1, rows - 1):
            beta_diagonal[i] = c_diagonal[i] / (b_diagonal[i] - a_diagonal[i] * beta_diagonal[i - 1])
        # 解Ly=f
        y = np.ones_like(f_vector, dtype=np.float64)
        y[0, 0] = f_vector[0, 0] / b_diagonal[0]
        for i in range(1, rows):
            y[i, 0] = (f_vector[i, 0] - a_diagonal[i - 1] * y[i - 1, 0]) / (
                    b_diagonal[i] - a_diagonal[i - 1] * beta_diagonal[i - 1])
        # 解Ux=y,自己写的发现第一个解x0=1.,而不是0.8333333333333334,有精度损失,
        x = np.ones_like(f_vector, dtype=np.float64)
        x[rows - 1, 0] = y[rows - 1, 0]
        for i in range(rows - 2, 0, -1):
            x[i, 0] = y[i, 0] - beta_diagonal[i] * x[i + 1, 0]
        return x
    

    3.解三对角线方程

    [ 2 − 1 0 0 0 − 1 2 − 1 0 0 0 − 1 2 − 1 0 0 0 − 1 2 − 1 0 0 0 − 1 2 ] [ x 1 x 2 x 3 x 4 x 5 ] = [ 1 0 0 0 0 ] \begin{bmatrix} 2&-1&0&0&0\\ -1&2&-1&0&0\\ 0&-1&2&-1&0\\ 0&0&-1&2&-1\\ 0&0&0&-1&2 \end{bmatrix} \begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4\\ x_5 \end{bmatrix}= \begin{bmatrix} 1\\0\\0\\0\\0 \end{bmatrix} 2100012100012100012100012x1x2x3x4x5=10000

    4.测试

    if __name__ == '__main__':
    	# 追赶法测试成功,来源详见李庆扬数值分析第5版P177,e.g.9
        # dtype指定为双精度浮点提高运算精度
        tri_diagonal = np.array([[2, -1, 0, 0, 0],
                                 [-1, 2, -1, 0, 0],
                                 [0, -1, 2, -1, 0],
                                 [0, 0, -1, 2, -1],
                                 [0, 0, 0, -1, 2]], dtype=np.float64)
        f = np.array([1, 0, 0, 0, 0], dtype=np.float64).reshape((5, 1))
        print(chasing_thomas(tri_diagonal, f))
    

    5.运行截图

    说明:解向量{ x i x_i xi}为倒序 x 5 , … , x 1 . x_5,\ldots,x_1. x5,,x1.
    其中 x 1 = 5 6 x_1=\frac56 x1=65,由于自己实现方法精度不足,故只输出保留到整数位
    在这里插入图片描述

    展开全文
  • c++追赶法代码

    2012-06-12 11:05:53
    #include using namespace std; class chasing { int m; float *a,*b,*c,*d,*l,*u,*y,*x; public: chasing(); void get_l(); void get_y(); void get_x(); ~chasing(); }; void main() ...}
  • 使用一个链表接收输入矩阵,并对其进行LU分解,最后通过追赶法计算方程组的解。
  • 油藏数模追赶法

    2018-05-09 16:20:57
    赶法”目前比较可靠的来源是下面的文章: Thomas, L.H., Elliptic Problems in Linear Differential Equations over a Network....其中的一个依据是,在国外的文章和教材中,“追赶法”被称为“Thomas算法
  • 追赶法解线性方程组

    2012-06-04 18:46:11
    这是数值计算第二章的第七个程序----追赶法解线性方程组。
  • 运用matlab求解三对角方程组的追赶法原始函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,491
精华内容 2,196
关键字:

追赶法