прога:решение линейной системы

andlav

У кого есть написанная-срочно нада

kliM

у меня есть обращение матрицы через LU-разложение на Ц++

kliM

вот: дарю забесплатно


template<class T>
void LUFactorization(const arraymd<T>& A, arraymd<T>& LU)
{
ASSERT(A.ndims==2);
int n=A.width;
ASSERT(n==A.height;
LU.resize(n, n);
for(int k=0;k<n;k++)
{
int i;
for(i=k;i<n;i++)
{
T sm=A(k,i);
for(int m=0;m<k;m++)
sm-=LU(i,m)*LU(m,k);
LU(i,k)=sm;
}
T s=T(1)/LU(k,k);
for(i=k+1;i<n;i++)
{
T sm=A(k,i);
for(int m=0;m<k;m++)
sm-=LU(k, m)*LU(m,i);
LU(k,i)=sm*s;
}
}
}
template<class T>
void MatrixInvertion(const arraymd<T>& A, arraymd<T>& B)
{
arraymd<T> LU; // LU(i,j)=L_ij: i<j, LU(i, j)=U_ij : i>=j
int n=A.width;
B.resize(n, n);
LUFactorization(A, LU);
std::fill(B.begin B.end T;
for(int k=0;k<n;k++)
{
B(k,k)=T(1);
int i;
for(i=0;i<n;i++)
{
T sm=B(i, k);
for(int m=0;m<i;m++)
sm-=LU(m, i)*B(m,k);
B(i,k)=sm;
}
for(i=n-1;i>=0;i--)
{
T sm=B(i, k);
for(int m=i+1;m<n;m++)
sm-=LU(m, i)*B(m,k);
B(i,k)=sm/LU(i,i);
}
}
}

Оставить комментарий
Имя или ник:
Комментарий: