Senin, 04 Agustus 2008

newthon rapshon 2 variable bebas x dan 2 fungsi (2)

Option Explicit
Option Base 1
'#Uses "*STB.SVX"
'#Uses "*GRAPHICS.SVX"

Sub Main()
Dim S As Spreadsheet
Dim akarx10, akarx20, akarx11, akarX21, nilaif1, nilaif2 As Double
Dim baris As Integer
Dim MatrikJ(2,2) As Double
Dim MatrikJInv(2,2) As Double
Dim a(2,2) As Double
Set S = SelectSpreadsheetDialog(False)

If VarPtr(S) = 0 Then End
S.Variable(1).Select
akarx10= -0.5
akarx20=5
MatrikJ(1,1)=NilaiTurunanf1x1(akarx10,akarx20)
MatrikJ(1,2)=NilaiTurunanf1x2(akarx10,akarx20)
MatrikJ(2,1)=NilaiTurunanf2x1(akarx10,akarx20)
MatrikJ(2,2)=NilaiTurunanf2x2(akarx10,akarx20)
baris=1

Do
MatrixInverse(MatrikJ,MatrikJInv)
S.Cells(baris,1)=baris
S.Cells(baris,2)=akarx10
S.Cells(baris,3)=akarx20

S.Cells(baris,4)=NilaiFungsi1(akarx10,akarx20)
S.Cells(baris,5)=NilaiFungsi2(akarx10,akarx20)

akarx11 = akarx10 - ((MatrikJInv(1,1)*S.Cells(baris,4))+ (MatrikJInv(1,2)*S.Cells(baris,5)))
akarX21 = akarx20 - ((MatrikJInv(2,1)*S.Cells(baris,4)) + (MatrikJInv(2,2)*S.Cells(baris,5)))

MatrikJ(1,1)=NilaiTurunanf1x1(akarx11,akarX21)
MatrikJ(1,2)=NilaiTurunanf1x2(akarx11,akarX21)
MatrikJ(2,1)=NilaiTurunanf2x1(akarx11,akarX21)
MatrikJ(2,2)=NilaiTurunanf2x2(akarx11,akarX21)

S.Cells(baris,6)=akarx11
S.Cells(baris,7)=akarX21
S.Cells(baris,8)=NilaiFungsi1(akarx11,akarX21)
S.Cells(baris,9)=NilaiFungsi2(akarx11,akarX21)
nilaif1 =S.Cells(baris,8)
nilaif2=S.Cells(baris,9)

akarx10 = akarx11
akarx20 = akarX21
baris=baris + 1
If baris >= 10 Then S.AddCases (baris,1)
Loop Until (Abs(nilaif1) <=0.000001 And Abs(nilaif2) <=0.000001)
End Sub

‘ Fungsi- fungsi

Function NilaiFungsi1(x1 As Double, x2 As Double ) As Double
NilaiFungsi1 = x1^2 +x1*x2 -2*x1-1
End Function
Function NilaiFungsi2(x1 As Double, x2 As Double ) As Double
NilaiFungsi2 = x1^3 -x1+x2-2
End Function
Function NilaiTurunanf1x1(x1 As Double, x2 As Double ) As Double
NilaiTurunanf1x1 = 2*x1 + x2 -2
End Function
Function NilaiTurunanf1x2(x1 As Double, x2 As Double ) As Double
NilaiTurunanf1x2 = x1
End Function
Function NilaiTurunanf2x1(x1 As Double, x2 As Double ) As Double
NilaiTurunanf2x1 = 3*x1^2 -1
End Function
Function NilaiTurunanf2x2(x1 As Double, x2 As Double ) As Double
NilaiTurunanf2x2= 1
End Function

Tidak ada komentar: