Почти уверен, что Matlab просто игнорирует мои настройки параметра решателя ... Я устанавливаю FuctionTolerance
с 1e-6
по умолчанию на 1e-10
, и решатель останавливается на 1e-8
, говоря мне, что он ниже предела 1e-6
по умолчанию.
Я использую команду options = optimoptions('lsqnonlin', 'FunctionTolerance', 1e-10)
. Любые идеи?
Вывод командного окна ниже:
options =
lsqnonlin options:
Options used by current Algorithm ('trust-region-reflective'):
(Other available algorithms: 'levenberg-marquardt')
Set properties:
FunctionTolerance: 1.0000e-10
Default properties:
Algorithm: 'trust-region-reflective'
CheckGradients: 0
Display: 'final'
FiniteDifferenceStepSize: 'sqrt(eps)'
FiniteDifferenceType: 'forward'
JacobianMultiplyFcn: []
MaxFunctionEvaluations: '100*numberOfVariables'
MaxIterations: 400
OptimalityTolerance: 1.0000e-06
OutputFcn: []
PlotFcn: []
SpecifyObjectiveGradient: 0
StepTolerance: 1.0000e-06
SubproblemAlgorithm: 'factorization'
TypicalX: 'ones(numberOfVariables,1)'
UseParallel: 0
Local minimum possible.
lsqnonlin stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.
<stopping criteria details>
Optimization stopped because the relative sum of squares (r) is changing
by less than options.FunctionTolerance = 1.000000e-06.
Optimization Metric Options
relative change r = 6.50e-08 FunctionTolerance = 1e-06 (default)
FunctionTolerance
не подходит дляlsqnonlin
. Вместо этого используйтеTolFun
- person AVK   schedule 19.01.20171E-8
значением функции, размером шага, максимальной нормой градиента или чем-то еще? Есть несколько значений, которые могут остановить итерации. - person TroyHaskin   schedule 19.01.2017