mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-05-01 08:14:10 +08:00
Factorize solveWithGuess in IterativeSolverBase
This commit is contained in:
parent
8a74ce922c
commit
1c4b69c5fb
@ -198,21 +198,6 @@ public:
|
|||||||
return internal::solve_retval_with_guess
|
return internal::solve_retval_with_guess
|
||||||
<BiCGSTAB, Rhs, Guess>(*this, b.derived(), x0);
|
<BiCGSTAB, Rhs, Guess>(*this, b.derived(), x0);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
/** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A
|
|
||||||
* \a x0 as an initial solution.
|
|
||||||
*
|
|
||||||
* \sa compute()
|
|
||||||
*/
|
|
||||||
template<typename Rhs,typename Guess>
|
|
||||||
inline const SolveWithGuess<BiCGSTAB, Rhs, Guess>
|
|
||||||
solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const
|
|
||||||
{
|
|
||||||
eigen_assert(m_isInitialized && "BiCGSTAB is not initialized.");
|
|
||||||
eigen_assert(Base::rows()==b.rows()
|
|
||||||
&& "BiCGSTAB::solve(): invalid number of rows of the right hand side matrix b");
|
|
||||||
return SolveWithGuess<BiCGSTAB, Rhs, Guess>(*this, b.derived(), x0);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** \internal */
|
/** \internal */
|
||||||
|
@ -209,21 +209,6 @@ public:
|
|||||||
return internal::solve_retval_with_guess
|
return internal::solve_retval_with_guess
|
||||||
<ConjugateGradient, Rhs, Guess>(*this, b.derived(), x0);
|
<ConjugateGradient, Rhs, Guess>(*this, b.derived(), x0);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
/** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A
|
|
||||||
* \a x0 as an initial solution.
|
|
||||||
*
|
|
||||||
* \sa compute()
|
|
||||||
*/
|
|
||||||
template<typename Rhs,typename Guess>
|
|
||||||
inline const SolveWithGuess<ConjugateGradient, Rhs, Guess>
|
|
||||||
solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const
|
|
||||||
{
|
|
||||||
eigen_assert(m_isInitialized && "ConjugateGradient is not initialized.");
|
|
||||||
eigen_assert(Base::rows()==b.rows()
|
|
||||||
&& "ConjugateGradient::solve(): invalid number of rows of the right hand side matrix b");
|
|
||||||
return SolveWithGuess<ConjugateGradient, Rhs, Guess>(*this, b.derived(), x0);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** \internal */
|
/** \internal */
|
||||||
|
@ -193,6 +193,22 @@ public:
|
|||||||
}
|
}
|
||||||
#endif // EIGEN_TEST_EVALUATORS
|
#endif // EIGEN_TEST_EVALUATORS
|
||||||
|
|
||||||
|
#ifdef EIGEN_TEST_EVALUATORS
|
||||||
|
/** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A
|
||||||
|
* and \a x0 as an initial solution.
|
||||||
|
*
|
||||||
|
* \sa solve(), compute()
|
||||||
|
*/
|
||||||
|
template<typename Rhs,typename Guess>
|
||||||
|
inline const SolveWithGuess<Derived, Rhs, Guess>
|
||||||
|
solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const
|
||||||
|
{
|
||||||
|
eigen_assert(m_isInitialized && "Solver is not initialized.");
|
||||||
|
eigen_assert(derived().rows()==b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
|
||||||
|
return SolveWithGuess<Derived, Rhs, Guess>(derived(), b.derived(), x0);
|
||||||
|
}
|
||||||
|
#endif // EIGEN_TEST_EVALUATORS
|
||||||
|
|
||||||
/** \returns Success if the iterations converged, and NoConvergence otherwise. */
|
/** \returns Success if the iterations converged, and NoConvergence otherwise. */
|
||||||
ComputationInfo info() const
|
ComputationInfo info() const
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user