[x] Быстрая и ненапряжная по ресурсам работа с матрицами - посоветуйте

maggi14

maddok

Используйте Математику. Система - Celeron 1700, 256 MБ ОЗУ:

n=200;
Timing[
a=IdentityMatrix[n];
b=IdentityMatrix[n];
For[i=1,i<=n,i++,
For[j=1,j<=n,j++,
a[[i,j]]=Random[];
b[[i,j]]=Random[];
];
];
c=a.b;
ev=Eigenvalues[c];
]
{0.859 Second,Null}


n=1000;
Timing[
a=IdentityMatrix[n];
b=IdentityMatrix[n];
For[i=1,i<=n,i++,
For[j=1,j<=n,j++,
a[[i,j]]=Random[];
b[[i,j]]=Random[];
];
];
c=a.b;
ev=Eigenvalues[c];
]
{40.109 Second,Null}

maggi14

спасибо, но, как я понял, 1000х1000 недостаточно. правда, где исполнитель собирается брать память для больших матриц, я не знаю

maddok

Чтобы получить результат быстрее, чем в Математике надо ОЧЕНЬ постараться. То, что Математика быстрее всяких Матлабов, Маткадов, etc. - это 100% (см. например - она в разы быстрее). Так что для твоего знакомого это самое лучшее решение.

lili197602

Про разы - это сильно сказано =). Чтобы получить результат быстрее чем в Математике достаточно взять любой язык программирования более низкого уровня.
По теме, могу посоветовать Math Kernel Library от Intel. Сам с преобразованиями матриц не сталкивался, но преобразование Фурье оттуда самое быстрое из тех которые пробовал (естественно она показывает лучшие результаты на интеловских процессорах).

yolki

Собственные значения - не показатель.
Точных методов для нахождения собственных значений не существует. Они все итерационные = приближённые.
Покажи лучше обращение матрицы. матрицу можно инициализировать как max(i,j)
Оставить комментарий
Имя или ник:
Комментарий: