http://www.itl.nist.gov/div898/strd/nls/data/ratkowsky3.shtml
| 1686 | |
| 1687 | // http://www.itl.nist.gov/div898/strd/nls/data/ratkowsky3.shtml |
| 1688 | void testNistRat43(void) |
| 1689 | { |
| 1690 | const int n=4; |
| 1691 | int info; |
| 1692 | |
| 1693 | VectorXd x(n); |
| 1694 | |
| 1695 | /* |
| 1696 | * First try |
| 1697 | */ |
| 1698 | x<< 100., 10., 1., 1.; |
| 1699 | // do the computation |
| 1700 | rat43_functor functor; |
| 1701 | LevenbergMarquardt<rat43_functor> lm(functor); |
| 1702 | lm.parameters.ftol = 1.E6*NumTraits<double>::epsilon(); |
| 1703 | lm.parameters.xtol = 1.E6*NumTraits<double>::epsilon(); |
| 1704 | info = lm.minimize(x); |
| 1705 | |
| 1706 | // check return value |
| 1707 | VERIFY_IS_EQUAL(info, 1); |
| 1708 | VERIFY_IS_EQUAL(lm.nfev, 27); |
| 1709 | VERIFY_IS_EQUAL(lm.njev, 20); |
| 1710 | // check norm^2 |
| 1711 | VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7864049080E+03); |
| 1712 | // check x |
| 1713 | VERIFY_IS_APPROX(x[0], 6.9964151270E+02); |
| 1714 | VERIFY_IS_APPROX(x[1], 5.2771253025E+00); |
| 1715 | VERIFY_IS_APPROX(x[2], 7.5962938329E-01); |
| 1716 | VERIFY_IS_APPROX(x[3], 1.2792483859E+00); |
| 1717 | |
| 1718 | /* |
| 1719 | * Second try |
| 1720 | */ |
| 1721 | x<< 700., 5., 0.75, 1.3; |
| 1722 | // do the computation |
| 1723 | lm.resetParameters(); |
| 1724 | lm.parameters.ftol = 1.E5*NumTraits<double>::epsilon(); |
| 1725 | lm.parameters.xtol = 1.E5*NumTraits<double>::epsilon(); |
| 1726 | info = lm.minimize(x); |
| 1727 | |
| 1728 | // check return value |
| 1729 | VERIFY_IS_EQUAL(info, 1); |
| 1730 | VERIFY_IS_EQUAL(lm.nfev, 9); |
| 1731 | VERIFY_IS_EQUAL(lm.njev, 8); |
| 1732 | // check norm^2 |
| 1733 | VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7864049080E+03); |
| 1734 | // check x |
| 1735 | VERIFY_IS_APPROX(x[0], 6.9964151270E+02); |
| 1736 | VERIFY_IS_APPROX(x[1], 5.2771253025E+00); |
| 1737 | VERIFY_IS_APPROX(x[2], 7.5962938329E-01); |
| 1738 | VERIFY_IS_APPROX(x[3], 1.2792483859E+00); |
| 1739 | } |
| 1740 | |
| 1741 | |
| 1742 |
no test coverage detected