Take a simple step in the search direction of p * alpha
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(nlesolver_type), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(me%n) | :: | xold |
previous value of |
|
real(kind=wp), | intent(in), | dimension(me%n) | :: | p |
search direction |
|
real(kind=wp), | intent(out), | dimension(me%n) | :: | x |
new |
|
real(kind=wp), | intent(inout) | :: | f |
magnitude of |
||
real(kind=wp), | intent(inout), | dimension(me%m) | :: | fvec |
function vector |
|
real(kind=wp), | intent(in), | optional, | dimension(:,:) | :: | fjac |
jacobian matrix [dense] |
real(kind=wp), | intent(in), | optional, | dimension(:) | :: | fjac_sparse |
jacobian matrix [sparse] |
subroutine simple_step(me,xold,p,x,f,fvec,fjac,fjac_sparse) implicit none class(nlesolver_type),intent(inout) :: me real(wp),dimension(me%n),intent(in) :: xold !! previous value of `x` real(wp),dimension(me%n),intent(in) :: p !! search direction real(wp),dimension(me%n),intent(out) :: x !! new `x` real(wp),intent(inout) :: f !! magnitude of `fvec` real(wp),dimension(me%m),intent(inout) :: fvec !! function vector real(wp),dimension(:,:),intent(in),optional :: fjac !! jacobian matrix [dense] real(wp),dimension(:),intent(in),optional :: fjac_sparse !! jacobian matrix [sparse] x = xold + p * me%alpha !evaluate the function at the new point: call me%func(x,fvec) f = norm2(fvec) end subroutine simple_step