کد فرترن سابروتین الگوریتم توماس
reymoh.blogfa.com|کد فرترن سابروتین الگوریتم توماس|کد فرترن روش توماس|کد فرترن حل ماتریس سه قطری توماس|کد فرترن سابروتین حل ماتریس سه قطری|کد فرترن ماتریس سه قطری|الگوریتم توماس به زبان فرترن|الگوریم توماس در فرترن|کد فرترن روش الگوریتم توماس|ماتریس سه قطری|روش الگوریتم توماس|کد فرترن روش روش الگوریتم توماس|ماتریس سه قطری توماس|محاسبات عددی|reymoh.blogfa.com
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
الگوریتم توماس برای حل دستگاه معادلات سه قطری استفاده می شود. دستگاه معادلات سه قطری را به روش های مختلف از جمله روش کرامر و روش حذفی گوس و ... میتوان حل کرد. اما سریع ترین روش روش برای دستگاه معادلات سه قطری، روش توماس است که مخصوص این نوع دستگاه معادله می باشد.
این کد به عنوان سابروتین استفاده خواهد شد و نمی توان از آن در بدنه اصلی کد استفاده کرد. برای فراخوانی این سابروتین در بدنه اصلی کد نیز از دستور زیر استفاده خواهد شد :
Call toomas(n,A,R,X)
مقادیر ورودی این سابروتین n و A و R هستند و خروجی آن بردار X می باشد. n یک عدد صحیح و نشان دهنده تعداد معادلات(تعداد درایه های ماتریس ضرایب n در n) و ماتریس A که ماتریس ضرایب می باشد یک ماتریس n در n است و بردار R، بردار معلوم (دست راست معادلات) که یک بردار با n درایه است. در نهایت خروجی X یک بردار با n درایه خواهد بود.
توجه شود این کد برای دقت معمولی ( Real(4) ) نوشته شده است. اگر در بدنه اصلی کد از دقت دوبرابر ( Real(8) ) استفاده می شود، باید عبارت Real در خط چهارم این کد به صورت دقت دوبرابر یعنی Real(8) نوشته شود.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Subroutine toomas(n,A,R,X)
Implicit None
INTEGER::n,i,j,k,l
Real::landa,A(n,n),R(n),X(n)
DO j = 1 , n-1
landa=-A(j+1,j)/A(j,j)
A(j+1,j)=0
A(j+1,j+1)=(A(j,j+1)*landa)+A(j+1,j+1)
R(j+1)=(landa*R(j))+R(j+1)
END DO
X(n)=R(n)/A(n,n)
DO k = n-1 , 1 , -1
X(k)=(R(k)-(A(k,k+1)*X(k+1)))/A(k,k)
END DO
END Subroutine