本文整理汇总了C#中System.Double.MemberwiseClone方法的典型用法代码示例。如果您正苦于以下问题:C# Double.MemberwiseClone方法的具体用法?C# Double.MemberwiseClone怎么用?C# Double.MemberwiseClone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Double
的用法示例。
在下文中一共展示了Double.MemberwiseClone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: JaggedEigenvalueDecomposition
/// <summary>
/// Construct an eigenvalue decomposition.</summary>
/// <param name="value">
/// The matrix to be decomposed.</param>
/// <param name="assumeSymmetric">
/// Defines if the matrix should be assumed as being symmetric
/// regardless if it is or not. Default is <see langword="false"/>.</param>
/// <param name="inPlace">
/// Pass <see langword="true"/> to perform the decomposition in place. The matrix
/// <paramref name="value"/> will be destroyed in the process, resulting in less
/// memory comsumption.</param>
/// <param name="sort">
/// Pass <see langword="true"/> to sort the eigenvalues and eigenvectors at the end
/// of the decomposition.</param>
///
public JaggedEigenvalueDecomposition(Double[][] value, bool assumeSymmetric,
bool inPlace = false, bool sort = false)
{
if (value == null)
throw new ArgumentNullException("value", "Matrix cannot be null.");
if (value.Length != value[0].Length)
throw new ArgumentException("Matrix is not a square matrix.", "value");
n = value.Length;
V = new Double[n][];
for (int i = 0; i < n; i++)
V[i] = new Double[n];
d = new Double[n];
e = new Double[n];
this.symmetric = assumeSymmetric;
if (this.symmetric)
{
V = inPlace ? value : (Double[][])value.MemberwiseClone();
// Tridiagonalize.
this.tred2();
// Diagonalize.
this.tql2();
}
else
{
H = inPlace ? value : (Double[][])value.MemberwiseClone();
ort = new Double[n];
// Reduce to Hessenberg form.
this.orthes();
// Reduce Hessenberg to real Schur form.
this.hqr2();
}
if (sort)
{
// Sort eigenvalues and vectors in descending order
var idx = Vector.Range(n);
Array.Sort(idx, (i, j) =>
{
if (Math.Abs(d[i]) == Math.Abs(d[j]))
return -Math.Abs(e[i]).CompareTo(Math.Abs(e[j]));
return -Math.Abs(d[i]).CompareTo(Math.Abs(d[j]));
});
this.d = this.d.Get(idx);
this.e = this.e.Get(idx);
this.V = this.V.Get(null, idx);
}
}
示例2: JaggedEigenvalueDecomposition
/// <summary>
/// Construct an eigenvalue decomposition.</summary>
/// <param name="value">
/// The matrix to be decomposed.</param>
/// <param name="assumeSymmetric">
/// Defines if the matrix should be assumed as being symmetric
/// regardless if it is or not. Default is <see langword="false"/>.</param>
/// <param name="inPlace">
/// Pass <see langword="true"/> to perform the decomposition in place. The matrix
/// <paramref name="value"/> will be destroyed in the process, resulting in less
/// memory comsumption.</param>
public JaggedEigenvalueDecomposition(Double[][] value, bool assumeSymmetric, bool inPlace)
{
if (value == null)
throw new ArgumentNullException("value", "Matrix cannot be null.");
if (value.Length != value[0].Length)
throw new ArgumentException("Matrix is not a square matrix.", "value");
n = value.Length;
V = new Double[n][];
for (int i = 0; i < n; i++)
V[i] = new Double[n];
d = new Double[n];
e = new Double[n];
this.symmetric = assumeSymmetric;
if (this.symmetric)
{
V = inPlace ? value : (Double[][])value.MemberwiseClone();
// Tridiagonalize.
this.tred2();
// Diagonalize.
this.tql2();
}
else
{
H = inPlace ? value : (Double[][])value.MemberwiseClone();
ort = new Double[n];
// Reduce to Hessenberg form.
this.orthes();
// Reduce Hessenberg to real Schur form.
this.hqr2();
}
}