1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
c Example for fsolve
c -----------------------------------------------------
c subroutine myprog(n,x,fvec,iflag)
c integer n,iflag
c double precision x(n),fvec(n)
c ----------
c calculate the functions at x and
c return this vector in fvec.
c ---------
c return
c end
c
c the value of iflag should not be changed by fcn unless
c the user wants to terminate execution of hybrd.
c in this case set iflag to a negative integer.
c
c n is a positive integer input variable set to the number
c of functions and variables.
c
c x is an array of length n. on input x must contain
c an initial estimate of the solution vector. on output x
c contains the final estimate of the solution vector.
c
c fvec is an output array of length n which contains
c the functions evaluated at the output x.
c
c Copyright INRIA
subroutine fsol1(n,x,fvec,iflag)
integer n,iflag
double precision x(n),fvec(n)
double precision a,b(2)
common / exfsol / a(2*2)
data a / 1.0,2.0, 7.0, 8.0 /
data b / 10.0 ,11.0 /
do 10 i=1,2
fvec(i)= b(i)
do 20 j=1,2
fvec(i)= fvec(i)+a(i+2*(j-1))*x(j)
20 continue
10 continue
return
end
c ----------
c calculate the jacobian at x and
c return the result in fjac
c ---------
subroutine fsolj1(n,x,fjac,iflag)
integer n,iflag
double precision x(n),fjac(n*n)
double precision a
common / exfsol / a(2*2)
do 10 i=1,2
fjac(i)= 0.0
do 20 j=1,2
fjac(i+(j-1)*2)= a(i+2*(j-1))
20 continue
10 continue
return
end
|