本文整理汇总了C#中MathNet.Numerics.LinearAlgebra.Double.DenseVector.AbsoluteMaximum方法的典型用法代码示例。如果您正苦于以下问题:C# DenseVector.AbsoluteMaximum方法的具体用法?C# DenseVector.AbsoluteMaximum怎么用?C# DenseVector.AbsoluteMaximum使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MathNet.Numerics.LinearAlgebra.Double.DenseVector
的用法示例。
在下文中一共展示了DenseVector.AbsoluteMaximum方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FitGeo
//.........这里部分代码省略.........
{
//midpoint normal dotted with tangents
p0 = xNor[i].Dot(xTan[i]);// BLAS.dot(xNor[i], xTan[i]);
pp = xNor[i].Dot(xTan[i + 1]);//BLAS.dot(xNor[i], xTan[i + 1]);
for (gm = g0 = gp = 0, ix = 0; ix < 3; ix++)
{
//midpoint curvature vector
d = xTan[i + 1][ix] - xTan[i][ix];
//midpoint tangent and curavture variantion
d0 = (xNor[i][ix] - p0 * xTan[i][ix]) / xLen[i];
dp = (xNor[i][ix] - pp * xTan[i + 1][ix]) / xLen[i + 1];
//bottom, mid and top point gradients
gm += d0 * xNor[i - 1][ix];
g0 += (-d0 - dp) * xNor[i][ix] + d * dxNor[i][ix];
gp += dp * xNor[i + 1][ix];
}
A[i, i - 1] = gm;
A[i, i] = g0;
A[i, i + 1] = gp;
sNor[i] = -p0 + pp;
}
if (end is SlidePoint)//slide endpoint
{
p0 = xNor[i].Dot(xTan[i]);
for (gm = g0 = 0, ix = 0; ix < 3; ix++)
{
//midpoint tangent and curavture variantion
d0 = (xNor[i][ix] - p0 * xTan[i][ix]) / xLen[i];
//bottom, mid and top point gradients
gm += d0 * xNor[i - 1][ix];
g0 += -d0 * xNor[i][ix] - xTan[i][ix] * dxNor[i][ix];
}
A[i, i - 1] = gm;
A[i, i] = g0;
sNor[i] = -p0;
}
else//fixed endpoint
{
A[i, i] = 1;
sNor[i] = 0;
}
LU decomp = A.LU();
x = (Vector)decomp.Solve(sNor);
double Reduce = Math.Min(1, .05 / x.AbsoluteMaximum());
if( start is SlidePoint)
(start as SlidePoint).SCurve -= x[0] * Reduce;
if( end is SlidePoint)
(end as SlidePoint).SCurve -= x[INC] * Reduce;
for (i = 1; i < NumFits; i++)//increment uv points
{
uFits[i][0] -= x[i] * uNor[i][0] * Reduce;
uFits[i][1] -= x[i] * uNor[i][1] * Reduce;
}
if (nNwt < 5)
{
//keep initial (s)-increments within bounds
if (start is SlidePoint)
(start as SlidePoint).SCurve = Utilities.LimitRange(0, (start as SlidePoint).SCurve, 1);
if (end is SlidePoint)
(end as SlidePoint).SCurve = Utilities.LimitRange(0, (end as SlidePoint).SCurve, 1);
// keep initial (u)-increments within bounds
for (i = 1; i < NumFits - 1; i++)
{
uFits[i][0] = Utilities.LimitRange(0, uFits[i][0], 1);
uFits[i][1] = Utilities.LimitRange(-.125, uFits[i][1], 1.125);
}
}
double xmax = x.AbsoluteMaximum();
double smax = sNor.AbsoluteMaximum();
if (Conver = (x.AbsoluteMaximum() < 1e-8 && sNor.AbsoluteMaximum() < 1e-7))
break;
}
if (!Conver)
return false;
g.Length = xLen[0];//store length
//calculate unit length (s)-parameter values
sFits[0] = 0;
for (i = 1; i < NumFits; i++)
sFits[i] = sFits[i - 1] + xLen[i] / xLen[0];
//g.m_uvs = uFits;
g.ReSpline(sFits, uFits);
return true;
}