Реализация алгоритма SVD
Кто-нибудь знает хорошую масштабируемую реализацию SVD на C# для очень большой матрицы?
2 ответа
http://ilnumerics.net/, кажется, имеет SVD среди других вещей.
Каркасы
.NET 1.1, .NET 2.0, доступна в ближайшее время: моно 1.2.3
Языки
все CLI соответствуют: C# (рекомендуется), управляемый C++, Visual Basic ...
Массив объектов
* Full OO class design * Generic typed container classes * single object for arbitrary array dimensions: scalar, vector, matrices, n-dim arrays * full support for flexible array modification: subarray-/ creation, concatenation, dimension removal, serialization * automated reference management: copy memory only if really needed * support for cells and logical arrays
Числовые
* Supports all numeric types as array elements: double, float, complex, fcomplex, int16, int32,
int64, uint16, uint32, uint64, char, byte, bool * операторные перегрузки (A + B,...) * статические операторные функции (например, Add(a,b)) * поддержка специальных числовых состояний (NaN, +/-Inf)
Оптимизация для процессора
* BLAS, LAPACK * AMD: ACML, Intel: MKL, general: netlib * Automated detection
Алгебраические функции
* abs * acos * add * all * any * asin * (more...)
Линейная алгебра
* matrix multiply, -inverse, -pseudo inverse * linear equation solver * decompositions: LU,QR,SVD,Cholesky * eigenvalues, eigenvectors
Преобразования Фурье
* 1,2,3...n dimensional * transforms forward & backwards * supported libraries: Intel MKL, AMD ACML, FFTW3 * 100% octave/Matlab/Scilab compatible interface
Сортировка
* Sorting of strings (lexicographical, bucket sort) * Sorting of numeric data (quick sort) * generic sorting of arbitrary user defined types by definable keymapper (bucket sort)
Обработка ошибок
* typed exceptions
Алгоритм базовых классов
* synchronous / asynchronous * easily extendable for user defined derived algorithms * full Windows.Forms.Control compatible multiple thread eventing
служба поддержки
Зрительные
* Plot panels, derived from Windows.Forms.Control * Plot dialog forms * 1D, 2D, 3D data plots * Based on OpenGL. (DirectX: deprecated) * Highly configurable graphs/figure properties * Automatic user interaction: rotation, zoom, auto axis scaling
Разнообразный
* Visual Studio 2005(R) AddIn: extends watch tool window * import from / export to Matlab(R) *.mat files * syntax vastly compatible to Matlab(R) (function naming, parameter) * determination of extended machine properties, numerical constants * Memory pool: automated recycling of large objects
Мы довольно успешно использовали библиотеку NAG с "большими" матрицами (4000x4000).
Это не управляемый код, но с использованием P/Invoke у нас не было проблем.
Есть версия для 32-битной и 64-битной Windows (также пара вариантов UNIX). Существуют также специальные версии MKL (Intel Math Kernel Library) и AMCL (AMD Math Core Library), которые должны лучше использовать несколько процессоров в системах x64.
Это тоже не бесплатно, если это проблема.