
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 1E10 > the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e10);
// 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 userdefined 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



I forgot to
mention I'm trying to solve a Ax = b with QRdecomposition.



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 QRdecomposition 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; minheight: 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)


Coordinator
Jul 25, 2011 at 11:44 PM

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

