Meta Numericshttp://metanumerics.codeplex.com/project/feeds/rssThe Meta.Numerics math and statistics library supports scientific computing on the .NET platform. It offers an object-oriented API for matrix algebra, advanced functions of real and complex numbers, signal processing, and data analysis.Source code checked in, #73511http://metanumerics.codeplex.com/SourceControl/changeset/73511Pochhammer function. Significant work on hypergeometric function. Minor improvements to some complex functions. Make UnvertainValue immutable.ichbinSun, 12 Mar 2017 09:05:18 GMTSource code checked in, #73511 20170312090518ASource code checked in, #73508http://metanumerics.codeplex.com/SourceControl/changeset/73508Add complex asin and acos, improve Complex operations at extreme ranges, adapt evaluation defaults and add IntegrationSettings.ichbinMon, 30 Jan 2017 05:53:02 GMTSource code checked in, #73508 20170130055302ANew Post: .NET Standard versionhttp://metanumerics.codeplex.com/discussions/660878<div style="line-height: normal;">BTW, I have an example project.json file here, allowing for simultaneous builds of .NET Standard 1.0, .NET Framework 2.0 and PCL profile 328 instances of the csmpfit library. <a href="https://github.com/cureos/csmpfit/blob/master/src/csmpfit/project.json" rel="nofollow">https://github.com/cureos/csmpfit/blob/master/src/csmpfit/project.json</a>
<br />
<br />
The project.json format is on its way out again though, and I don't know right now how the similar arrangement can be obtain with the new .csproj file format.<br />
</div>cureosThu, 26 Jan 2017 11:25:09 GMTNew Post: .NET Standard version 20170126112509ANew Post: .NET Standard versionhttp://metanumerics.codeplex.com/discussions/660878<div style="line-height: normal;">Thanks for the response, David!<br />
<br />
Targeting 1.1 rather than 1.0 might not be a big win more than from a principal point-of-view, the only additional supported platform on 1.0 is Windows Phone Silverlight 8. As far as I understand, Silverlight 5 is not supported by any .NET Standard profile, probably because its close links to .NET 4.0.<br />
<br />
BTW, moving to .NET Standard will invalidate the support for .NET Framework 4.0 as well. Do you plan to provide an additional build for .NET 4.0, or will you discard 4.0 from now on?<br />
<br />
If you want to maintain .NET 4.0 support alongside .NET Standard support, you might want to consider providing an additional PCL profile 328 build for that purpose. PCL profile 328 is the most compatible "old-school" cross platform profile, including support for .NET Framework 4.0 and Silverlight 5. The only code changes you need to make right now to build a PCL profile 328 library is to comment out (e.g. using compiler directives) the [assembly:ComVisible(false)] and [assembly:Guid(...)] attributes in AssemblyInfo.cs, and comment out the two [MethodImpl(MethodImplOptions.AggressiveInlining)] lines in RectangularMatrixAlgorithms.cs.<br />
<br />
(Of course, with a pure .NET Framework 4.0 build you don't need to make any of these changes :-) )<br />
<br />
Best regards,<br />
Anders<br />
</div>cureosThu, 26 Jan 2017 11:20:16 GMTNew Post: .NET Standard version 20170126112016ANew Post: .NET Standard versionhttp://metanumerics.codeplex.com/discussions/660878<div style="line-height: normal;">Hi Anders,
<br />
<br />
Thanks for pointing this out. I had actually picked 1.1 not because of the Guid attribute, but because the table at <a href="https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/" rel="nofollow">https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/</a> doesn't make clear which desktop framework would run with a 1.0 library. When release time gets closer, I will be careful to use the lowest standard version consistent with requirements. The Guid attribute is probably not a requirement, but there are a lot of hosting scenarios (SQL CLR, Windows App Store, etc.) that impose their own special requirements on assemblies, so I would need to do little more work to say that more confidently.
<br />
<br />
Do you have a particular scenario, such as a Silverlight app, that would work with a 1.0 library but not a 1.1 library?
<br />
<br />
Regards,
<br />
David
<br />
<br />
By the way: I have not forgotten your desire for local optimization to support boundary constraints!<br />
</div>ichbinWed, 25 Jan 2017 20:52:59 GMTNew Post: .NET Standard version 20170125085259PNew Post: .NET Standard versionhttp://metanumerics.codeplex.com/discussions/660878<div style="line-height: normal;">Hi ichbin,
<br />
<br />
It's really great to see that you are moving over to a more portable solution, by adopting .NET Standard.
<br />
<br />
I had a look in the latest source code commit, and I notice that you are currently targeting .NET Standard 1.1.
<br />
<br />
Are you aware that you can target .NET Standard 1.0 with one simple change in the AssemblyInfo.cs file?
<br />
<br />
If you just exclude the [assembly:Guid(...)] line, the Numerics library can be successfully built for .NET Standard 1.0.
<br />
<br />
As far as I understand this would be an acceptable change; after all, ComVisible is anyhow set to false. Or do you have other reasons for maintaining the Guid?
<br />
<br />
Thanks in advance for considering this!
<br />
<br />
Best regards,
<br />
Anders @ Cureos<br />
</div>cureosMon, 23 Jan 2017 12:39:28 GMTNew Post: .NET Standard version 20170123123928PNew Post: linear regression with 3 pointshttp://metanumerics.codeplex.com/discussions/660779<div style="line-height: normal;">Hi sdecorme,
<br />
<br />
It's quite easy to do a three-point linear regression. Here is some code:<br />
<pre><code> BivariateSample sample = new BivariateSample();
sample.Add(0, 0);
sample.Add(100, 100);
sample.Add(x, y);
LinearRegressionFitResult result = sample.LinearRegression();</code></pre>
When it returns, result will contain data about the best-fit line and goodness of fit.
<br />
<br />
If you are looking for analytic formulas for a and b as functions of x and y, you won't get that from a numerical library. But it's not hard to derive such a formula using the formulas for a and b as functions of input points that you can find in any textbook that covers linear regression.<br />
</div>ichbinThu, 19 Jan 2017 21:44:42 GMTNew Post: linear regression with 3 points 20170119094442PCreated Unassigned: Interval functionality [8153]http://metanumerics.codeplex.com/workitem/8153Please, methods imply such method:<br /><br />Contains(double x, IntervalBraces braces)<br />{<br /> switch (braces)<br /> {<br /> case.IncludeNone: return ((x > a) && (x < b));<br /> case.IncludeLeft: return ((x >= a) && (x < b));<br /> case.IncludeRight: return ((x > a) && (x =< b));<br /> case.IncludeBoth: return ((x >= a) && (x =< b));<br /> }<br />}<br /><br />enum IntervalBraces<br />{ IncludeNone, IncludeLeft, IncludeRight, IncludeBoth }<br />valebezmaThu, 19 Jan 2017 09:55:48 GMTCreated Unassigned: Interval functionality [8153] 20170119095548ANew Post: linear regression with 3 pointshttp://metanumerics.codeplex.com/discussions/660779<div style="line-height: normal;">Hi,
<br />
I need to get the formula of a 3 points curves
<br />
The extrem points are fixed (0,0) and (100,100) and the middle points move from (0,0)to (100,100).
<br />
The middle point is not linear and can be anywhere between the 2 extrems points.
<br />
As input for my formula I have a value that move from 0 to 100.
<br />
On the image you can see the middle point is at X=23 and Y=5.
<br />
<img src="http://www.tiikoni.com/tis/view/?id=c834d60" alt="Image" /><br />
</div>sdecormeWed, 18 Jan 2017 14:13:26 GMTNew Post: linear regression with 3 points 20170118021326PSource code checked in, #73506http://metanumerics.codeplex.com/SourceControl/changeset/73506Add another term in Kolmogorov asymptotic series, simplify complex square root implementation.ichbinTue, 17 Jan 2017 02:04:33 GMTSource code checked in, #73506 20170117020433AUpdated Wiki: Advancedhttps://metanumerics.codeplex.com/wikipage?title=Advanced&version=4<div class="wikidoc">"Special functions" are functions that appear in the solution of many advanced science and engineering problems, but aren't common enough to have reached the typical high school curriculum, or the .NET Framework's System.Math class. They are typically the value of some integral, or the solution to some differential equation, or the sum of some infinite series, and sometimes all three. The Meta.Numerics library can compute the values of more than 50 special functions. Nearly all are computed a full precision and most are returned only a little slower than "standard functions" like the logarithm.<br /><br />Like the System.Math functions, the special functions are simple static methods of static utility classes. They are in the Meta.Numerics.Functions namespace.<br /><br />The special functions of real numbers are members of the AdvancedMath or OrthogonalPolynomials classes.<br /><br />Here is a C# example that computes an inverse error function:<br /><br /><div style="color:Black;background-color:White;"><pre>
<span style="color:Blue;">using</span> Meta.Numerics.Functions;
<span style="color:Blue;">double</span> y = 0.75;
<span style="color:Blue;">double</span> x = AdvancedMath.InverseErf(y);
</pre></div><br />For special functions that are solutions of hypergeometric differential equations, such as Bessel functions, modified Bessel functions, Airy functions, and Coulomb wave functions, there are overloads that return both regular and irregular solutions and their derivatives in a single, optimized call.<br /><br /><div style="color:Black;background-color:White;"><pre>
<span style="color:Blue;">using</span> Meta.Numerics.Functions;
<span style="color:Blue;">int</span> L = 2;
<span style="color:Blue;">double</span> eta = -3.4;
<span style="color:Blue;">double</span> rho = 5.6;
SolutionPair s = AdvancedMath.Coulomb(L, eta, rho);
</pre></div><br />The special functions of complex numbers are members of the AdvancedComplexMath class.<br /><br />Here is a C# example that computes the complex Riemann zeta function:<br /><br /><div style="color:Black;background-color:White;"><pre>
<span style="color:Blue;">using</span> Meta.Numerics.Functions;
Complex z = <span style="color:Blue;">new</span> Complex(1.0, 2.0);
Complex zeta = AdvancedComplexMath.ReimannZeta(z);
</pre></div><br />The special functions of integers are members of the AdvancedIntegerMath class.</div><div class="ClearBoth"></div>ichbinMon, 09 Jan 2017 23:05:53 GMTUpdated Wiki: Advanced 20170109110553PSource code checked in, #73505http://metanumerics.codeplex.com/SourceControl/changeset/73505Support matrix storge with arbitrary rowStride and colStride. This allows us to return read-only Q and R from QR decomp, and L and R from SVD decomp, quickly and without copying, so make them properties. We could do this with Transpose, Row, and Column, but there are complications and it might be unexpected, so leave alone for now. Also add more matrix tests.ichbinSat, 07 Jan 2017 23:43:07 GMTSource code checked in, #73505 20170107114307PSource code checked in, #73504http://metanumerics.codeplex.com/SourceControl/changeset/73504First 4.0 check-in: IntegerPartition class with multiplicity representation, conjugation, rank.ichbinThu, 05 Jan 2017 20:07:19 GMTSource code checked in, #73504 20170105080719PCommented Unassigned: Singular Value Decomposition [8146]http://metanumerics.codeplex.com/workitem/8146Singular Value Decomposition<br />I miss the method for solving a*x = b, similar to LU and Cholesky decomposition. Unfortunately I am a beginner in C# and I have helped myself with a solution from Numerical Recipes:<br /> SingularValueDecomposition SVD = a.SingularValueDecomposition();<br /> for (k = 0; k < n; k++)<br /> {<br /> w[k] = SVD.SingularValue(k);<br /> }<br /><br /> U = SVD.LeftTransformMatrix();<br /> V = SVD.RightTransformMatrix();<br /><br /> thresh = -1.0;<br /> if (thresh <= 0.0)<br /> {<br /> thresh = 0.5 * Math.Sqrt(m + n + 1.0) * w[0] * eps;<br /> //Console.WriteLine(thresh);<br /> }<br /><br /> for (j = 0; j < n; j++)<br /> {<br /> s = 0.0;<br /> if (w[j] > thresh)<br /> {<br /> for (i = 0; i < m; i++)<br /> {<br /> s += U[i, j] * b[i];<br /> }<br /> s /= w[j];<br /> }<br /><br /> tmp[j] = s;<br /> }<br /> for (j = 0; j < n; j++)<br /> {<br /> s = 0.0;<br /> for (jj = 0; jj < n; jj++)<br /> {<br /> s += V[j, jj] * tmp[jj];<br /> }<br /> x[j] = s;<br /> }<br /><br />Would it not make sense to include a –of course probably better- solution method into Meta Numerics.<br />Best Regards,<br />MetaNumKL<br />Comments: ** Comment from web user: MetaNumKL ** <p>ichbin,<br>Don't you have the feeling that your behavior towards a customer of Meta Numerics is rather strange?</p><p>Why should it not be discussed to extend Meta Numerics' SVD class by a solver method? Or have I overlooked something in the documentation? </p><p>As I said before, Numerical Recipes (NR) offers it. It was not too difficult to convert NR's C++ solution for SVD to C# ( For my project I have a license for using programs from NR). This converted version works and my solution shown above together with the SVD class from Meta Numerics works as well. Am I completely wrong that such a solution is one of the standard applications for SVD?</p><p>Best regards,<br>KL</p>MetaNumKLWed, 04 Jan 2017 10:19:23 GMTCommented Unassigned: Singular Value Decomposition [8146] 20170104101923ASource code checked in, #73503http://metanumerics.codeplex.com/SourceControl/changeset/73503Branched from $/metanumerics/NumericsichbinMon, 02 Jan 2017 06:49:52 GMTSource code checked in, #73503 20170102064952AUpdated Wiki: Plans for 4.0https://metanumerics.codeplex.com/wikipage?title=Plans for 4.0&version=5<div class="wikidoc"><h1>Breaking Changes</h1>
<ul><li>Move to github. I'm actually perfectly happy with CodePlex, but the writing is on the wall and github has more eyeballs.</li></ul>
<ul><li>Target .NET Core.</li></ul>
<ul><li>Add an IntegerPartition class that supports both views of a partition (1+1+ 3 and 2 * 1 + 1 * 3), and useful properties and functions such as Rank and Conjugate.</li></ul>
<ul><li>Change default EvaluationSettings so default RelativePrecision and AbsolutePrecision are -1, and individual method change -1 values to their defaults. When first created, EvaluationSettings was only for 1D Integrate, and the defaults are appropriate for that method. If you wanted to change just one property, e.g. EvaluationBudget, you would new up an EvaluationSettings, change that property, pass it to Integrate, and the other properties would still have their default values. But now EvaluationSettings is used for all sorts of other methods that have other defaults. If you want to change just EvaluationBudget for them, you need to new up an EvaluationSettings, change that property, and then... unless you want to use Integration's defaults for the other properties, you need to change them too. And even figuring out what they are isn't trivial. So instead we will set them all to -1 and let the individual methods override -1s.</li></ul>
<h1>Additional Features</h1>
<ul><li>Add specific FitResults for all fit methods. These objects should give (i) direct access to named parameters, so users don't need to remember which parameter has which index, (ii) residuals, if applicable, (iii) ANOVA analysis, if applicable.</li></ul>
<ul><li>Add specific EvaluationSettings for all function analysis methods. These objects should expose listeners that give intermediate results and additional settings specific to the kind of analysis.</li></ul>
<ul><li>More time series functionality, including full ARIMA fits and population power spectra estimates with uncertainties.</li></ul>
<ul><li>Submatrices. For examle: given say a 100 X 200 RectangularMatrix, get a 20 X 10 RectangularMatrix that addresses the same storage as the 10...30 X 50...60 elements of the original matrix.</li></ul>
<br /></div><div class="ClearBoth"></div>ichbinTue, 27 Dec 2016 04:12:51 GMTUpdated Wiki: Plans for 4.0 20161227041251ACreated Feature: Zeros of Bessel functions [8148]http://metanumerics.codeplex.com/workitem/8148BesselJZero(double nu, int n) -> nth zero of J_{\nu}(x)<br />BesselYZero(double nu, int n) ->nth zero of Y_{\nu}(x)<br />AiryAiZero(int n) -> nth zero of Ai(x)<br />AiryBiZero(int n) -> nth zero of Bi(x)<br />ichbinTue, 27 Dec 2016 03:51:42 GMTCreated Feature: Zeros of Bessel functions [8148] 20161227035142AUpdated Wiki: Plans for 4.0https://metanumerics.codeplex.com/wikipage?title=Plans for 4.0&version=4<div class="wikidoc"><h1>Breaking Changes</h1>
<ul><li>Move to github. I'm actually perfectly happy with CodePlex, but the writing is on the wall and github has more eyeballs.</li></ul>
<ul><li>Target .NET Core.</li></ul>
<ul><li>Add an IntegerPartition class that supports both views of a partition (1+1+ 3 and 2 * 1 + 1 * 3), and useful properties and functions such as Rank and Conjugate.</li></ul>
<h1>Additional Features</h1>
<ul><li>Add specific FitResults for all fit methods. These objects should give (i) direct access to named parameters, so users don't need to remember which parameter has which index, (ii) residuals, if applicable, (iii) ANOVA analysis, if applicable.</li></ul>
<ul><li>Add specific EvaluationSettings for all function analysis methods. These objects should expose listeners that give intermediate results and additional settings specific to the kind of analysis.</li></ul>
<ul><li>More time series functionality, including full ARIMA fits and population power spectra estimates with uncertainties.</li></ul>
<ul><li>Submatrices. For examle: given say a 100 X 200 RectangularMatrix, get a 20 X 10 RectangularMatrix that addresses the same storage as the 10...30 X 50...60 elements of the original matrix.</li></ul>
<br /></div><div class="ClearBoth"></div>ichbinTue, 27 Dec 2016 03:25:53 GMTUpdated Wiki: Plans for 4.0 20161227032553AUpdated Wiki: Plans for 4.0https://metanumerics.codeplex.com/wikipage?title=Plans for 4.0&version=3<div class="wikidoc"><h1>Breaking Changes</h1>
<ul><li>Move to github. I'm actually perfectly happy with CodePlex, but the writing is on the wall and github has more eyeballs.</li></ul>
<ul><li>Add an IntegerPartition class that supports both views of a partition (1+1+ 3 and 2 * 1 + 1 * 3), and useful properties and functions such as Rank and Conjugate.</li></ul>
<h1>Additional Features</h1>
<ul><li>Add specific FitResults for all fit methods. These objects should give (i) direct access to named parameters, so users don't need to remember which parameter has which index, (ii) residuals, if applicable, (iii) ANOVA analysis, if applicable.</li></ul>
<ul><li>Add specific EvaluationSettings for all function analysis methods. These objects should expose listeners that give intermediate results and additional settings specific to the kind of analysis.</li></ul>
<ul><li>More time series functionality, including full ARIMA fits and population power spectra estimates with uncertainties.</li></ul>
<ul><li>Submatrices. For examle: given say a 100 X 200 RectangularMatrix, get a 20 X 10 RectangularMatrix that addresses the same storage as the 10...30 X 50...60 elements of the original matrix.</li></ul>
<br /></div><div class="ClearBoth"></div>ichbinTue, 27 Dec 2016 03:16:24 GMTUpdated Wiki: Plans for 4.0 20161227031624AUpdated Wiki: Plans for 4.0https://metanumerics.codeplex.com/wikipage?title=Plans for 4.0&version=2<div class="wikidoc"><h1>Breaking Changes</h1>
<ul><li>Move to github. I'm actually perfectly happy with CodePlex, but the writing is on the wall and github has more eyeballs.</li></ul>
<ul><li>Add an IntegerPartition class that supports both views of a partition (1 <u> 1 </u> 3 and 2 * 1 + 1 * 3), and useful properties and functions such as Rank and Conjugate.</li></ul>
<h1>Additional Features</h1>
<ul><li>Add specific FitResults for all fit methods. These objects should give (i) direct access to named parameters, so users don't need to remember which parameter has which index, (ii) residuals, if applicable, (iii) ANOVA analysis, if applicable.</li></ul>
<ul><li>Add specific EvaluationSettings for all function analysis methods. These objects should expose listeners that give intermediate results and additional settings specific to the kind of analysis.</li></ul>
<ul><li>More time series functionality, including full ARIMA fits and population power spectra estimates with uncertainties.</li></ul>
<ul><li>Submatrices. For examle: given say a 100 X 200 RectangularMatrix, get a 20 X 10 RectangularMatrix that addresses the same storage as the 10...30 X 50...60 elements of the original matrix.</li></ul>
<br /></div><div class="ClearBoth"></div>ichbinTue, 27 Dec 2016 03:14:58 GMTUpdated Wiki: Plans for 4.0 20161227031458A