三对角矩阵算法/ Thomas算法问题

时间:2016-11-13 17:01:52

标签: java arrays algorithm matrix multidimensional-array

对于三维对角矩阵算法的编程和苦苦挣扎,我是一个新手。

三角形矩阵形成一个双阵列,第一级长度为3,第二级长度分别为n-1,n和n-1

代码编译但不生成正确的向量。想知道是否有人能发现错误。公式中也存在0问题的可分性,是否有某种方法可以解决这个问题?我在其他语言中看到过这种算法,但是我没有足够的经验来看错误!谢谢你的帮助

static double [] linearSolve( double [][] T, double [] v)
{
    double []x ;
    x= new double [v.length];

    if (T== null || v == null)
    { 
        x = null;
    }
    else if (isValidTridiagonal(T)== true && v.length==T[1].length) 
    { 

        T[0][0]=T[0][0]/T[1][0];
        v[0]= v[0]/T[1][0];
        x = new double [v.length];

        for (int j=1;j<v.length-1;j++)
        {


            double d = 1.0/(T[1][j]-(T[0][j-1]*T[2][j]));
            T[0][j]= T[0][j]*d;
            v[j]= v[j]-(T[2][j]*v[j-1]*d);
        }

        x[v.length-1]=v[v.length-1];
        for(int j=v.length-2;j!=-1;j--)
        {
            x[j]=v[j]-T[0][j]*x[j+1];
        }
        return x;

    }
    else
    {
        x =null;
    }
    return x;
}

0 个答案:

没有答案