Math.NET Numerics
Welcome to our official feedback forum. Do you have an idea? Do you recognize a good idea when you see one? We want to hear from you!

151 votes

104 votes

Provide principle component analysis
Extend the linear algebra part with PCA using either Singular Value Decomposition or Eigenvalue Decomposition. Easy implementation, great value!
57 votes 
Add methods for linear and quadratic programming
Linear and quadratic programming methods are great techniques for minimization problems. Other, more complicated methodologies  such as MPC  can built on top of them fairly easily.
53 votes 
42 votes

Add support for surface interpolation (2D, mesh)
Extend the interpolation methods to support 2D surface interpolation, i.e. on a mesh. See http://community.opensourcedotnet.info/forums/t/565.aspx
32 votes 
30 votes

Add MoorePenrose pseudoinverse
This a proposition to add a MoorePenrose pseudoinverse implementation (couldn't find it in Math.net numerics). This example is implemented as a Extension Method to the Matrix<double> class. The pseudoinverse it is computed using the singular value decomposition. The algorithm comes from Wikipedia. Save the code in your project and call Matrix.PseudoInverse()

/*
* ExtensionMethods_2.cs
*
*/using System;
using MathNet.Numerics.LinearAlgebra.Double.Factorization;namespace MathNet.Numerics.LinearAlgebra.Double
{
public static class ExtensionMethods
{
/// <summary>
/// Moore–Penrose pseudoinverse
/// If A = U • Σ • VT is the singular value decomposition of A, then A† = V • Σ† • UT.
/// For…30 votes 
Add Rotation Matrix and Vector classes for 2D, 3D and generic sized spaces
2D and 3D calculations could benefit from optimized functions for Rotation Matrices, 2D and 3D vectors, Solving for Transformation or Rotation Matrices, using Quaternions, and more.
30 votes 
Implement MATLAB's pchip interpolation algorithm
Piecewise Cubic Hermite Interpolating Polynomial
29 votes 
Investigate Mono.Simd
The upcoming Mono.Simd assembly is nearing release. Using these functions in certain areas could give massive performance gains.
28 votes 
Add row echelon and reduced row echelon form computation
Computing reduced row echelon and row echelon form of a Matrix could be used with Gaussian and GaussJordan elimination techniques.
28 votes 
Solve a system of nonlinear equations
aka fsolve of matlab
27 votes 
implement a machine learning library
For modern datascience we need machine learning. Hence for .NET a modern machine learning library would be very welcome, especially one with a good F# interface. It should contain the most used standard algorithms & models like
 clustering: kmeans, spectral clustering, kernel kmeans, gaussian mixture, ...
 classification & regression: (regularized) generalized linear models , neural networks (classic & deep learning), kernel models (SVM, kernel logistic regression,...), probabilistic (max likelihood) & Bayesian methods/graphical models/gaussian processes, decision trees & random forests,...
 ensemble methods (bagging, boosting,...)
 dim reduction (SVD, kernel SVD, manifold learning, sparse representations (L1 regularization),...)
 probabilistic…25 votes 
21 votes

VSLab
I think this is a great project. I am suggesting your library for VSLab (http://www.codeplex.com/vslab). I think that an F# wrapper would be great. Are you interested in contribute with your math library in creating a Matlab like environment? Have a look to the project!
19 votes 
Add stochastic processes
Almost all modern financial analysis are built around stochastic processes. There are many processes, some general like time series and some more specific. It would be very useful for people working in the finance field.
18 votes 
Add support for cuda
Is this possible to split the matrix multiplication algorithms to use processor and gpgpu all at the same time?
It would be an amazing feature to be added.
10 votes 
Performance increase using structs instead of classes?
Hi,
First, congratulations for this ongoing work! I came to Math.Net after attempting to create my own libraries, so here is an idea which my be of a help.The idea would be to use Structs to define matrices instead of Classes to improve performance.
As mentioned above, I did a check with a homemade matrix class and another one being a matrix struct, and for matrices up to 5000X5000 structs are circa 10 times faster for matrix multiplication.
I compared Math.Net with MKL against matlab and it appears to be circa 2 times slower for such matrix sizes. This…
9 votes 
Implement 2D FFT
Extend the FFT class to allow for 2d array. Use MKL to accelerate this.
9 votes
 Don't see your idea?