Mathnet是一個高效的數學計算.NET庫,支持多種數學領域的計算和圖像展示。它提供了一些高效的數學計算功能,例如矩陣,向量,矩陣分解等,以及圖像處理工具。
一、Mathnetism
Mathnetism是基於Mathnet的一種工具,它提供了一些有趣的功能,例如這條球的運動軌跡。
using MathNet.Numerics.Interpolation;
List pts = new List() {
new Vector2D(0,0),
new Vector2D(0,-175),
new Vector2D(175,0),
new Vector2D(0,175),
new Vector2D(-175,0),
new Vector2D(0,0),
};
var curve = CubicSpline.InterpolateNatural(pts);
然後我們可以使用Mathnetism來計算出每個時間點的位置,從而繪製出球的運動軌跡。
using MathNet.Spatial.Euclidean;
foreach(double i=0; i<2*Math.PI; i+=Math.PI/32) {
Vector2D currentPos = curve.Evaluate(i);
Console.WriteLine(currentPos);
}
二、Mathnet c#
Mathnet c#是Mathnet的一個庫,它提供了一些常用的數學函數,例如判斷一個數是否為素數。
var isPrime = NumberTheory.IsPrime(13);
Console.WriteLine(isPrime);
它還提供了一些常用的函數,例如求極值。
double maximum = Optimization.Brent(F, lowerBound, upperBound);
三、Mathnet fft
Mathnet fft提供了一些高效的傅里葉變換函數,例如求出一組時間序列的傅里葉變換。
double[] signal = new double[] { 1, 1, 1, 1, 0, 0, 0, 0 };
Complex[] signalComplex = signal.Select(e => new Complex(e, 0)).ToArray();
Complex[] spectrum = Fourier.Forward(signalComplex);
foreach (var c in spectrum)
{
Console.WriteLine($"{c.Real} + {c.Imaginary}i");
}
四、Mathnet 幾何
Mathnet 幾何提供了一些有用的幾何函數,例如判斷兩個點是否在一個圓上,計算距離等。
Circle circle = new Circle(new Vector2D(0, 0), 3);
Vector2D point1 = new Vector2D(1, 0);
Vector2D point2 = new Vector2D(4, 0);
bool onCircle1 = circle.OnCircle(point1);
bool onCircle2 = circle.OnCircle(point2);
double distance1 = circle.Distance(point1);
double distance2 = circle.Distance(point2);
Console.WriteLine(onCircle1);
Console.WriteLine(onCircle2);
Console.WriteLine(distance1);
Console.WriteLine(distance2);
五、Mathnetism巴克球
想知道一個巴塞爾球是如何生成的嗎?Mathnetism巴克球提供了一種簡單的方法。
Vector3D initialVertex = new Vector3D(Math.Sqrt(3) - 1, 0, -1);
IEnumerable vertices =
Loop(initialVertex, v =\> new[] {
Rotate(Orthogonal(v, new Vector3D(1, -1, 0)), 2 * Math.PI / 3, v),
Rotate(Orthogonal(v, new Vector3D(1, -1, 0)), -2 * Math.PI / 3, v),
Rotate(v, Math.PI, new Vector3D(1, -1, 0))
}, 4);
六、mathnet.numeric
mathnet.numeric提供了一些常用的數值擾動函數,例如計算最小二乘法的解。
Matrix A = //生成係數矩陣A
Vector b = //生成常量向量b
Vector x = A.Solve(b);
x = x.Add(Numerics.GenerateRandom(x.Count)) * (1 + Epsilon);
七、Mathnet CubicSpline
Mathnet CubicSpline提供了一些高效的樣條插值函數,例如對以下數據進行樣條插值。
double[] xs = new double[] { 0, 1, 2, 3 };
double[] ys = new double[] { 0, 1, 4, 9 };
var spline = CubicSpline.InterpolateAkima(xs, ys);
double interpolatedValue = spline.Interpolate(1.5);
八、Mathnet.Numerics求矩陣零空間嗎
Mathnet.Numerics提供了一種高效的求矩陣零空間的方法,例如對以下矩陣求零空間。
Matrix matrix = //生成矩陣
var nullSpaceBasis = matrix.Kernel();
foreach(var vector in nullSpaceBasis) {
Console.WriteLine(vector);
}
九、math.net.numerics Evaluate
math.net.numerics Evaluate提供了一些方便的函數,例如近似提取導數。
Func f = x => x * x;
Func df = Differentiate.FirstDerivative(f, 0.01);
double dfAt2 = df(2);
Console.WriteLine(dfAt2);
原創文章,作者:PRCOQ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/330531.html