This project has moved and is read-only. For the latest updates, please go here.

{"IIterativeSolverSetup objects not found"}

Jul 18, 2011 at 7:06 PM

hi,

anyone can help me about this error: IIterativeSolverSetup objects not found ?

this happen when I try to use the Solve from IIterativeSolver.

 

// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);

// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

// Create monitor with defined stop criteriums
var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium });

// Load all suitable solvers from current assembly. Below in this example, there is user-defined solver
// "class UserBiCgStab : IIterativeSolverSetup<double>" which uses regular BiCgStab solver. But user may create any other solver
// and solver setup classes which implement IIterativeSolverSetup<T> and pass assembly to next function:
            CompositeSolver.LoadSolverInformationFromAssembly(Assembly.GetExecutingAssembly());

// Create composite solver
var solver = new CompositeSolver(monitor);


Vector VecB = new DenseVector(b);
Matrix Q = (DenseMatrix)A.QR().Q;
Matrix QT = (DenseMatrix)Q.Transpose();
Vector B = (DenseVector)(VecB * QT);


// 1. Solve the matrix equation
var resultX = solver.Solve((DenseMatrix)A.QR().R, (DenseVector)B);
 

PS. I'm trying with a 3x3 Matrix and a Vector with size 3.

regards

Jul 18, 2011 at 7:14 PM

I forgot to mention I'm trying to solve a Ax = b with QR-decomposition.

Jul 26, 2011 at 12:30 AM

You know... Hopefully someone will chime in and answer this more definitely. I still haven't figured out how to set stop criteriums.

 

For Ax=b with QR-decomposition in Visual Basic it'd be:

 

<!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.5px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.5px Helvetica; min-height: 11.0px} span.s1 {color: #0034ff} span.s2 {color: #33a2bd} -->

 Dim g As New DenseMatrix(3, 3, 1.0)

 Dim a As New DenseMatrix(3, 1, 1.0)

 Dim d As New DenseMatrix(3, 1)

 

  d = g.QR().Solve(a)

Jul 26, 2011 at 12:44 AM

Hiya

I suspect this is because you are using the CompositeSolver. The idea behind that solver is that it can call the other solvers in the most efficient order. The catch is that 'the most efficient order' needs to be defined somehow. When I originally wrote the code I didn't find a good way to determine this order (other than to run the solvers on a set of known problems) and so I never provided the information necessary to determine the order.

So if you want to solve your problem then you should use one of the other solvers (or provide the code necessary to determine the order of the solvers for the CompositeSolver).