مجتبی کریمی
چهارشنبه 30 بهمن 1387, 02:33 صبح
حل n معادله n مجهولی
Public Function Solve() As Double()
Dim X(DimensionNumber), tmp(DimensionNumber) As Double
Dim isTrue As Boolean = False
Dim Omega As Double = 1
For i As Integer = 1 To DimensionNumber
X(i) = 0
tmp(i) = X(i)
Next
Do
Dim t1, t2 As Double
For i As Integer = 1 To DimensionNumber
tmp(i) = X(i)
Next
For i As Integer = 1 To DimensionNumber
t1 = 0
t2 = 0
For j As Integer = 1 To i - 1
t1 += Mat(i, j) * X(j)
Next
For j As Integer = i + 1 To DimensionNumber
t2 += Mat(i, j) * tmp(j)
Next
X(i) = (1 - Omega) * tmp(i) + Omega / Mat(i, i) * (b(i) - t1 - t2)
Next
isTrue = True
For i As Integer = 1 To DimensionNumber
If Math.Abs(tmp(i) - X(i)) > 10 ^ -_Accuracy Then
isTrue = False
End If
Next
Loop While isTrue = False
Return X
End Function
mat ماتریس دستگاه معادله است مثلا برای
2x1+3x2=5
3x1+x2=2ماتزیس mat به صورت
2 3 5
3 1 2
باید باشه.
omega یه عدد بین 0 و 2 هست و معمولا 1 (برای اطلاع بیشتر به سایت wikipedia.com رجوع کنید)
-_Accuracy میزان دقت. مثلا اگه دقت رو تا 5 رقم اعشار بخواهید -_Accuracy رو 5 قرار بدید.
DimensionNumber در واقع n هست یعنی تعداد معادلات (مجهولات)
Public Function Solve() As Double()
Dim X(DimensionNumber), tmp(DimensionNumber) As Double
Dim isTrue As Boolean = False
Dim Omega As Double = 1
For i As Integer = 1 To DimensionNumber
X(i) = 0
tmp(i) = X(i)
Next
Do
Dim t1, t2 As Double
For i As Integer = 1 To DimensionNumber
tmp(i) = X(i)
Next
For i As Integer = 1 To DimensionNumber
t1 = 0
t2 = 0
For j As Integer = 1 To i - 1
t1 += Mat(i, j) * X(j)
Next
For j As Integer = i + 1 To DimensionNumber
t2 += Mat(i, j) * tmp(j)
Next
X(i) = (1 - Omega) * tmp(i) + Omega / Mat(i, i) * (b(i) - t1 - t2)
Next
isTrue = True
For i As Integer = 1 To DimensionNumber
If Math.Abs(tmp(i) - X(i)) > 10 ^ -_Accuracy Then
isTrue = False
End If
Next
Loop While isTrue = False
Return X
End Function
mat ماتریس دستگاه معادله است مثلا برای
2x1+3x2=5
3x1+x2=2ماتزیس mat به صورت
2 3 5
3 1 2
باید باشه.
omega یه عدد بین 0 و 2 هست و معمولا 1 (برای اطلاع بیشتر به سایت wikipedia.com رجوع کنید)
-_Accuracy میزان دقت. مثلا اگه دقت رو تا 5 رقم اعشار بخواهید -_Accuracy رو 5 قرار بدید.
DimensionNumber در واقع n هست یعنی تعداد معادلات (مجهولات)