Table of Contents

Class SolverUtil

Namespace
Hi.Geom.Solvers
Assembly
HiGeom.dll

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

Func<double, double>

LogSlowIterationFunc

Gets a logarithmic function for slow iteration convergence.

public static Func<double, double> LogSlowIterationFunc { get; }

Property Value

Func<double, double>

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 int

The number of output values.

para double[]

The initial parameter values.

dpara double[]

The parameter delta values.

convergenceLimit double

The convergence limit.

slowIterationFunc Func<double, double>

The function for slow iteration.

maxDirectIteration int

The maximum number of direct iterations.

maxSlowIteration int

The maximum number of slow iterations.

maxTotalIteration int

The 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 double

The 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 int

The 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 int

The number of output values.

biases double[]

The bias values.

jacob double[,]

The output Jacobian matrix.

Returns

List<double[]>

A list of parameter compensation values.

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 double

Initial parameter value

dpara double

Parameter step size for calculating derivatives

target double

Target value to solve for

convergenceLimit double

Convergence limit (acceptable error)

maxIteration int

Maximum 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 double

Convergence limit (acceptable error)

maxIteration int

Maximum 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 int

Number of output values from the function

convergenceLimit double

Convergence limit (acceptable error)

maxIteration int

Maximum 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 int

Number of output values from the function

convergenceFunc Func<double[], double>

Function to calculate convergence from biases

convergenceLimit double

Convergence limit (acceptable error)

maxIteration int

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