Class SolverUtil
Utility class providing advanced numerical solving methods for systems of equations.
public static class SolverUtil
- Inheritance
-
SolverUtil
- Inherited Members
Properties
LinearSlowIterationFunc
Gets a linear function for slow iteration convergence.
public static Func<double, double> LinearSlowIterationFunc { get; }
Property Value
LogSlowIterationFunc
Gets a logarithmic function for slow iteration convergence.
public static Func<double, double> LogSlowIterationFunc { get; }
Property Value
Methods
DeepSolveArray(Func<double[], double[]>, int, double[], double[], double, Func<double, double>, int, int, int)
Performs deep solving of a function with multiple parameters.
public static IEnumerable<DeepSolvingStatus> DeepSolveArray(Func<double[], double[]> func, int outputNum, double[] para, double[] dpara, double convergenceLimit, Func<double, double> slowIterationFunc = null, int maxDirectIteration = 6, int maxSlowIteration = 6, int maxTotalIteration = 1200)
Parameters
funcFunc<double[], double[]>The function to solve.
outputNumintThe number of output values.
paradouble[]The initial parameter values.
dparadouble[]The parameter delta values.
convergenceLimitdoubleThe convergence limit.
slowIterationFuncFunc<double, double>The function for slow iteration.
maxDirectIterationintThe maximum number of direct iterations.
maxSlowIterationintThe maximum number of slow iterations.
maxTotalIterationintThe maximum total number of iterations.
Returns
- IEnumerable<DeepSolvingStatus>
An enumerable of deep solving status objects.
GetApproxInv(double[,], double)
Calculates an approximate inverse of a matrix using SVD decomposition.
public static double[,] GetApproxInv(double[,] mat, double availableAccumulatedWeightRatio = 0.99999999)
Parameters
matdouble[,]The input matrix.
availableAccumulatedWeightRatiodoubleThe ratio of accumulated weights to consider.
Returns
- double[,]
The approximate inverse matrix.
GetApproxInvAndOrthogonalPaces(double[,], out List<(double eigenValue, double[] v)>)
Calculates an approximate inverse of a matrix and returns orthogonal paces using SVD decomposition.
public static double[,] GetApproxInvAndOrthogonalPaces(double[,] mat, out List<(double eigenValue, double[] v)> orthogonalPaces)
Parameters
matdouble[,]The input matrix.
orthogonalPacesList<(double eigenValue, double[] v)>The output list of orthogonal paces with eigenvalues and eigenvectors.
Returns
- double[,]
The approximate inverse matrix.
GetBiases(Func<double[], double[]>, double[], double[])
Calculates the bias values between function outputs and target values.
public static double[] GetBiases(Func<double[], double[]> func, double[] paras, double[] targets)
Parameters
funcFunc<double[], double[]>The function to evaluate.
parasdouble[]The parameter values.
targetsdouble[]The target values.
Returns
- double[]
The bias values.
GetCosSinTermRotationMat4d(Vec3d, double, double)
public static Mat4d GetCosSinTermRotationMat4d(Vec3d axis, double cos, double sin)
Parameters
Returns
GetCosSinTermRotationMat4d(Vec3d, double, double, Vec3d)
public static Mat4d GetCosSinTermRotationMat4d(Vec3d axis, double cos, double sin, Vec3d pivot)
Parameters
Returns
GetJacobMat(Func<double[], double[]>, double[], double[], int)
Calculates the Jacobian matrix for a function.
public static double[,] GetJacobMat(Func<double[], double[]> func, double[] paras, double[] dparas, int targetNum)
Parameters
funcFunc<double[], double[]>The function to evaluate.
parasdouble[]The parameter values.
dparasdouble[]The parameter delta values.
targetNumintThe number of target values.
Returns
- double[,]
The Jacobian matrix.
GetParasCompensation(Func<double[], double[]>, double[], double[], double[], out double[,])
Gets parameter compensation values based on the function, current parameters, parameter deltas, and target values.
public static double[] GetParasCompensation(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, out double[,] jacob)
Parameters
funcFunc<double[], double[]>The function to evaluate.
parasdouble[]The current parameter values.
dparasdouble[]The parameter delta values.
targetsdouble[]The target values.
jacobdouble[,]The output Jacobian matrix.
Returns
- double[]
The parameter compensation values.
GetParasCompensation(Func<double[], double[]>, double[], double[], double[], double[], out double[,])
Gets parameter compensation values based on the function, current parameters, parameter deltas, target values, and biases.
public static double[] GetParasCompensation(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, double[] biases, out double[,] jacob)
Parameters
funcFunc<double[], double[]>The function to evaluate.
parasdouble[]The current parameter values.
dparasdouble[]The parameter delta values.
targetsdouble[]The target values.
biasesdouble[]The bias values.
jacobdouble[,]The output Jacobian matrix.
Returns
- double[]
The parameter compensation values.
GetParasCompensations(Func<double[], double[]>, double[], double[], int, double[], out double[,])
Gets multiple parameter compensation values for a function.
public static List<double[]> GetParasCompensations(Func<double[], double[]> func, double[] paras, double[] dparas, int outputNum, double[] biases, out double[,] jacob)
Parameters
funcFunc<double[], double[]>The function to evaluate.
parasdouble[]The parameter values.
dparasdouble[]The parameter delta values.
outputNumintThe number of output values.
biasesdouble[]The bias values.
jacobdouble[,]The output Jacobian matrix.
Returns
Solve(Func<double, double>, double, double, double, double, int)
Solves a one-dimensional function for a target value.
public static IEnumerable<SolvingResult> Solve(Func<double, double> func, double para, double dpara, double target, double convergenceLimit, int maxIteration = 12)
Parameters
funcFunc<double, double>The function to solve
paradoubleInitial parameter value
dparadoubleParameter step size for calculating derivatives
targetdoubleTarget value to solve for
convergenceLimitdoubleConvergence limit (acceptable error)
maxIterationintMaximum number of iterations
Returns
- IEnumerable<SolvingResult>
A sequence of solving result objects showing the progress of the solution
SolveArray(Func<double[], double[]>, double[], double[], double[], Func<double[], double>, double, int)
Solves a multi-dimensional function for specified target values with a custom convergence function.
public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, double[] targets, Func<double[], double> convergenceFunc, double convergenceLimit, int maxIteration = 12)
Parameters
funcFunc<double[], double[]>The function to solve
parasdouble[]Initial parameter values
dparasdouble[]Parameter step sizes for calculating derivatives
targetsdouble[]Target values to solve for
convergenceFuncFunc<double[], double>Function to calculate convergence from biases
convergenceLimitdoubleConvergence limit (acceptable error)
maxIterationintMaximum number of iterations
Returns
- IEnumerable<SolvingResult>
A sequence of solving result objects showing the progress of the solution
SolveArray(Func<double[], double[]>, double[], double[], int, double, int)
Solves a multi-dimensional function with default convergence function.
public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, int funcDstNum, double convergenceLimit, int maxIteration = 12)
Parameters
funcFunc<double[], double[]>The function to solve
parasdouble[]Initial parameter values
dparasdouble[]Parameter step sizes for calculating derivatives
funcDstNumintNumber of output values from the function
convergenceLimitdoubleConvergence limit (acceptable error)
maxIterationintMaximum number of iterations
Returns
- IEnumerable<SolvingResult>
A sequence of solving result objects showing the progress of the solution
SolveArray(Func<double[], double[]>, double[], double[], int, Func<double[], double>, double, int)
Solves a multi-dimensional function with a specified convergence function.
public static IEnumerable<SolvingResult> SolveArray(Func<double[], double[]> func, double[] paras, double[] dparas, int funcDstNum, Func<double[], double> convergenceFunc, double convergenceLimit, int maxIteration = 12)
Parameters
funcFunc<double[], double[]>The function to solve
parasdouble[]Initial parameter values
dparasdouble[]Parameter step sizes for calculating derivatives
funcDstNumintNumber of output values from the function
convergenceFuncFunc<double[], double>Function to calculate convergence from biases
convergenceLimitdoubleConvergence limit (acceptable error)
maxIterationintMaximum number of iterations
Returns
- IEnumerable<SolvingResult>
A sequence of solving result objects showing the progress of the solution
Test()
Internal Use Only
public static void Test()
Test2()
Internal Use Only
public static void Test2()