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.
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()