program main
implicit none
double precision p, a, b, tol
a = 1.0d0
b = 30.0d0
tol = 1e-8
call newtonbisection(p, a, b, tol)
contains
function f(x)
implicit none
double precision x,f
f = SIN(X) - exp(-x)
end function
function fprime(x)
implicit none
double precision fprime, x
fprime = COS(x) + exp(-x)
end function
subroutine newtonbisection(p, a, b, tol)
implicit none
double precision p, a, b, tol
double precision f, fprime
double precision fb, fp, fp2
a = 1.0d0
b = 30.0d0
p = a
do
fb = f(b)
fp = f(p)
fp2 = fprime(p)
p = p - (fp/fp2)
if (p < a .or. p > b) then
p = (a+b)/2.d0
end if
if (fp*fb < 0) then
a = p
else
b = p
end if
print*, "a, b, p, fp", a, b, p, fp
if (dabs(fp) < tol) then
exit
end if
end do
end subroutine
end program
는 :정의되지 않은 F_을 참조하고 나는 다음과 같은 오류가납니다 (gfortran newtonbisection.f90)를 컴파일 할 때 fprime_
는newtonbisection.f90:(.text+0x76): undefined reference to 'f_'
newtonbisection.f90:(.text+0x8f): undefined reference to 'f_'
newtonbisection.f90:(.text+0xa8): undefined reference to 'fprime_'
collect2: ld returned 1 exit status
나는 비슷한 문제가 암시 없음을 넣어하지되었다
마지막으로 고정 포함 그들이지만, 이번에는 아닙니다. 왜 그것이 f와 fprime이 정의되어 있지 않다고 말하는가?
프로그램에 더 들여 쓰기를 사용하는 것이 좋습니다. 코드를 읽기가 어렵습니다. –
제안 해 주셔서 감사합니다. 나는 다음 번에 그것을 명심 할 것이다. – mike