STOP
END
Solusi
If (NVSPANL_2Pers
Program .LT. FTOL) then
C memeriksa harga norma fungsi SPANL
WRITE(*,*)(NEQ
PARAMETER 'SOLVED:
= 2) Norm Vektor is less than
TOLerance'
STOP ITER,ITMAX,I,N
INTEGER
EndIf
REAL*8 Aij(NEQ,NEQ)
REAL*8 FX(NEQ),DX(NEQ),X(NEQ)
10LOGICAL
CONTINUE Solved,Converged,ItMaxReached
ITER = ITER
REAL*8 +1
FTOL,TOL,NV,NormVect
CALL JACSPANL(X,Aij,N)
CALL EGAUSS(Aij,DX,FX,N)
WRITE(*,17) 'Jumlah persamaan/variabel: '
READ(*,*) N
Do I= 1,N 'Harga-harga awal untuk X:'
Write(*,*)
DoX(I)
I ==1,N
X(I) - DX(I)
EndDo
Write(*,18) 'X0[',I,']= '
Read(*,*) X(I)
EndDoFSPANL(X,FX,N)
CALL
Solved = (NormVect(FX,N) .LT. FTOL)
If (.NOT. Solved)
Write(*,17) 'ITMAX:CALL' FSPANL(X,FX,N)
Read(*,*) ITMAX
Converged =
Write(*,17) (NormVect(DX,N)
'FTOL: ' .LT. TOL)
ItMaxReached
Read(*,*) FTOL= (ITER .GE. ITMAX)
Write(*,17) 'XTOL:.OR.
IF (.NOT. (Solved ' Converged .OR.
ItMaxReached))
Read(*,*) TOL GO TO 10
17IFFORMAT(A,$)
(.NOT. ItMaxReached) then
Write(*,*) 'Vektor jawab X adalah:'
18 FORMAT(A,I1,A,$)
Do I = 1,N
C write(*,*) 'X[',I,']=
Menghitung ',X(I) fungsi SPANL
harga norma
EndDo
CALL FSPANL(X,FX,N)
Do I = 1,N
write(*,*) 'DX[',I,']= ',DX(I)
EndDo
Do I = 1,N
write(*,*) 'FX[',I,']= ',FX(I)
EndDo
Write(*,*) 'Jumlah Iterasi: ',ITER
Else
Write(*,*) 'Tak ada KONVERGENSI setelah ',ITMAX,
* ' Iterasi terlampaui'
EndIf
STOP
END
Do j=1,noe-1
C {Triangularisasi}
pivot = a(j,j)
Do i=j+1,noe
mult = a(i,j)/pivot
Do k = j+1,noe
a(i,k) = a(i,k)- mult*a(j,k)
b(i) = b(i) - mult*b(j)
EndDo
EndDo
EndDo
C {Triangularisasi}
C *---Substitusi Balik---*
x(noe) = b(noe)/a(noe,noe)
Do i = noe-1,1,-1
top = b(i)
Do k = i+1,noe
top = top - a(i,k)*x(k)
x(i) = top/a(i,i)
EndDo
EndDo
RETURN
END
INTEGER noe,i
REAL*8 x(noe),f(noe), fx(noe)
RETURN
END
Subroutine JACSPANL(x,A,noe)
C Matriks JACOBI dari Fungsi SPANL
INTEGER noe
REAL*8 x(*),A(noe,*)
A(1,1) = -11.0
A(1,2) = 0.0
A(1,3) = 0.0
A(2,1) = 1.0
A(2,2) = -10.0 - 0.2*x(2)
A(2,3) = 0.0
A(3,1) = 0.0
A(3,2) = 0.2*x(2)
A(3,3) = -10.0
RETURN
END
Function NormVect(x,n)
INTEGER n,i
REAL*8 NormVect,x(*)
REAL*8 sum
sum = 0.0
Do i = 1,n
sum = sum + x(i)**2
EndDo
NormVect = sum
RETURN
END
Untuk menyelsaikan soal SPANL, dapat hanya dengan
merubah jumlah persamaan pada PARAMETER (NEQ=),
jumlah fx beserta persamaan-persamaannya, dan terakhir
hasil turunannya terhadap tiap variable yang ada pada
persamaan.
x=1.01680924232
y=2.01490792647
S2 K
Ka ( K sp )
1 + S= sp + 0.10
S
Solusi
2
K
Ka ( S
K sp )
1 + S sp 0.10=0
S
Listing Program Newton-Raphson:
implicit none
iter = 0
flag = 0
x = xold
x = x - f(x)/df(x)
flag = 1
flag = 2
ELSE
iter = iter +1
x=xold
ENDIF
ENDDO
STOP
END
Function f(x)
Real*8 f,x
f = 0.006*(x**2-1)+x**2-(0.003/(x))-0.1
Return
End
function df(x)
Real*8 df,x
df = 0.012*x+2*x+(0.003/(x**2))
Return
End
Didapatkan nilai
S pada iterasi ke
11, yaitu:
0.55483871045
9