PDA

View Full Version : مقاله: کار با ماتریس



مجتبی کریمی
چهارشنبه 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 هست یعنی تعداد معادلات (مجهولات)

zarrin_306
چهارشنبه 30 بهمن 1387, 11:51 صبح
سلام
ممکنه توضیح بیشتر داده شود
مشخص نیست ارور دارد یا چیز دیگری؟

مجتبی کریمی
چهارشنبه 30 بهمن 1387, 16:44 عصر
ممکنه توضیح بیشتر داده شود
مشخص نیست ارور دارد یا چیز دیگری؟
چند وقت بود دنبال یه همچین کدی برای حل چند معادله چند مجهول بودم تا این که این کد رو نوشتم.
گفتم شاید به درد کسی بخوره . به خاطر این گذاشتمش اینجا.