对于三维对角矩阵算法的编程和苦苦挣扎,我是一个新手。
三角形矩阵形成一个双阵列,第一级长度为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;
}