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
func
Func<double[], double[]>The function to solve.
outputNum
intThe number of output values.
para
double[]The initial parameter values.
dpara
double[]The parameter delta values.
convergenceLimit
doubleThe convergence limit.
slowIterationFunc
Func<double, double>The function for slow iteration.
maxDirectIteration
intThe maximum number of direct iterations.
maxSlowIteration
intThe maximum number of slow iterations.
maxTotalIteration
intThe 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
mat
double[,]The input matrix.
availableAccumulatedWeightRatio
doubleThe 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
mat
double[,]The input matrix.
orthogonalPaces
List<(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
func
Func<double[], double[]>The function to evaluate.
paras
double[]The parameter values.
targets
double[]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
func
Func<double[], double[]>The function to evaluate.
paras
double[]The parameter values.
dparas
double[]The parameter delta values.
targetNum
intThe 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
func
Func<double[], double[]>The function to evaluate.
paras
double[]The current parameter values.
dparas
double[]The parameter delta values.
targets
double[]The target values.
jacob
double[,]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
func
Func<double[], double[]>The function to evaluate.
paras
double[]The current parameter values.
dparas
double[]The parameter delta values.
targets
double[]The target values.
biases
double[]The bias values.
jacob
double[,]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
func
Func<double[], double[]>The function to evaluate.
paras
double[]The parameter values.
dparas
double[]The parameter delta values.
outputNum
intThe number of output values.
biases
double[]The bias values.
jacob
double[,]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
func
Func<double, double>The function to solve
para
doubleInitial parameter value
dpara
doubleParameter step size for calculating derivatives
target
doubleTarget value to solve for
convergenceLimit
doubleConvergence limit (acceptable error)
maxIteration
intMaximum 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
func
Func<double[], double[]>The function to solve
paras
double[]Initial parameter values
dparas
double[]Parameter step sizes for calculating derivatives
targets
double[]Target values to solve for
convergenceFunc
Func<double[], double>Function to calculate convergence from biases
convergenceLimit
doubleConvergence limit (acceptable error)
maxIteration
intMaximum 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
func
Func<double[], double[]>The function to solve
paras
double[]Initial parameter values
dparas
double[]Parameter step sizes for calculating derivatives
funcDstNum
intNumber of output values from the function
convergenceLimit
doubleConvergence limit (acceptable error)
maxIteration
intMaximum 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
func
Func<double[], double[]>The function to solve
paras
double[]Initial parameter values
dparas
double[]Parameter step sizes for calculating derivatives
funcDstNum
intNumber of output values from the function
convergenceFunc
Func<double[], double>Function to calculate convergence from biases
convergenceLimit
doubleConvergence limit (acceptable error)
maxIteration
intMaximum 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()