Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Уменьшить невязку
Аватара пользователя
Здравствуйте. У меня написана программа по поиску обратной матрицы с помощью присоединенной единичной матрицы. Программа работает хорошо , только вот на матрице Гильберта при размере 12 , невязка равняется 1.7 , а нужно , чтобы она была меньше единице. Невязка равняется норме ( максимальная сумма по столбцам) от матрицы $(AA^{-1} - E )$. Пробовал перемножать матрицы в другом порядке. Пробовал считать норму по другому ( максимальная сумма по срокам). Невязка меньше не становится. Привожу код функции , которая находит обратную матрицу:
Код:
int obrat(double *a, int n);
int obrat(double *a, int n)
{
    int i,j,i_1,i_2; double w=0;
    for(i=0;i<n;i++)
    {
        w=a[i*2*n+i];
        if(fabs(w)< MIL )
            return -1;
        a[i*2*n+i]=1;
        for(j=i+1;j<2*n;j++)
        {
            a[i*2*n+j]=a[i*2*n+j]/w;
        }
        for(i_1=0;i_1<n;i_1++)
        {
            if(i_1==i)
                continue;
            for(i_2=i;i_2<2*n;i_2++)
            {
                if(i_2==i)
                    w=a[i_1*2*n+i];
                a[i_1*2*n+i_2]-=a[i*2*n+i_2]*w;
            }
        }
    }
    return 0;
}

 Re: Уменьшить невязку
Странные, имхо, попытки. Матрица Гильберта — стандартный тест на поведение алгоритмов с плохообусловленными матрицами. Если ваша программа плохо с такими работает, естественным было б повышать точность (действительные числа многократной точности; рациональные числа; рациональные числа многократной точности; итерационные алгоритмы), а не манипулировать с понятием нормы. Если не хочется переписывать программу, возьмите за норму, скажем, одну сотую любой из норм — как понимаю, аксиомам нормы такая функция вполне себе будет удовлетворять.

 Re: Уменьшить невязку
Аватара пользователя
Лучше алгоритм менять - а то он какой-то "прямлинейно-плохой". Кажется, он накроется на матрице $$\begin{pmatrix}
1 & 0 & 0\\
0 & 0 & 1\\
0 & 1 & 0
\end{pmatrix}$$

 Re: Уменьшить невязку
Аватара пользователя
iifat При манипулирование с нормой и с перестановкой умножения , норма уменьшилась с 3,5 до 1,7 .
Geen Предполагается, что если на диагонали стоит ноль , то метод не применим.

 Re: Уменьшить невязку
Аватара пользователя
fiztech
fiztech в сообщении #1016868 писал(а):
При манипулирование с нормой и с перестановкой умножения , норма уменьшилась с 3,5 до 1,7 .

И что с того? Какие бывают погрешности, от чего они зависят?

 Re: Уменьшить невязку
Аватара пользователя
Всем спасибо , разобрался.

 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group