public static Matrix Parse(string text)
{
string[] arrs = text.Split(new char[] { '[', ';', ']', '\r', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries)
.Where(w => !string.IsNullOrWhiteSpace(w)).ToArray();
int rows = arrs.Length;
double[][] result = new double[rows][];
for (int i = 0; i < rows; i++)
result[i] = arrs[i].Trim().Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => double.Parse(s.Trim())).ToArray();
return new Matrix(result);
}